Por que o tempo / uso da CPU não está aparecendo nas informações do processo?

4

Quando invoco top , as colunas %CPU e TIME+ parecem estar congeladas e nunca são atualizadas. Em vez disso, as primeiras linhas da lista de processos são sempre assim:

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
    1 root      20   0   49364   9168   5720 S   0,0  0,1   0:00.07 systemd
    2 root      20   0       0      0      0 S   0,0  0,0   0:00.00 kthreadd
    3 root      20   0       0      0      0 S   0,0  0,0   0:00.00 ksoftirqd/0
    4 root      20   0       0      0      0 S   0,0  0,0   0:00.00 kworker/0:0
    5 root       0 -20       0      0      0 S   0,0  0,0   0:00.00 kworker/0:0H
    6 root      20   0       0      0      0 S   0,0  0,0   0:00.00 kworker/u24:0
    7 root      20   0       0      0      0 S   0,0  0,0   0:00.00 rcu_sched
    8 root      20   0       0      0      0 S   0,0  0,0   0:00.00 rcu_bh
    9 root      20   0       0      0      0 S   0,0  0,0   0:00.00 rcuos/0

Em particular, todos os processos mostram CPU de 0,0% e 0: 00.00 TIME +, exceto o primeiro processo ( systemd ), que sempre mostra o mesmo valor inalterável de 0: 00.07 TIME + , mesmo depois de um reinício . A linha de resumo no topo sobre o uso da CPU parece estar sendo atualizada normalmente.

Eu tentei pesquisar /proc/(pid)/stat e, se eu entendi o conteúdo corretamente, verifiquei que essa é realmente a informação armazenada lá. Por exemplo, se 5814 for o PID de um processo de longa execução, eu iniciei:

$ cat /proc/1/stat | cut -f15 -d" "
7
$ cat /proc/5814/stat | cut -f15 -d" "
0

Estou usando o Korora (Fedora) 23 com todas as atualizações mais recentes, executando a versão 4.7.6 do kernel.

O que poderia estar causando esse comportamento ou como eu poderia depurar isso?

    
por Amaroid 12.10.2016 / 14:19

1 resposta

0

top (1) exibe os processos em execução ordenados primeiro pelo uso da CPU e, em seguida, preenche a tabela com processos de suspensão classificados por PID.

systemd (8) é uma variante do init (8) e provavelmente não fará muito depois do boot. Os 70 ms de uso da CPU são provavelmente de quando você estava inicializando. Quando o sistema está ativo e em execução, o processo de inicialização (PID = 1) não tem muito outro propósito além de permanecer vivo.

Meu systemd (8) usou a CPU para 2: 25.72 em 125 dias e 12 horas, então está se atualizando bem devagar.

O resto dos processos nessa lista são coisas do Linux, você notará que eles nem usam memória alguma.

    
por 12.10.2016 / 18:45