Поиск узких мест и оптимизация для настенного времени с перфом - PullRequest
6 голосов
/ 13 марта 2019

Процессорные выборки с perf record полезны для поиска кандидатов на оптимизацию, если загрузка ядра примерно постоянна. Но для кода, который имеет несколько фаз, отличающихся параллелизмом, подсчет циклов ЦП будет выделять сильно параллельные фазы, в то же время недооценивая фазы последовательной или ограниченной параллельности, которые влияют на время стены. Короче говоря, наивное использование перфорации может выделить неправильную часть закона Амдала

Таким образом, вопрос заключается в том, как заставить perf record / perf report найти кандидатов на оптимизацию для сокращения времени на стенке, которое может быть чем угодно - от самого горячего цикла в последовательно параллельном коде, от узко-параллельного узкого места до длинного одно- Фаза с резьбой.

Известные обходные пути, которые оставляют желать лучшего:

  • выполнение рабочей нагрузки на одном ядре, так что настенное время ≅ процессорных циклов
  • Профилирование отдельных компонентов отдельно

meta: это конкретное продолжение к более общему вопросу

...