Estou tentando obter a porcentagem de CPU dos processos em um servidor ocupado de ps
, mas isso está me dando números sem sentido. Aqui está um exemplo truncado:
$ ps -eo pcpu,pid | sort -n
%CPU PID
...
36.5 26403
38.6 28295
39.0 11741
42.6 11736
58.6 15960
61.4 21989
63.0 21939
65.5 18017
66.0 20708
67.3 22040
73.2 31950
80.0 11740
83.6 22091
109 16648
171851 22888
171851 22938
171856 23191
171858 23241
171866 24681
171875 26996
171895 30277
172376 26084
172449 25530
top
informa uma% de CPU de 0,0 para os pids posteriores. Oque esta acontecendo aqui? Como posso convencer ps
a me dar o número correto de% de CPU aqui? Como alternativa, é possível dizer a top -b -n1
para me fornecer o ARGV completo para os processos que está relatando? A página man não é esclarecedora.
EDITADO PARA ADICIONAR:
Se eu fizer um ps -eo pcpu,pid --sort -pcpu | head
, ainda receberá números ruins:
%CPU PID
343702 23762
343653 22570
109 16648
83.6 22091
73.3 31950
67.3 22040
66.0 20708
EDITANDO AINDA ADICIONAR:
Os sistemas que vi até agora são hardware real: sistemas x86_64 Debian Squeeze, um com o kernel 2.6.32-5-amd64 e outro com 2.6.39-bpo.2-amd64. O primeiro tem 32 núcleos, o último 12. Um é um Opteron com 192 GB de RAM, o outro um Xeon com 72 GB.
Quanto mais eu olho para isso, mais parece um simples bug em ps
que mostra números altos para processos com pouca atividade, mas eu não quero depender disso até que eu saiba mais.