Сценарий: Внезапно мой компьютер чувствует себя вялым. Мышь движется, но окна открываются 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 ГБ ОЗУ - машина должна заменить себя до смерти, но, конечно, это неверная интерпретация данных, которая может произойти быстро).