Eu descobri como fazer o que eu estava descrevendo, mas foi um pouco contra-intuitivo, então estou postando a resposta aqui para pessoas que podem acertar esta página ao pesquisar ( tl: dr; no fundo). Até onde eu sei, não existe uma maneira geral de filtrar os processos com um determinado PID do ftrace tão facilmente quanto dizer a ele para considerar apenas processos com um determinado PID, mas no meu caso , Eu só me importo com as chamadas brutas do sistema (sys_enter) e descobri como eliminar registros com determinados PIDs de serem incluídos para eles e é assim:
O diretório ftrace é:
/sys/kernel/debug/tracing/
Dentro, há um diretório chamado " events ." A partir daqui, você pode ver todas as coisas que o ftrace pode rastrear, mas, no meu caso, eu entro em " raw_syscalls ".
Dentro de raw_syscalls , "os dois subdiretórios são sys_enter e sys_exit .
Dentro de sys_enter (e sys_exit, para esse assunto), existem os seguintes arquivos:
enable
filter
format
id
trigger
" filtro " é o que mais nos interessa agora, mas o formato tem informações úteis sobre os campos de uma entrada produzidos pelo ftrace quando o sys_enter está ativado:
name: sys_enter
ID: 17
format:
field:unsigned short common_type; offset:0; size:2; signed:0;
field:unsigned char common_flags; offset:2; size:1; signed:0;
field:unsigned char common_preempt_count; offset:3; size:1; signed:0;
field:int common_pid; offset:4; size:4; signed:1;
field:long id; offset:8; size:8; signed:1;
field:unsigned long args[6]; offset:16; size:48; signed:0;
Aqui, nos preocupamos com common_pid .
Se você quiser que seu rastreio omita registros de um processo com PID n , edite
/sys/kernel/debug/tracing/events/raw_syscalls/sys_enter/filter
Para ler:
common_pid != n
Se o programa que você está tentando ignorar enquanto rastreia tem vários segmentos ou vários processos, basta usar o & & operador. Digamos que você queira omitir processos com PIDs n , o e p , você editaria o arquivo para que ele leia:
common_pid != n && common_pid != o && common_pid != p
Para limpar um filtro, basta escrever " 0 " no arquivo:
echo "0" > / sys / kernel / debug / tracing / eventos / raw_syscalls / sys_enter / filter
... faria o truque.
enable deve conter " 1 " para o evento que você está rastreando, bem como tracing_on no diretório ftrace. Escrever em 0 transforma o rastreio desse evento (ou todo o rastreio no caso de tracing_on ) desativado.
Escrever para esses arquivos requer permissões de root.
Isso é tudo o que posso pensar. Obrigado a todos que leram / votaram sobre isso e espero que minha resposta ajude alguém. Se alguém souber de uma maneira que faça o que eu fiz parecer estúpido, sinta-se à vontade para me chamar.
tl; dr: para filtrar registros do processo 48, escreva:
common_pid != 48
... para
/sys/kernel/debug/tracing/events/raw_syscalls/sys_enter/filter
Filtre vários PIDs (por exemplo, 48, 49, 53, 58) escrevendo:
common_pid != 48 && common_pid != 49 && common_pid != 53 && common_pid !=58
Substitua "events / raw_syscalls / sys_enter" pelo seu evento desejado e substitua meus números por quaisquer PIDs que você queira ignorar.