Мониторинг счетчиков производительности при выполнении определенной функции - PullRequest
0 голосов
/ 25 февраля 2019

Для некоторого контекста я профилирую выполнение Memcached и хотел бы отслеживать пропуски dTLB во время выполнения конкретной функции.Предполагая, что Memcached порождает несколько потоков, каждый поток потенциально может выполнять функцию параллельно.Одно конкретное решение, которое я обнаружил, в Perf есть события переключения ( Использование perf probe для отслеживания статистики производительности во время конкретной функции ), должно позволить мне добиться этого, установив датчики на входе и выходе функции и переключая счетчик событий на /на каждом датчике соответственно.

Мой вопрос:

(a) Насколько я понимаю, события перфорации включались как часть ветки в ядре Linux 3.x.Было ли это включено в последние версии LTS ядра Linux 4.x?Если нет, есть ли другие альтернативы?

(b) Другой найденный мной обходной путь описан здесь: мониторинг производительности для подмножества выполнения процесса .Однако я не слишком уверен, будет ли это работать правильно для рассматриваемой проблемы.Я обеспокоен тем, что Memcached является многопоточным, и каждый новый поток порождает новый дочерний процесс, который может вызвать слишком много накладных расходов.

Есть предложения?

1 Ответ

0 голосов
/ 01 марта 2019

Я мог найти реализацию функции событий переключения только в репозитории / perf / core_toggle , который поддерживается разработчиком этой функции.Вы, вероятно, можете скомпилировать этот код и поиграть с этой функцией самостоятельно.Вы можете найти примеры использования здесь .Однако я не думаю, что он был принят в основном репозитории Linux для любой версии ядра.

Если вы хотите измерить количество одного или нескольких событий, то есть альтернативы, которые легкоиспользовать, но требуется добавить несколько строк кода в вашу кодовую базу.Вы можете программно использовать интерфейс интерфейса или другие сторонние инструменты, которые предлагают такие API, такие как PAPI и LIKWID .

...