ps -o pcpu в Debian Squeeze дает бессмысленные числа

Я пытаюсь получить процент загрузки процессоров на занятом сервере из ps, но это дает мне бессмысленные цифры. Вот усеченный пример:

$ 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 сообщает CPU% 0,0 для более поздних пидов. Что тут происходит? Как я могу убедить ps дать мне правильное число% процессора здесь? Как альтернатива, можно сказать top -b -n1 дать мне полный ARGV для процессов, которые он сообщает? Страница man не освещена.

ИЗМЕНЕНО ДЛЯ ДОБАВЛЕНИЯ:

Если я сделаю ps -eo pcpu,pid --sort -pcpu | headЯ все еще получаю плохие цифры:

%CPU   PID
343702 23762
343653 22570
 109 16648
83.6 22091
73.3 31950
67.3 22040
66.0 20708

ИЗДАНО ДАЛЬШЕ ДОБАВИТЬ:

Системы, которые я видел до сих пор, являются реальными аппаратными средствами: системы Debian Squeeze x86_64, одна с ядром 2.6.32-5-amd64, а другая с 2.6.39-bpo.2-amd64. У первого 32 ядра, у последнего 12. Один Opteron с 192 ГБ оперативной памяти, другой Xeon с 72 ГБ.

Чем больше я смотрю на это, тем больше это выглядит как простая ошибка в ps это показывает высокие показатели для процессов с очень низкой активностью, но я не хочу на это полагаться, пока не узнаю больше.

1 ответ

Как я могу убедить PS дать мне правильное число% процессора здесь?

Как насчет этого:

ps -eo pcpu,user,pid,args --sort -pcpu | head

это можно сказать top -b -n1 дать мне полный ARGV для процессов, которые он сообщает?

   -c : Command line/Program name toggle
        Starts top with the last remembered 'c' state reversed.  Thus, if top was displaying command lines,
        now that field will show program names, and visa versa.  See the 'c' interactive command for  addi‐
        tional information.
Другие вопросы по тегам