Как настроить привязку процессора в 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).
- Создайте это количество потоков.
- Установите каждый поток с отдельным тегом сходства.
- Начать все темы.
Потоки с политикой соответствия по умолчанию будут более свободно планироваться на любом процессоре. Эти потоки будут преимущественно перенесены для работы на свободном процессоре. Потоки с тегами сходства будут стремиться оставаться на своих местах.
Обратитесь к источнику за списками кода и информацией о совместном использовании тегов сходства между родительскими и дочерними процессами, получении конфигурации кэша ЦП и многом другом.
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), включая поддержку отмены и общих мьютексов.
Это похоже на объявление, мой iMac под управлением Lion выглядит уважающим это большую часть времени, но это не «закрепляет» процесс до ядра.
В любом случае я не смог найти API для управления сродством процесса к Дарвину.