Сценарий: Внезапно мой компьютер чувствует себя вялым. Мышь движется, но окна открываются uptime
очень долго, и т.д. говорит, что нагрузка составляет 7,69 и поднимается.
Какой самый быстрый способ выяснить, какие процессы являются причиной нагрузки?
Теперь «верхние» и подобные инструменты не являются ответом, потому что они либо показывают использование процессора или памяти, но не оба одновременно. Что мне нужно, так это единственная команда, которую я могу набрать, когда она произойдет - что-то, что выяснит любую из
Система пытается заменить 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 ГБ ОЗУ - машина должна сама себя поменять, но, конечно, это неверная интерпретация данных, которая может произойти быстро).
источник
top
значит выход )Ответы:
Мне нужно улыбаться в ответах, потому что каждый из них велел вам запустить инструмент X. Единственная проблема заключается в том, что если то, что вы видите, является прерывистым, не будет никакого способа сопоставить что-либо. Такой инструмент, как sar, может помочь, если вы запускаете его на достаточно высокой частоте, но я бы сказал, что collectl еще лучше.
Как и sar , вы запускаете его как демон, устанавливая RPM и выполняя действия
/etc/init.d/collectl start
.Теперь, когда вы увидите что-то вялое,
collectl -p /var/log/collectl/filename --top
воспроизведете данные и покажите вам лучшие процессы. Вы могли бы также просто бегатьcollectl --top
и видеть их в режиме реального времени. Кстати, все, что вы можете сделать в режиме реального времени, вы также можете воспроизвести.Что касается загрузки процессора, что если вы перегружены прерываниями?
collectl -sC
будет не только показывать нагрузки на отдельные процессоры (или использовать-sc
для средней нагрузки), но и показывать, как они проводят свое время. Включите-j
(-scj
), и вы увидите количество прерываний / ЦП. Используйте верхний регистр,-J
и вы увидите ТИПЫ каждого прерывания / ЦП.Конечно, если вам действительно нравится vmstat, вы всегда можете воспроизвести собранные данные,
--vmstat
и он покажет исторические данные в формате vmstat.Есть гораздо больше переключателей, чем я могу перечислить, но вы можете проверить это на SourceForge или просто Google.
источник
«top» работает достаточно хорошо, если вы посмотрите на правильные числа. Посмотрим:
Теперь, если система работает медленно из-за того, что все ЦП заняты, она отображает столбцы «us» и «sy» в строке «Cpu (s):», близкой к 100%.
Если он медленный из-за перестановки, «Mem:» «free» показывает очень низкие значения, а «Swap:» «used» высокие значения.
Если он медленный из-за операций ввода-вывода в целом, то «Cpu (s):» «wa» говорит, что время затрачено на ожидание ввода-вывода.
Теперь, если вы знаете, что ожидания ввода-вывода являются проблемой, вы можете использовать программы «iotop», чтобы узнать, какие процессы создают большинство операций ввода-вывода.
источник
top
компьютере. Это не Улыбка Моны Лизы, а просто некоторые цифры, чтобы найти «плохие».Исходя из 400% использования, я предполагаю, что у вас есть четырехъядерный процессор. Ваша средняя нагрузка почти вдвое превышает емкость, и половина процессов ожидает ЦП.
Во-первых,
renice
ваша оболочка должна быть равна 0 или -10, чтобы получить более отзывчивую систему, а затем используйте ее,htop
чтобы найти процесс (ы), вызывающий сбой, и следуйтеstrace
по нему для данного процесса. Другие инструменты, которые могут быть полезны:vmsat
sar
iostat
pmap
источник
Вялая мышь также может быть связана с слишком высокой нагрузкой прерывания или с большой загруженностью контроллеров USB (я полагаю, это мышь USB).
источник
vmstat может помочь вам в общих чертах. Пример использования:
Вы также можете запускать его каждые X секунд - просто добавьте число X после команды.
Редактировать: С учетом комментариев ... Запишите следующее в файл и сделайте этот файл исполняемым. Он расскажет вам три лучших процесса на машине.
Если вы хотите узнать, какая память загружена в отличие от процессора, прочитайте верхнюю справочную страницу и измените порядок отображения.
источник