Мониторинг счетчиков производительности во время выполнения определенной функции

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

Мой вопрос:

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

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

Какие-либо предложения?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
5
0
110
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Если вы хотите измерить количество одного или нескольких событий, существуют альтернативы, которые просты в использовании, но требуют добавления нескольких строк кода в кодовую базу. Вы можете программно использовать безупречный интерфейс или другие сторонние инструменты, которые предлагают такие API, как ПАПИ и ЛИКВИД.

Да, perf_toggle_events больше не поддерживается в последних версиях ядра Linux. Мне удалось связаться с автором функции, и он подтвердил это. Сейчас я работаю над инструментированием своего кода с помощью системного вызова perf_event_open. Я опубликую обновление к этому сообщению, как только я заставлю его работать правильно.

shreyas42 05.03.2019 11:23

@ shreyas42 Shreyas42 Под прекращением вы подразумеваете, что в какой-то момент она поддерживалась, но позже эта функция была удалена? Функция переключения событий звучит очень полезно. Вы знаете, для каких версий ядра он поддерживается и почему его убрали?

Hadi Brais 05.03.2019 22:36

Итак, в своем письме Иржи Олса (автор toggle_events) упомянул, что работа над функциональностью переключения событий была прекращена и что сейчас никто этим не занимается. Я не совсем уверен, почему они так решили. На самом деле я клонировал репозиторий perf/core_toggle и собрал ядро ​​Linux. Если я правильно помню, это версия ядра Linux 3.12.x. Это было немного неприятно, много проблем, таких как неподдерживаемый gcc-5 и так далее. В конце концов, я решил не использовать его, учитывая, что на данный момент этому ядру около 6 лет.

shreyas42 06.03.2019 05:10

@ shreyas42 shreyas42 Но ветка perf/core_toggle никогда не объединялась с основным репозиторием ядра, верно? Кстати, если это отвечает на ваш вопрос, вы можете нажать на галочку под кнопками голосования.

Hadi Brais 06.03.2019 05:58

Да, я не думаю, что он был объединен с основным репозиторием ядра.

shreyas42 06.03.2019 06:29

Другие вопросы по теме