Як зареєструвати використання процесора за один процес?


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 у "голова -10" на інше число, і як часто він оновлюється, змінивши 3 у "сон 3" або повністю вийнявши частину "сну 3".


5
Переконайтеся, що ви там спите, інакше є хороший шанс, що процес вашої оболонки завжди буде в топ-10. :)
Jedberg

Я думаю, sort -nrбуло б краще сортувати чисельно (принаймні, на моєму ubuntu / debian boxen)
1313

2
До речі, ви повинні надати цьому процесу найвищий пріоритет, щоб він залишався корисним під час піків високого навантаження (що зрештою є його життєвим принципом).
космодивер

12

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


6

Я думаю, що мунін - це один із інструментів моніторингу товарів, який допоможе вашій інформації отримати інформацію про діяльність вашої скриньки. Також є такі інструменти командного рядка, як 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 також немає команди "верх"?

machine:~/# top

має дати вам статистику роботи, програми яких викликають найбільше навантаження.


Так, я знаю, але я хотів би це зробити, щоб я міг бачити історію пізніше. Коли процесор сприймає, машина стає невідповідною, тому я не можу увійти та бігти, topщоб побачити, хто винуватець. Хочу перевірити ще раз і побачити, який процес це зробив.
Helder S Ribeiro
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.