Установка скорости для профилирования выборки с помощью «perf record» - PullRequest
4 голосов
/ 24 мая 2011

Насколько я понимаю, подсистема Performance Counters для Linux использует команду perf record для выполнения выборочного профилирования счетчиков ЦП и аппаратного обеспечения (таких как пропуски кэша).

  1. Как определить частоту дискретизации для perf record?На странице справочника я ближе всего вижу загадочную опцию "- c, --count = Период события для выборки" , но неясно, относится ли это к периоду длительности или обратному-процесс-период (и, если последний, какие единицы он ожидает).

  2. Какова «хорошая» частота дискретизации для выборки для приложения на мобильном устройстве Android?Какая ставка слишком низкая, чтобы быть полезной, а какая слишком высокая?

1 Ответ

4 голосов
/ 24 мая 2011

Сначала вам нужно получить список событий с perf list. У меня нет опыта работы с android, поэтому, если вы можете, пожалуйста, покажите наиболее интересную часть этого списка.

1) -c - количество событий между выборками. (выполняется выборка только по одному событию, 1 - выборка всего, а 100 000 - выборка каждого 100-тысячного события) Например. если есть событие для такта процессора (что-то вроде TSC), то count - это количество тактов, и я рекомендую установить выборку не чаще, чем на 1 миллисекунду. Для подсчета тиков используйте формулу: CPU_Freq_in_MHz * 1000. Это количество событий для выборки каждую миллисекунду, например, для процессора 800 МГц и тикового события используйте -c 800000.

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

2) Хорошая скорость отличается для разных PMU, которые выбираются с помощью опции "-e" или "--event =". Если событие редкое, не более 1000 в секунду, вы можете попробовать даже каждое событие. Если событие похоже на промах кэша, вам следует попробовать несколько вариантов, потому что хорошее значение зависит от образца кода. Слишком низкая частота выборки приведет к небольшому количеству выборок, и результаты будут ненадежными и шумными. Но при слишком высокой скорости результаты будут также зашумлены, потому что каждый PMU может повлиять на отслеживаемую программу. Я рекомендую вам использовать в среднем не более 1000 событий в секунду.

...