dstat的选项--top-io和--top-cpu能够找出占用资源最多的进程,但如果某个资源占用大户存在多个运行实例的话,单凭这两个选项不足以追查出问题所在。
pidstat能够输出每个进程的统计信息,我们可以对这些信息进行排序,作出进一步的判断。
12.5.1 预备知识
pidstat可能默认并没有安装。可以使用下列命令自行安装:
# apt-get install sysstat
12.5.2 实战演练
pidstat包含多种选项,可以生成各种输出。
- -d:输出
I/O统计。 - -r:输出缺页故障和内存使用情况。
- -u:输出
CPU使用情况。 - -w:输出任务切换(上下文切换)情况。
输出上下文切换活动:
[root@dev workspace]# pidstat -w | head -5Linux 5.10.60.1-microsoft-standard-WSL2 (MiHome) 02/05/2022 _x86_64_ (8 CPU)07:52:53 PM UID PID cswch/s nvcswch/s Command07:52:53 PM 0 1 0.02 0.00 init07:52:53 PM 0 7 0.00 0.00 init
pidstat的输出是按照PID排序的。我们可以根据需要,使用sort重新排序输出。下面的命令显示了每秒钟发生上下文切换次数(选项-w输出中的第4列)最多的前5个进程:
[root@dev workspace]# pidstat -w | sort -nr -k 4 | head -507:54:05 PM 0 1536 0.00 0.00 head07:54:05 PM 0 1535 0.00 0.00 sort07:54:05 PM 0 1534 0.00 0.00 pidstat07:54:05 PM 0 806 0.01 0.00 logger07:54:05 PM 112 805 0.06 0.00 mariadbd
12.5.3 工作原理
pidstat通过查询内核来获取任务信息。sort和head命令减少了数据量,让我们可以将注意力集中在霸占资源的程序上面。
