ps mostra que processos de migração / * consomem muita CPU, mas top mantém silêncio sobre eles

1

aqui é o resultado do comando ps, mostrado apenas as primeiras 10 linhas

ps aufx | head
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         2  0.0  0.0      0     0 ?        S    May08   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    May08   0:04  \_ [ksoftirqd/0]
**root         6 98.5  0.0      0     0 ?        S    May08 6841:08  \_ [migration/0]**
**root         7 99.9  0.0      0     0 ?        S    May08 6933:53  \_ [migration/1]**
root         9  0.0  0.0      0     0 ?        S    May08   0:04  \_ [ksoftirqd/1]
**root        11 95.3  0.0      0     0 ?        S    May08 6618:59  \_ [migration/2]**
root        12  0.0  0.0      0     0 ?        S    May08   0:00  \_ [kworker/2:0]
root        13  0.0  0.0      0     0 ?        S    May08   0:14  \_ [ksoftirqd/2]
**root        14 94.6  0.0      0     0 ?        S    May08 6569:27  \_ [migration/3]**

mas o comando top não mostra nada de especial sobre processos / threads de migração.

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 5377 root      13  -7 64304  45m  11m S    2  1.5 169:28.81 Xorg
 7368 user2    16  -4  457m  98m  34m S    2  3.3  95:06.16 application
 5555 root      10 -10 64212  20m 2820 S    1  0.7  97:04.17 application
 7400 user  16  -4  416m  96m  30m S    1  3.2  93:15.77 application
 7903 user1    16  -4  402m  90m  32m S    1  3.0  59:56.47 application
 7396 user  16  -4  433m  98m  30m S    1  3.3  93:20.15 application
 7401 user  16  -4  417m  98m  30m S    1  3.3  93:05.87 application
 7403 user     16  -4  416m  96m  30m S    1  3.2  93:01.16 application
  500 root      20   0     0    0    0 S    0  0.0   0:46.80 jbd2/sda3-8
 1017 root      20   0  4536  696  476 S    0  0.0  17:38.05 cgrulesengd
 6703 user      12  -8 55240  17m  16m S    0  0.6   3:27.26 application
 7269 root      18  -2 10652 4892 2388 S    0  0.2   6:46.83 python2.5
...

OS: debian squeeze
kernel: 2.6.32

    
por OJ278 13.05.2012 / 19:21

2 respostas

1

edit: Eu acho provável que o OP não estivesse no modo threads no topo, e essa foi a razão para a diferença nas listagens entre top e ps aufx | head . Por exemplo, vejo os encadeamentos de migração em top e ps com essas opções;

$ /bin/top -H -b -n 1 | head -25
top - 07:43:24 up 5 days,  5:07, 18 users,  load average: 1.36, 1.03, 0.76
Threads: 1165 total,   1 running, 1164 sleeping,   0 stopped,   0 zombie

... recorte

   11 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcuob/0
   12 root      rt   0       0      0      0 S  0.0  0.0   0:45.92 migration/0

e ps aufx

$ ps aufx | head
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         2  0.0  0.0      0     0 ?        S    Jan30   0:00 [kthreadd]

... recorte

root        11  0.0  0.0      0     0 ?        S    Jan30   0:00  \_ [rcuob/0]
root        12  0.0  0.0      0     0 ?        S    Jan30   0:45  \_ [migration/0]

de acordo com esta pergunta em askubuntu.com, isso sugere que a% de CPU que você vê atribuída a threads de migração / N (sem processo associado) é "os threads que você está vendo são threads do kernel responsáveis por mover threads entre CPUs."

Existe um tópico aqui que faz referência a um problema no kernel relacionado a migração / N encadeamento sob carga zero, se você está vendo problemas de desempenho associados.

    
por 14.05.2012 / 03:05
0

Na ps manpage :

Currently, it is the CPU time used divided by the time the process has been running (cputime/realtime ratio), expressed as a percentage. It will not add up to 100% unless you are lucky. (alias pcpu).

i.e. não é uma medição em tempo real, portanto, não se deve esperar que corresponda ao que top relata.

    
por 14.05.2012 / 02:19