Я попробовал команду perf record, а затем perf record -P, которая должна позволить мне указать период выборки, но она не работает. Результат perf record -P такой же, как и у perf record.
Так что же на самом деле делает perf record -P?
Я попробовал команду perf record, а затем perf record -P, которая должна позволить мне указать период выборки, но она не работает. Результат perf record -P такой же, как и у perf record.
Так что же на самом деле делает perf record -P?
@Алина,
Если вы прочитаете справочную страницу для записи производительности, вы увидите, что perf record -P
будет использоваться для записи периода выборки, а не указывать его.
Если вы хотите записать больше/меньше семплов и изменить период, вы должны указать команду, например perf record -c 2
(--count=
), где 2 — период выборки. Это будет означать, что для каждых 2 событий, которые вы измеряете, у вас будет выборка для этого. Затем вы можете изменить период выборки и протестировать различные значения.
Обратным способом выражения периода выборки является указание средней скорости выборки в секунду (частота), что вы можете сделать с помощью perf record -F
. Таким образом, perf record -F 1000
будет записывать около 1000 выборок в секунду, и эти выборки будут генерироваться при переполнении аппаратного/PMU-счетчика, соответствующего событию. Это означает, что ядро будет динамически регулировать период выборки.
perf record -C
не период выборки, это --cpu
выбор процессора для профиля: man7.org/linux/man-pages/man1/perf-record.1.html -C, --cpu
Собирайте образцы только по предоставленному списку процессоров. Несколько процессоров можно указать в виде списка, разделенного запятыми, без пробела: 0,1
. Вероятно, вы имеете в виду -c
(маленькая с) - -c, --count=
Период события для выборки. с большими числами, такими как 1000, 10000 или 100000. Также есть -F
для частоты, но только -c
задает точное значение выборки периода, и -F
настроит фактическое количество переполнений событий, чтобы генерировать частоту.
- person osgx; 23.05.2017
Период дискретизации можно указать с помощью опции -c
, хотя есть также опция -F
для указания частоты дискретизации. По умолчанию установлено значение 1000 отсчетов в секунду или 1000 Гц в соответствии с вики по производительности:
Период и курс
Интерфейс perf_events позволяет использовать два режима для выражения периода выборки:
- количество повторений события (период)
- средняя скорость выборки/сек (частота)
Инструмент производительности по умолчанию использует среднюю скорость. Он установлен на 1000 Гц или 1000 выборок в секунду. Это означает, что ядро динамически регулирует период выборки для достижения целевой средней скорости. Корректировка за период указывается в необработанных данных профиля. Напротив, в другом режиме период выборки устанавливается пользователем и не меняется между выборками. В настоящее время нет поддержки рандомизации периода выборки.
Что касается того, что делает параметр -P
, то сообщение о коммите для perf (и связанное с ним патч ядра) содержит некоторую предысторию. Если я правильно интерпретирую, опция означает, что по соображениям эффективности многие одинаковые выборки могут быть объединены в одно событие, которое также содержит период выборки. Первоначальная цель состояла в том, чтобы уменьшить количество сгенерированных выборок, чтобы избежать достижения «предела скорости», который может привести к потере выборок.
Со страницы руководства для perf record
:
-P
,--period
Запишите период выборки.
Документация perf
классически короткая и не говорит ничего важного. Конечно, это не позволяет вам добавить аргумент. Чтение кода не дает лучшего представления о том, для чего может быть эта опция.