xiaohouye 2019-12-26
(一)pidstat简介
(1.1)pidstat主要用于监控全部或指定进程占用系统资源的情况,如CPU、内存、设备IO、任务切换、线程等,pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。
(1.2)常用的命令格式
# pidstat [参数] [时间] [次数]
(1.3)命令参数
常见的命令参数如下:
-u:默认的参数,显示各个进程的CPU使用统计
-r:显示各个进程的内存使用统计
-d:显示各个进程的IO使用情况
-p:指定进程号
-w:显示每个进程的上下文切换情况
-t:显示选择任务的线程的统计信息外的额外信息
(1.4)使用实例
(1.4.1)实例1:直接使用pidstat命令,其中pidstat和pidstat -u -p ALL是等效的,默认显示所有进程的CPU使用率。
# pidstat -u -p ALL
说明:
UID:用户ID
PID:进程ID
%user:进程在用户空间占用CPU的百分比
%system:进程在内核空间占用CPU的百分比
%guest:任务花费在虚拟机上的CPU使用率(运行在虚拟处理器)
%CPU:任务总的CPU使用率
CPU:正在运行这个任务的处理器编号
Command:这个任务的命令名称
(1.4.2)实例2:查看进程内存使用情况信息
# pidstat -r
minflt/s:从内存中加载数据时每秒出现的次要错误的数目,这些不要求从磁盘载入内存页面
majflt/s:从内存中加载数据时每秒出现的主要错误的数目,这些要求从磁盘载入内存页面
VSZ:虚拟地址大小,虚拟内存的使用KB
RSS:长期内存使用,任务的不可交换物理内存的使用量KB
%MEM:进程使用的物理内存百分比,top命令也会输出该字段
(1.4.3)实例3:查看进程IO情况信息
# pidstat -d
kB_rd/s:进程每秒从磁盘读取的数据量(以kB为单位)
kB_wr/s:进程每秒向磁盘写入的数据量(以kB为单位)
kB_ccwr/s:任务写入磁盘被取消的速率(kB);当任务截断脏的pagecache的时候会发生
(1.5)pidstat常用命令
使用pidstat进行问题定位时,以下命令常被用到:
# pidstat -u 1---获取CPU的统计信息,采集周期为1秒
# pidstat -r 1---获取内存的统计信息,采集周期为1秒
# pidstat -d 1---获取磁盘IO的统计信息,采集周期为1秒
(二)mpstat简介
(2.1)mpstat命令主要用于多CPU环境下,它显示各个可用CPU的状态。这些信息存放在/proc/stat文件中。在多CPU系统中,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。
(2.2)常用命令格式:
mpstat [选项] [参数]
(2.3)命令参数:当没有参数时,mpstat则显示系统启动以后所有信息的平均值,有internal时,第一行的信息自系统启动以来的平均信息,从第二行开始,输出为前一个internal时间段的平均信息。
-P {0|1|ALL}:表示监控哪个CPU,CPU在[0,(CPU个数-1)]中取值
internal:相邻的两次采样的间隔时间
count:采样的次数,count只能和delay一起使用
(2.4)使用实例:
(2.4.1)实例1:直接使用mpstat命令,当mpstat不带参数时,输出为从系统启动以来的平均值。
(2.4.2)实例2:查看多核CPU核心的当前运行状况信息,每2秒更新一次,生成一次信息
# mpstat -P ALL 2 1
说明:
%user:在internal时间段里(相邻的两次采样的间隔时间),用户态的CPU时间(%),不包含nice值为负进程---(user/total)*100
%nice:在internal时间段里,nice值为负进程的CPU时间(%)---(nice/total)*100
%sys:在internal时间段里,内核时间(%)---(system/total)*100
%iowait:在internal时间段里,硬盘IO等待时间(%)---(iowait/total)*100
%irq:在internal时间段里,硬中断时间(%)---(irq/total)*100
%soft:在internal时间段里,软中断时间(%)---(softirq/total)*100
%idle:在internal时间段里,CPU除去等待IO操作外的因为任何原因而空闲的时间闲置时间(%)---(idle/total)*100
(2.5)经验总结:
(2.5.1)vmstat和mpstat命令的差别是:mpstat可以显示每个处理器的统计,而vmstat显示所有处理器的统计。因此,编写了糟糕的应用程序即不使用多线程体系结构的程序,可能会运行在一个多处理器的机器上,而不使用所有处理器,没有发挥多处理的功效。从而导致一个CPU过载,而其他CPU却很空闲。通过mpstat可以轻松诊断这些类型的问题。
(2.5.2)vmstat中所有关于CPU的总结都适合mpstat。当你看到较低的%idle数字时,您知道出现了CPU不足的问题。当你看到较高的%iowait数字时,你知道在当前负载下I/O子系统出现了某些问题。
—————— 本文至此结束,感谢阅读 ——————