Как я регистрирую использование ЦП на процесс?

18

У меня есть ящик на Линоде, который ведет себя странно. Время от времени процессор и дисковый ввод / вывод будут работать на 100%, и сервер перестает отвечать на запросы и должен быть загружен. Я хотел бы лучше исследовать, что происходит, но я не знаю, как найти, кто отвечает за все эти процессоры и ввод / вывод. Я использую Gentoo 2.6.18.

Хелдер С Рибейро
источник

Ответы:

20

Вы можете попробовать сделать что-то вроде этого:

while true; do ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10 >> logfile.txt; printf "\n" >> logfile.txt; sleep 3; done

это покажет вам десятку лучших процессов с точки зрения использования процессора. Вы можете изменить число отображаемых процессов, изменив число 10 в "head -10" на другое число, и как часто оно будет обновляться, изменив 3 в "sleep 3" или полностью убрав часть "sleep 3".

Shawn
источник
5
Убедитесь, что у вас там какой-то сон, иначе есть хороший шанс, что ваш процесс оболочки всегда будет в топ-10. :)
jedberg
Я думаю, что sort -nrбыло бы лучше, чтобы отсортировать по численности (по крайней мере, на моем Ubuntu / Debian Boxen)
Sehe
2
Кстати, вы должны дать этому процессу наивысший приоритет, чтобы он оставался полезным в периоды пиковой нагрузки (что, в конце концов, и является точкой его жизни).
космонавт
12

Посмотрите на него, он напишет двоичный журнал почти всего, что вы, возможно, захотите, а затем вы можете использовать верхнюю часть, например, графический интерфейс пользователя, чтобы просмотреть временные интервалы дня (по умолчанию данные берутся каждые 5 минут). http://www.atcomputing.nl/Tools/atop/

ScottZ
источник
6

Я думаю, что munin - это один из инструментов мониторинга товаров, который поможет вам получить некоторую информацию о деятельности вашего ящика. Кроме того, есть некоторые инструменты командной строки, такие как sar , iostat, ps, top для такого использования.

Али Мезгани
источник
5

Другие ответы только показали вам, как вы можете посмотреть на то, что происходит в настоящее время, что не помогает, если система была перезагружена.

Если вы хотите, чтобы эта информация была записана для будущих поколений (или для выставления счетов, или для любого другого использования, которое вы также можете использовать), вам нужен процесс учета.

Вот руководство, которое я нашел, но, честно говоря, прошло уже десять лет с тех пор, как я использовал учет процессов.

http://tldp.org/HOWTO/Process-Accounting/

Роб Ф
источник
2

Более удобный подход к решению Шона для мониторинга практически в реальном времени:

while true; do clear; ps -eo pcpu,pmem,pid,user,args --sort=-pcpu c|head -20; sleep 1; done

Это обеспечит статичное представление о 20 лучших процессах, которые будут обновляться каждые 1 секунду. Параметр «c» в команде ps выведет имя исполняемого файла процесса, а не всю команду args. Вы можете опустить эту опцию, если вам нужна вся информация о команде. Также добавлен столбец использования памяти%.

МАНОЛИС
источник
1

Разве Gentoo также не имеет команды top?

machine:~/# top

должен дать вам статистику запуска программ, которые вызывают наибольшую нагрузку.

Emthigious
источник
Да, я знаю, но я хотел бы, чтобы это было зарегистрировано, чтобы я мог видеть историю позже. Когда процессор нагружается, машина перестает отвечать на запросы, поэтому я не могу войти и запустить, topчтобы узнать, кто виноват. Я хочу проверить позже и посмотреть, какой процесс это сделал.
Хелдер С Рибейро