Как зафиксировать все сгенерированные события с помощью ftrace без потерь

В настоящее время я провожу некоторые эксперименты, и мне нужно записать все события, которые генерируются во время выполнения обычного цикла выполнения stress-ng, такого как этот /usr/bin/stress-ng -c 80 -t 30 --times --exec 50 --exec-ops 50, особенно те, которые связаны с exec (sched:sched_process_exec и syscalls:sys_enter_execve).
К сожалению, когда анализируя файл трассировки, я получаю некоторые процессы, которые не генерировали никаких sys_execve, но были захвачены sched_process_exec, что для меня не имеет смысла.
Это произошло, несмотря на то, что никакие события не были потеряны (в файле трассировки записи в буфер/запись совпадают, а trace-cmd не предупреждает о потере событий).
В этой ситуации я не могу понять, почему это происходит, и единственное объяснение, которое я могу дать, это то, что эти события не записываются. . Будем признательны за любую помощь.
Вот пример файла трассировки, который я получаю

Чтобы быть ясным в том, что я говорю, эти строки должны быть нормой:

stress-ng-1748  [001] .... 19573.548553: sys_execve(filename: 7ffe7a791720, argv: 7ffe7a791700, envp: 7ffe7a7916f8)
stress-ng-1748  [001] .... 19573.548707: sched_process_exec: filename=/usr/bin/stress-ng pid=1748 old_pid=1748

Процесс, сгенерировавший как событие sys_execve, так и событие sched_process_exec.

Тогда как этот:

stress-ng-1780  [005] .... 19573.598398: sched_process_exec: filename=/usr/bin/stress-ng pid=1780 old_pid=1780

который является последним файлом в ссылке, является примером процесса без связанного события sys_execve.

Дополнительный вопрос: мне также нужно было бы записать эквивалентное событие fork (а именно syscalls:sys_enter_fork) со стрессовым выполнением с fork-ops (или чем-то эквивалентным), но я не смог этого сделать ни из trace-cmd, ни вручную из Ftrace. Я читал в Интернете, что есть некоторые особые случаи при работе с процессами разветвления, но не мог понять, что делать, чтобы записать это событие в частности.
Любая помощь по этому вопросу также будет оценена.


person Voxeldoodle    schedule 17.06.2020    source источник
comment
пожалуйста, добавьте что-нибудь из файла из ссылки в ответ   -  person Jan Černý    schedule 17.06.2020
comment
@JanČerný сейчас лучше?   -  person Voxeldoodle    schedule 17.06.2020
comment
определенно! Спасибо за редактирование   -  person Jan Černý    schedule 17.06.2020


Ответы (1)


Я решил эту проблему, зафиксировав событие syscalls:sys_enter_execve. Между ними двумя я смог вызвать каждый экземпляр exec.

person Voxeldoodle    schedule 20.06.2020