Obtém o tempo do usuário e do kernel de um processo em execução?

5

Existe uma maneira de determinar, usando ferramentas padrão do Linux / Unix, quanto tempo um processo gastou no modo Usuário e quanto esperar pelo kernel?

Em outras palavras, exatamente os valores "user" e "sys" obtidos ao usar time , mas durante o tempo de execução do processo?

NOTA: uma maneira é usar o WBEM e enumerar o Linux_UnixProcess, mas eu preciso usar a ferramenta outro do que isso; meu objetivo é verificar o que o provedor WBEM me diz, ou seja, eu preciso usar uma ferramenta diferente.

    
por Alois Mahdal 26.05.2014 / 15:50

1 resposta

10

No Linux, a informação está disponível nos campos 14 a 17 de /proc/$pid/stat (veja proc (5) para detalhes):

Os campos são:

  • 14: tempo do usuário (em número de pulsos de clock)
  • 15: hora do sistema
  • 16: tempo de espera do usuário por crianças
  • 17: hora de sys de esperar por crianças

(todos os threads de um determinado processo possuem os mesmos valores)

Eles não são relatados diretamente por ps .

ps relatórios 14 + 15 com ps -o time e 14 + 15 + 16 + 17 com ps --cumulative -o bsdtime .

Tenha em atenção que o segundo campo em /proc/$pid/stat pode conter espaços ou caracteres de nova linha, pelo que não é possível analisá-lo com $1 , $2 ... do awk

Você pode usar perl como:

$ perl -MPOSIX -l -0777 -ne '@f = /\(.*\)|\S+/gs;
    printf "utime: %.2f\nstime: %.2f\ncutime: %.2f\ncstime: %.2f\n",
      map {$_/POSIX::sysconf( &POSIX::_SC_CLK_TCK )}@f[13..16]' "/proc/$pid/stat"
utime: 3.79
stime: 2.06
cutime: 56.49
cstime: 34.27

Um processo pode recuperar seus próprios tempos com getrusage(RUSAGE_SELF) e getrusage(RUSAGE_CHILDREN) .

Há também uma chamada de sistema times que recupera as mesmas informações. Os cartuchos POSIX têm um times embutido para isso. Algumas shells também fornecem essa informação com time (sem argumentos).

$ times
0m3.800s 0m2.060s
0m56.512s 0m34.276s

$ ps -o time -p "$$"
    TIME
00:00:05
$ ps --cumulative -o bsdtime -p "$$"
  TIME
  1:36
    
por 26.05.2014 / 22:16

Tags