Estou fazendo algo como:
sudo perf record -a -g -e context-switches -e sched:* -e cpu-clock -F 499 -p XXXX -t YYY
Isso registrará todos os pontos de rastreio do planejador, todos os comutadores de contexto.
-F
afeta apenas os eventos, certo?
Como relógio cpu para 499Hz. Também foi especificado com -a
, mas -p -t
também foi especificado.
-a
inútil? Dentro de perf script
, o comutador de contexto mostra apenas o rastreio de pilha, enquanto sched_switch mostra o rastreio de pilha e as informações de comutação (próxima tarefa a usar o cpu).
O que eu tenho notado é que depois de sched_switch, há sempre uma mudança de contexto, Agora eu estou supondo que o switch de contexto é o sched_switch.
Neste exemplo de agendamento:
command 7447/7447 [001] 62202.663269: 329 sched:sched_waking: comm=schedmon pid=498 prio=120 target_cpu=001
command 7447/7447 [001] 62202.663274: 335 sched:sched_wakeup: schedmon:498 [120] success=1 CPU:001
command 7447/7447 [001] 62202.702887: 43294327 sched:sched_stat_runtime: comm=command pid=7447 runtime=988313 [ns] vruntime=194195593780 [ns]
command 7447/7447 [003] 62203.127899: 1 sched:sched_migrate_task: comm=rcu_sched pid=8 prio=120 orig_cpu=1 dest_cpu=3
command 7447/7447 [001] 62203.265789: 21 sched:sched_switch: command:7447 [120] R ==> kworker/u8:2:5539 [120]
[120]
? o que é R
? Estou fazendo isso porque há um aumento significativo de tempo de um programa em execução no KVM.
Obrigado!
Tags performance perf perf-event