Perf-запись Linux: разница между количеством (-c) и частотой (-F) - PullRequest
0 голосов
/ 23 ноября 2018

Я пытаюсь понять, что на самом деле делают опции -c и -F perf record , но я не могу объяснить, что я вижу.Я запускаю эти команды:

perf record -a -F <frequency> sleep 1

и

perf record -a -c <count> sleep 1

, пробуя различные значения частота и count .Я получаю следующие результаты: следующие

В первой таблице я установил частоту, а во второй - счет.Как частота и количество влияют на количество событий?Я думал, что количество событий не зависит от частоты и количества, но, очевидно, это не так.Что на самом деле делает перф?

1 Ответ

0 голосов
/ 24 ноября 2018

Count и frequency - это два основных переключателя, которые настраивают частоту дискретизации при использовании perf record (который выполняет внутреннюю выборку).

Счет

Когда вы запускаете perf record -c <number>, вы указываете период выборки (где «число» - период выборки).То есть для каждого «числового» вхождения события будет записана выборка.Образец будет записан, когда счетчик производительности, который отслеживает количество событий, был переполнен.

Я предполагаю, что вы получаете количество событий с помощью perf report.Обратите внимание, что perf report никогда не сообщит фактическое количество событий, а только приблизительное.Количество событий будет меняться по мере того, как вы продолжаете настраивать период выборки.perf report будет считывать только файл perf.data, который генерирует perf record, и исходя из размера сгенерированного файла, он делает предположение о количестве записанных выборок (зная размер выборки, записанной в памяти).Фактическое число записанных событий получается как -

Number of events = Fixed Sample Period * Number of samples collected

, где период фиксированной выборки соответствует тому, что вы указали с perf record -c.

Частота

Это другой способ выразить период выборки, то есть указать среднюю частоту выборок в секунду (частоту), что вы можете сделать с помощью perf-записи -F.Таким образом, perf record -F 1000 будет записывать около 1000 выборок в секунду, и эти выборки будут генерироваться при переполнении счетчика оборудования / PMU, соответствующего событию.Это означает, что ядро ​​будет динамически корректировать период выборки, чтобы убедиться, что процесс sampling соответствует частоте выборки.

Это , как динамически обновляется период выборки.

Чем выше частота выборки, тем больше количество собранных выборок (почти пропорционально).

Изменение периода выборки можно увидеть, выполнив команду -

sudo perf report -D -i perf.data | fgrep RECORD_SAMPLE

Всякий раз, когда период выборки продолжает изменяться, общее число событий будет увеличиватьсяс изменением периода выборки.И когда период выборки остается фиксированным, общее количество событий остается фиксированным и получается по формуле, показанной выше.Общее количество событий будет приблизительным в обоих случаях.

...