Por que strace e / proc / pid / stat mostram um processo sem tempo de CPU, apesar do processo estar funcionando?

1

Tenha um processo de longa duração (alguns meses) que esteja lidando com um grande número de conexões e fazendo trabalho, mas a maioria das estatísticas mostra que ele não está funcionando. Aqui está uma saída strace, mostrando um monte de syscalls, ainda 0 tempo de CPU:

% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
  0.00    0.000000           0     66376           write
  0.00    0.000000           0     27579           close
  0.00    0.000000           0        77           stat
  0.00    0.000000           0        46           socket
  0.00    0.000000           0        46           connect
  0.00    0.000000           0     21360       347 accept
  0.00    0.000000           0    140039           sendto
  0.00    0.000000           0    169718     21567 recvfrom
  0.00    0.000000           0     21013           getsockname
  0.00    0.000000           0     21013           getpeername
  0.00    0.000000           0     42026           setsockopt
  0.00    0.000000           0        46           getsockopt
  0.00    0.000000           0     63177           fcntl
  0.00    0.000000           0     68858           gettimeofday
  0.00    0.000000           0      1861           clock_gettime
  0.00    0.000000           0       620           epoll_wait
  0.00    0.000000           0     96667           epoll_ctl
------ ----------- ----------- --------- --------- ----------------
100.00    0.000000                740522     21914 total

Os campos utime e stime para este processo são diferentes de zero, mas estão completamente estáticos e não estão perto de nenhum limite de estouro de reconhecimento que eu reconheça:

$ awk '{print "utime:" $14, "ctime:" $15}' /proc/128618/stat
utime:78891786 ctime:403631467

O que é bizarro é que vejo exatamente este mesmo sintoma em várias outras caixas, com esse mesmo processo. Todos eles estão rodando no kernel 3.13.0. Este processo é single-threaded e não faz nada extravagante (pgbouncer).

Por que um processo pode continuar a funcionar sem que nenhuma dessas estatísticas reflita esse trabalho?

    
por alienth 15.11.2018 / 11:25

0 respostas