Как найти процесс(ы) которые портят машины

сценарий: внезапно, мой компьютер чувствует себя вялым. Мышь двигается, но окна занять возрастов, чтобы открыть, и т. д. uptime говорит, что нагрузка 7.69 и повышение.

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

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

система пытается поменять 8 ГБ оперативной памяти на диск, потому что процесс X ...

или

процесс X ищет по всему диску

или

процесс X использует 400% CPU"

Итак, что я ищу, это iostat, htop / atop и аналогичные инструменты, работающие в одном с таким выходом:

 1235 cp - Disk trashing
   87 chrome - Uses 2 GB of RAM
  137 nfs_bench - Uses 95% of the network bandwidth

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

мой аргумент выглядит так: пользователь замечает проблему. Могут быть тысячи причин ... ну, почти 🙂 пользователь хочет знать источник проблемы.

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

это будет относительно короткий список. Это будет гораздо проще для кого-то это новое найдите виновника из этого списка, чем из вывода, скажем,htop что дает мне около 5000 чисел, но требует, чтобы я сам складывал многопоточные процессы (у меня есть 50 строк, которые говорят VIRT 2750M но только 16 ГБ оперативной памяти - машина должна поменяться к смерти, но конечно, это неправильное толкование данных, которые могут произойти быстро).

18
задан Peter Mortensen
19.01.2023 20:00 Количество просмотров материала 3638
Распечатать страницу

5 ответов

Я должен улыбаться на ответы, потому что каждый сказал вам запустить инструмент X. единственная проблема заключается в том, что если то, что вы видите, периодически не будет никакого способа коррелировать что-либо. Такой инструмент, как sar могу помочь, если вы запустите его на достаточно высокой частоте, но я бы сказал collectl еще лучше.

как sar, вы запускаете его как демон, установив RPM и сделав /etc/init.d/collectl start.

теперь, когда вы видите что-то вяло, collectl -p /var/log/collectl/filename --top будет воспроизводить данные и покажет вам лучшие процессы. Вы могли бы также просто работать collectl --top и увидеть их в режиме реального времени. Кстати-все, что вы можете сделать в режиме реального времени вы можете воспроизведения, а также.

Что касается загрузки процессора, что делать, если вы получаете перегружены с прерываниями? collectl -sC не только покажет нагрузки на отдельных процессорах (или использовать -sc для средней нагрузки), он покажет, как они тратят свое время. Включить -j (-scj) и вы увидите количество прерываний/CPU. Используйте заглавную -J и вы увидите типы каждого прерывания / процессора.

конечно, если вам действительно нравится vmstat, вы всегда можете воспроизвести данные collectl с помощью --vmstat и он покажет исторические данные в формате vmstat.

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

2
отвечен Mark Seger 2023-01-21 03:48

" top " работает достаточно хорошо, пока вы смотрите на правильные числа. Давайте посмотрим:

top - 13:11:45 up 13 days,  1:13, 21 users,  load average: 0.06, 0.11, 0.26
Tasks: 271 total,   2 running, 267 sleeping,   0 stopped,   2 zombie
Cpu(s): 19.0%us,  6.3%sy,  0.0%ni, 74.0%id,  0.5%wa,  0.0%hi,  0.2%si,  0.0%st
Mem:   8183668k total,  8002712k used,   180956k free,    12476k buffers
Swap: 11847900k total,   723480k used, 11124420k free,   767016k cached

теперь, если система медленная, потому что CPU все занято, она показывает, как столбцы" us "и" sy "на" Cpu(S): "строка близка к 100% вместе.

если он медленный из-за перестановки, "Mem:" "free" показывает очень низкие значения и "Swap:" "используемые" высокие значения.

если он медленный из-за I / O в общем ,тогда " Cpu (S):" " wa " говорит, что время тратится на ввод / вывод ждать.

теперь, если вы знаете, что проблема в ожидании ввода-вывода, вы можете использовать программы "iotop", чтобы узнать, какие процессы создают большинство операций ввода-вывода

6
отвечен Zds 2023-01-21 06:05

основываясь на использовании 400%, я предполагаю, что у вас есть четырехъядерный процессор. Средняя нагрузка почти в два раза превышает пропускную способность, и половина процессов ожидает ЦП.

первый, renice ваша оболочка 0 или -10, чтобы получить более отзывчивую систему, а затем использовать htop, чтобы найти нарушителя процесса(ов) и следовать, что с strace для данного процесса. Другие инструменты, которые могут быть полезны are:

  • vmsat
  • sar
  • iostat
  • pmap
2
отвечен Terpion 2023-01-21 08:22

вялая мышь также может быть из-за слишком высокой нагрузки прерывания, или, контроллеры USB, будучи очень занят (я предполагаю, что это мышь USB).

1
отвечен Bruce ONeel 2023-01-21 10:39

vmstat может помочь вам в общих чертах. Пример использования:

$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 1  0      0 977908 426184 1543884    0    0    38    45  106  385  4  1 95  1

вы также можете запускать его каждые X секунд - просто добавьте число X после команды.

Edit: с учетом комментария... Запишите в файл следующее И сделайте этот файл исполняемым. Оно скажет вам процессы верхней части 3 на машине.

top -n 1 | tail -16 | head -4 | awk '{print }'

Если вы хотите знать, какой hogged памяти в отличие от процессора, а затем прочитать верхнюю страницу man и изменить порядок дисплей.

1
отвечен Sardathrion 2023-01-21 12:56

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх