Подтвердить что ты не робот

Запись значений счетчиков монитора производительности (событий PM) на OS X без инструментов

В Xcode Instruments есть инструмент под названием Counters, который предоставляет информацию о низкоуровневом счетчике, предоставляемую ЦП, например количество выполненных команд или число промахов в кеше:

screenshot of Counters tool in Instruments

Это похоже на Linux syscall perf_event_open, представленный в Linux 2.6.32. В Linux я могу использовать perf_event_open, затем запустить/остановить профилирование вокруг раздела моего кода, который меня интересует. Я хотел бы записать тот же тип статистики в OS X: подсчет инструкций (и т.д.), Что определенный фрагмент кода и получение результата в автоматическом режиме. (Я не хочу использовать графический интерфейс инструментов для анализа данных.)

Существуют ли какие-либо API-интерфейсы, которые позволяют это (например: использование dtrace или аналогичного)? Из некоторых поисков это звучит так, как будто у частного AppleProfileFamily.framework могут быть необходимые перехватчики, но неясно, как можно связать или использовать его.

4b9b3361

Ответ 1

В GNU/Linux я использую Intel PCM для мониторинга использования ЦП. Я не уверен, что это хорошо работает на OSX, но насколько я знаю, исходный код включает в себя каталог MacMSRDriver. У меня нет никакого устройства OSX, никогда не проверяйте его.

Если этот источник скомпилирован на вашем устройстве, просто запустите:

pcm.x -r -- your_program your_program_parameter

или если вы хотите расширенное профилирование, используйте pcm-core.x вместо этого, или вы можете создать собственный код на основе pcm-core.cpp