Помогите определить, что использует ЦП, когда список всех процессов в Мониторе активности не помогает

Проблема

После перезагрузки и с открытым только монитором активности мой MacBook Pro (10.6, i7) показывает очень высокий процент простоя (98% или выше), но вскоре после этого падает до 40–50%.

В мониторе активности список всех процессов :

  • ничто не объясняет это падение.

Пять вопросов

В чем причина падения процента простоя?

Запускает ли OS X что-то, чего нет в списке процессов в Activity Monitor?

Выключает ли он процессор или два?

Есть ли способ заставить его уделять мне все внимание процессора, даже если я его не использую?

Для того, что ниже, существуют ли более эффективные способы измерения того, какое общее влияние на систему оказывает приложение, поскольку процент загрузки процессора приложения не показывает всю вторичную активность, которую приложение вызывает в системе?

Фон

Я пытаюсь измерить производительность конкретного приложения, и одной из метрик, поскольку часть активности приложения выполняется внутри ядра в виде системных вызовов, является процент простоя ЦП.

Если OS X запускает что-то в фоновом режиме, чего я не вижу, или выключает процессоры, или замедляет их работу, то это, очевидно, влияет на мои измерения.

Почему бы вам не посмотреть загрузку запущенных процессов и не определить, что использует ваш процессор? Кроме того, почему бы вам не проверить это, в частности, для приложения?
@ Джерри Я полагаю, я не ясно дал понять в своем посте - я принимаю во внимание все использование ЦП всеми запущенными процессами, представленное монитором активности. Они не составляют в сумме около 10%, не говоря уже о 50-60%, которые предполагает время простоя CUP.
Должен спросить, у вас выбраны «Все процессы» в AM?
@KidPub Да, я просматриваю все процессы.
Использование /Library/Application Support/HWPrefs/CPUPalette.appи отключение двух ядер дает мне те же симптомы, поэтому я предполагаю, что OS X агрессивно дросселирует процессоры. Если вы знаете, как отключить дросселирование ЦП или управлять им, ознакомьтесь с apple.stackexchange.com/questions/41045/…

Ответы (2)

Тестирование, кажется, показывает, что виновником является технология Intel Turbo Boost , которая отключает процессорные ядра на лету, не сообщая ОС. Поскольку они не запускают процесс простоя ЦП, монитор активности не учитывает их, и кажется, что машина простаивает менее чем на 50%, когда в действительности она простаивает почти на 100%.

На данный момент не похоже, что это можно легко отключить или контролировать в OS X: как я могу отключить дросселирование ЦП и отключение ЦП?

Turbo Boost встроен во многие процессоры Core i7 и i5, а также в некоторые новейшие процессоры Core i3. Вам нужно будет проверить версию вашего процессора по списку процессоров Intel с поддержкой Turbo Boost , чтобы узнать, есть ли он у вас. Если у вас нет песчаного моста, у вас, вероятно, нет турбонаддува.

По умолчанию монитор активности показывает только процессы, запущенные под вашей учетной записью, а не системные задачи, а также задачи других пользователей машины.

введите описание изображения здесь

Выбор другого представления на панели инструментов должен помочь узнать, что занимает процессорное время на вашем Mac. Я настоятельно рекомендую получить Xcode из магазина приложений и использовать инструменты для расширенного профилирования и настройки. Это гораздо более эффективный инструмент для этой работы, если вы заметили что-то неладное с помощью Activity Monitor.

Я просматриваю все процессы. Он не показывает ничего, что потребляет процессорное время, указанное в простое %.
Вау! Есть интересный пограничный случай, когда любой процесс, который запускается после интервала выборки, но умирает до следующего интервала выборки, не будет захвачен Монитором активности. Вам понадобятся dtraceинструменты или инструменты, чтобы добраться до мертвых процессов. Обычно я стараюсь fs_usageнадеяться, что эти быстрые процессы обращаются к какому-то файлу, чтобы выяснить, какой нарушитель вызывает реальное, но фантомное в глазах монитора активности использование ЦП.