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

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

7 ответов

Решение

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

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".

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

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

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

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

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

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

Принятый ответ сортируется по использованию ЦП в течение всего времени процесса, а не по краткосрочному использованию ЦП.

Вы можете получить десятку лучших процессов по использованию ЦП за произвольный интервал, используяtopв пакетном режиме:

      $ top -b -n 1 -d 3 -o +%CPU | sed -e '1,/PID/d' | head -10

Здесь-d 3определяет интервал. Согласно справочной странице Ubuntu 21.10, поддерживаются интервалы, кратные 0,1 секунды. Он не жалуется, если вы указываете что-то более точное, но я не знаю, действительно ли он производит измерение за более короткое время.

The sed -e '1,/PID/d'просто обрезает сводную информацию и заголовок, но вы можете оставить их и увеличитьheadсоответственно ограничить.

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

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

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

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

machine:~/# top

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

Другие вопросы по тегам