Сейчас я провожу несколько экспериментов, и мне нужно записать все события, которые генерируются во время выполнения обычного цикла выполнения стресс-нг, подобного этому /usr/bin/stress-ng -c 80 -t 30 --times --exec 50 --exec-ops 50
, особенно те, которые связаны с exe c (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. Я читал в inte rnet, что есть некоторые особые случаи при работе с процессами разветвления, но не мог понять, что делать, чтобы записать это событие, в частности.
Любая помощь по этому вопросу будет принята с благодарностью тоже.