场景:突然,我的电脑呆滞了。鼠标移动但窗口需要打开才能打开,需要等一些时间。uptime
负载为7.69并在增加。
找出导致负载的进程的最快方法是什么?
现在,“ top”和类似工具并不能解决问题,因为它们要么显示CPU使用率,要么显示内存使用率,但不能同时显示两者。我需要的是可能会在发生时键入的单个命令-可以找出其中任何一个的命令
系统正在尝试将8GB RAM交换到磁盘,因为进程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%的数据与该问题无关。因此,该工具应该做的是寻找占用大量资源的进程,并仅列出那些进程,以及“该进程需要大量CPU,这会产生许多IRQ,该进程会分配大量RAM(并且还在不断增长)”。
这将是一个相对简短的列表。对于刚接触此问题的人来说,从此列表中找到罪魁祸首要比从其输出中找到罪魁祸首要简单得多,htop
这给了我大约5000个数字,但需要我自己折叠多线程进程(我有50行,VIRT 2750M
但是只有16 GB的RAM-机器应该自动将其交换掉,但是当然,这是对可能很快发生的数据的误解。
top
意思)