perf compreensão context-switches, sched: * e cpu-clock

0

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.

  • O -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.

  • Isso tornaria -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).

  • Como os eventos de mudança de contexto e programação estão relacionados?

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]
  • Qual é a unidade de 62202.663269?
  • Qual é o período (número após 62202.663269)?
  • No evento sched_waking, comm = é o waker?
  • No evento sched_switch, o que é [120] ? o que é R ?
  • Notei que existem sched: sched_stat_runtime e, em seguida, sched: sched_waking para o mesmo encadeamento. Por que é isso? Estou perdendo um horário de sono aqui?
  • O que procurar por um sono de thread?
  • O que procurar por um bloqueador de threads? Por exemplo, na variável de condição wait ou io, ou swap, etc.
  • Como o sched: sched_stat_runtime está sendo relatado? pelo que parece, ele relatou quando o thread consumiu certo vruntime.

Estou fazendo isso porque há um aumento significativo de tempo de um programa em execução no KVM.

Obrigado!

    
por Prinz Rainer Buyo 01.11.2018 / 04:34

0 respostas