Como obter o número atual de jiffies desde a reinicialização no Linux?

5

O /proc/PID/stat do Linux lista várias métricas que são medidas em jiffies. Existe uma maneira de obter o atual # de jiffies desde a reinicialização? Jiffies Eu também presumo ser segundos vezes o valor USER_HZ.

Posso obter isso somando os primeiros 4 argumentos na linha cpu em /proc/stat ?

UPDATE :

$ date +"%s.%N" && grep '^jiffies' timer_list
1262103103.162169230
jiffies: 1007865965
jiffies: 1007865965
jiffies: 1007865965
jiffies: 1007865965
$ date +"%s.%N" && grep '^jiffies' timer_list
1262103108.706475051
jiffies: 1007867351
jiffies: 1007867351
jiffies: 1007867351
jiffies: 1007867351

O delta entre estes é quase exatamente 250 jiffies / segundo. Aparece como se todas as linhas de jiffies por CPU fossem equivalentes (embora eu ache que elas talvez não sejam se uma CPU hotmand foi provisionada / substituída). Eu acho que isso me dá o melhor lugar para puxar um contador de comentários consistentes.

    
por Jé Queue 29.12.2009 / 05:08

3 respostas

4

Tecnicamente, a linguagem do computador é a duração de 1 tick da interrupção do temporizador do sistema. Não é absoluto embora. Para o Linux 2.6.13+ no Intel x86, o jiffy é de 4 ms, mas pode variar de 1 ms a 10 ms, dependendo da arquitetura e da versão do kernel.

Na página Sistemas de temporizadores do kernel :

Historically, the kernel used 100 as the value for HZ, yielding a jiffy interval of 10 ms. With 2.4, the HZ value for i386 was changed to 1000, yeilding a jiffy interval of 1 ms. Recently (2.6.13) the kernel changed HZ for i386 to 250. (1000 was deemed too high).

Lista /proc/timer_list e /proc/timer_stats .

Você pode ativar o timer_stats no momento da inicialização e depois catar esse arquivo para imprimir as estatísticas.

    
por 29.12.2009 / 10:20
2

Não, você só precisa da primeira linha. A primeira linha agrega todo o resto nas outras linhas de cpu.

Exemplo de saída:

[john@awesome]$cat /proc/stat
cpu  35024984 1771325 94153391 1810948613 2648063 352387 557232
cpu0 13955475 927654 59431476 895791946 1910028 318618 438048
cpu1 21069509 843671 34721915 915156667 738035 33769 119184
intr 1403502159 1138402452 597 0 3 3 0 5 0 1 0 0 0 12315 0 92119425 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 57676632 0 0 0 0 0 0 0 115290726 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ctxt 21043582666
btime 1252332786
processes 25663823
procs_running 1
procs_blocked 0

O que cada coluna significa (da esquerda para a direita):

  • usuário: processos normais em execução no modo de usuário
  • legal: processos agradáveis executados no modo de usuário
  • system: processa a execução no modo kernel
  • ocioso: tempo ocioso
  • iowait: aguardando a conclusão da E / S
  • irq: interrupções de serviço
  • softirq: serviço de softirqs

como você pode ver, a primeira coluna após a cpu (processos do modo de usuário) é igual aos 2 números abaixo dela adicionados.

    
por 29.12.2009 / 05:20
1

jiffies por segundo:

awk 'BEGIN {"cat /proc/timer_list | grep '\''^jiffies'\'' | awk '\''{print $2}'\''" | getline a; "cat /proc/uptime | awk '\''{print $1}'\''" | getline b ;printf "%.4f\n", a/b}'

Explicação: Ele divide os jiffies desde a inicialização encontrada em / proc / timer_list pelos segundos desde a inicialização encontrada em / proc / uptime

    
por 27.11.2010 / 14:47

Tags