Лучший счетчик событий для измерения времени на настенных часах с использованием инструментов Perf - PullRequest
1 голос
/ 12 февраля 2020

Простой, но все же сложный вопрос:

Какой счетчик использовать для получения инструментов для измерения времени на настенных часах?

Как базовая строка, первое, что нужно при профилировании кода, я думаю, что мне нужно измерить это просто время настенных часов, чтобы получить первое представление о том, где код занимает большую часть времени. Мне все равно, ограничен ли ввод-вывод, ограничена ли пропускная способность, или что-то еще, я просто хочу знать, где он медленный.

Звучит простое требование, но со всеми многими хитростями, которые современные ЦП делают для эффективной работы (например, масштабирование частоты и т. Д. 1013 *.) И чертовски много разных (не очень хорошо документированных) счетчиков производительности, доступных в perf, непросто быть уверенным в правильности измерения.

В настоящее время я делаю:

perf record -g -e ref-cycles -F 999 -- <cmd>

Я думаю, что это немасштабированная частота процессора и, следовательно, пропорциональна количеству времени настенных часов, которое составляет часть код работает. Но кто, черт возьми, знает?

1 Ответ

2 голосов
/ 12 февраля 2020

Вы можете использовать task-clock.

Это явно время настенных часов, когда процесс запущен и, в качестве бонуса, переносимо, потому что оно не зависит от какого-либо события PMU.

...