Як встановити спорідненість процесора у Snow Leopard на MacBook Pro? Я знаю, в Windows ви можете просто переключити його в диспетчері завдань.
Як встановити спорідненість процесора у Snow Leopard на MacBook Pro? Я знаю, в Windows ви можете просто переключити його в диспетчері завдань.
Відповіді:
OS X підтримує API спорідненості з потоком з версії 10.5. Ось релевантний матеріал із веб-сторінки, на яку я пов’язаний.
Набір спорідненості - це набір потоків, які діляться ресурсами пам’яті та бажають поділитися кешем L2. Розрізнені набори афінності представляють окремі спорідненості, тобто нитки, що належать до іншого набору, повинні використовувати окремий кеш L2 і, отже, працювати на різних логічних процесорах.
Набір спорідненості ідентифікується "тегом". Нитки присвоюються певному набору афінності, присвоюючи йому тег, що ідентифікує цей набір. Нитка може належати щонайменше одному набору афінності; тобто він має один тег спорідненості.
Наприклад, програма, яка хоче запустити 2 потоки в окремих кешах L2, встановила б потоки з різними тегами спорідненості. На двоядерній машині ця спорідненість буде ефективно ігноруватися. Однак на 4-ядерному MacPro планувальник буде намагатися запускати потоки на окремих пакетах. Аналогічно, у 8-ядерному MacPro планувальник намагатиметься запустити ці потоки на окремих плашках (які можуть бути, а можуть і не знаходитися в одному фізичному пакеті процесора).
Додаток, який хоче розмістити потік на кожному доступному процесорі, зробить наступне:
- Отримайте кількість процесорів у системі за допомогою sysctl (3).
- Створіть цю кількість ниток.
- Встановіть кожну нитку з чітким тегом спорідненості.
- Почніть всі нитки.
Нитки з політикою спорідненості за замовчуванням плануються вільніше на будь-якому процесорі. Ці потоки будуть переважно перенесені для запуску в режимі очікування. Нитки з тегами спорідненості, як правило, залишаться на місці.
Зверніться до джерела щодо списків кодів та інформації про спільне використання тегів спорідненості між батьківськими та дочірніми процесами, отримання конфігурації кешу CPU тощо.
http://developer.apple.com/mac/library/releasenotes/Performance/RN-AffinityAPI/
Mac OS X не експортує інтерфейси, що ідентифікують процесори чи розміщення керуючих потоків - явний потік до прив’язки процесора не підтримується . Натомість ядро управляє всім розміщенням потоку. Програми очікують, що планувальник за більшості обставин запустить свої потоки, використовуючи хороше розміщення процесора щодо спорідненості з кешем.
Від http://images.apple.com/macosx/docs/OSX_for_UNIX_Users_TB_July2011.pdf
• Ефективні нитки ядра. Кожен потік POSIX розміщується в черзі на певному процесорі, покращуючи спорідненість процесора та масштабованість, зменшуючи при цьому блокування. Нитки відповідають POSIX (1c), включаючи підтримку скасування та спільні мютекси.
Мені це здається рекламою, мій LM, який працює під управлінням iMac, виглядає, що більшу частину часу поважає, але це не "прив'язує до ядра".
Я не міг знайти жодного API, який би контролював спорідненість процесу до Дарвіна.