Что делает perf Record -P?

Я попробовал команду perf record, а затем perf record -P, которая должна позволить мне указать период выборки, но она не работает. Результат perf record -P такой же, как и у perf record.

Так что же на самом деле делает perf record -P?


person AN00    schedule 02.08.2016    source источник


Ответы (3)


@Алина,

Если вы прочитаете справочную страницу для записи производительности, вы увидите, что perf record -P будет использоваться для записи периода выборки, а не указывать его.

Если вы хотите записать больше/меньше семплов и изменить период, вы должны указать команду, например perf record -c 2 (--count=), где 2 — период выборки. Это будет означать, что для каждых 2 событий, которые вы измеряете, у вас будет выборка для этого. Затем вы можете изменить период выборки и протестировать различные значения.

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

person Arnabjyoti Kalita    schedule 22.05.2017
comment
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
comment
Привет @osgx, я имел в виду только -c , а не -C , который, как вы сказали, предназначен для процессора. - person Arnabjyoti Kalita; 23.05.2017

Период дискретизации можно указать с помощью опции -c, хотя есть также опция -F для указания частоты дискретизации. По умолчанию установлено значение 1000 отсчетов в секунду или 1000 Гц в соответствии с вики по производительности:

Период и курс

Интерфейс perf_events позволяет использовать два режима для выражения периода выборки:

  • количество повторений события (период)
  • средняя скорость выборки/сек (частота)

Инструмент производительности по умолчанию использует среднюю скорость. Он установлен на 1000 Гц или 1000 выборок в секунду. Это означает, что ядро ​​динамически регулирует период выборки для достижения целевой средней скорости. Корректировка за период указывается в необработанных данных профиля. Напротив, в другом режиме период выборки устанавливается пользователем и не меняется между выборками. В настоящее время нет поддержки рандомизации периода выборки.

Что касается того, что делает параметр -P, то сообщение о коммите для perf (и связанное с ним патч ядра) содержит некоторую предысторию. Если я правильно интерпретирую, опция означает, что по соображениям эффективности многие одинаковые выборки могут быть объединены в одно событие, которое также содержит период выборки. Первоначальная цель состояла в том, чтобы уменьшить количество сгенерированных выборок, чтобы избежать достижения «предела скорости», который может привести к потере выборок.

person Lekensteyn    schedule 09.10.2016

Со страницы руководства для perf record:

-P, --period

Запишите период выборки.

Документация perf классически короткая и не говорит ничего важного. Конечно, это не позволяет вам добавить аргумент. Чтение кода не дает лучшего представления о том, для чего может быть эта опция.

person Jakuje    schedule 02.08.2016
comment
Да, я понимаю, что он записывает период выборки, но что это за период выборки? Как долго это? И если возможно, как его изменить? - person AN00; 02.08.2016