Прежде всего, помните, что выборка отличается от подсчета.
perf record
будет неизменно выполнять выборку всех событий, произошедших за время профилирования. Это означает, что он не будет учитывать все произошедшие события (конечно, это можно изменить!). Вы можете изменить частоту сбора образцов, чтобы увеличить количество собираемых образцов. Обычно это похоже на то, что для каждых 10 (или любого другого числа> 0) происходящих событий perf record
будет записывать только 1 из них.
perf stat
выполнит подсчет всех происходящих событий. Для каждого происходящего события perf stat
будет считать его и постарается не пропустить ни одного, в отличие от выборки. Конечно, количество подсчитанных событий может быть неточным, если задействовано мультиплексирование (т.е. когда количество измеренных событий превышает количество доступных аппаратных счетчиков). В perf stat
нет концепции настройки частот, поскольку все, что он делает, - это прямой подсчет всех событий, которые вы собираетесь измерять.
Это доказательство из исходного кода ядра Linux: -
Вы можете видеть, что он устанавливает период выборки (обратный частоте выборки) равным 0 - так что вы знаете, что такое частота выборки;)
В любом случае, вы можете подробно прочитать perf stat
с помощью perf stat -v
, чтобы увидеть и понять, что происходит со всеми событиями, которые вы измеряете.
Чтобы узнать больше о perf stat
, вы также можете прочитать этот ответ.
person
Arnabjyoti Kalita
schedule
05.11.2017