perf_event_open: включая выполнение дочернего процесса в случае выборки - PullRequest
0 голосов
/ 14 мая 2018

Согласно справочным страницам , чтобы учитывать выполнение дочернего процесса при подсчете событий, можно установить бит inherit. inherit нельзя использовать при использовании PERF_FORMAT_GROUP. Итак, как можно включить выполнение дочернего процесса (например, выполнение команд оболочки в исходном коде C), чтобы его можно было подсчитать при выборке (PERF_FORMAT_GROUP) с использованием perf_event_open

если PERF_FORMAT_GROUP не указан, означает ли это, что для каждой записанной выборки каждая запись выборки будет содержать struct read_format, равную числу событий, или выборка будет записана для каждого отдельного события.

1 Ответ

0 голосов
/ 14 мая 2018

Если вам нужно , чтобы использовать PERF_FORMAT_GROUP, а это не работает со встроенным inherit, то вы должны сами следить за детьми. Вы можете сделать это с помощью ptrace, а затем настроить perf_event_open для всех дочерних задач. Затем вам также необходимо объединить образцы из всех дескрипторов файлов событий.

Edit: Без PERF_FORMAT_GROUP внутренняя запись сэмплирования выполняется не одновременно. Конечно, вы можете просто настроить подсчет событий (вместо выборка событий ) и одновременно читать их через равные промежутки времени из пространства пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...