目录
一,mpstat
1.1mpstat概述
mpstat 可以查看所有cpu的平均负载,也可以查看指定CPU的负载。所以mpstat其实就是主要查看CPU负载的一个工具,是一款常用的多核CPU性能分析工具,用来实时查询每个CPU的性能指标,以及所以CPU的平均指标。
2,命令安装
他是linux性能工具集sysstat中的一个工具,所以需要装上sysstat。
命令语法格式
mpstat基本用法:
mpstat -P CPU编号
mpstat -P ALL 5 每五秒统计一次所以CPU的平均负载
应用实战
主要用于分析多CPU的平均负载高的原因
计算密集导致平均负载高
IO导致平均负载高
等待CPU调度导致平均值负载高
mpstat经常配合pdistat等其他命令一起分析系统性能瓶颈。
mpstat的语法
mpstat [-P {|ALL}] [internal [count]]
-P :指定要监控那个CPU,范围是[0~n-1],ALL表示监控所有CPU
internal:相邻两次采样的间隔时间
count:采样次数
[root@kya ~]# mpstat -P ALL 4 4 -P ALL 选项指示该命令显示所有CPU的统计信息
4 4 该指令每隔4秒运行一次,一个运行4次
Linux 3.10.0-957.el7.x86_64 (kya) 2022年07月13日 _x86_64_ (1 CPU)
10时18分00秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
10时18分04秒 all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
10时18分04秒 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
10时18分04秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
10时18分08秒 all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
10时18分08秒 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
10时18分08秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
10时18分12秒 all 0.00 0.00 0.25 0.00 0.00 0.00 0.00 0.00 0.00 99.75
10时18分12秒 0 0.00 0.00 0.25 0.00 0.00 0.00 0.00 0.00 0.00 99.75
10时18分12秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
10时18分16秒 all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
10时18分16秒 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
平均时间: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
平均时间: all 0.00 0.00 0.06 0.00 0.00 0.00 0.00 0.00 0.00 99.94
平均时间: 0 0.00 0.00 0.06 0.00 0.00 0.00 0.00 0.00 0.00 99.94
[root@kya ~]#
各列的含义
- %user: 表示用户态所使用 CPU 的百分比。
- %nice: 表示使用 nice 命令对进程进行降级时 CPU 的百分比。
- %sys: 表示内核进程使用的 CPU 百分比。
- %iowait: 表示等待进行 I/O 所使用的 CPU 时间百分比。
- %irq: 表示用于处理系统中断的 CPU 百分比。
- %soft: 表示用于软件中断的 CPU 百分比。
- %steal:虚拟机强制CPU等待的时间百分比。
- %guest: 虚拟机占用CPU时间的百分比。
- %idle: CPU 的空闲时间的百分比。
平均负载查看
- 使用uotime命令可以查看系统的平均负载
- 当系统变慢,用top或uptime来了解系统的负载情况。
- 系统平均负载是指在特定时间间隔内运行队列中的平均进程数
- 如果单个CPU过去一分钟平均负载不大于3的话,那么系统的性能是良好的。2核是6依次类推
二,压力测试 stress
stress是linux下的一个压力测试工具,可以对cpu memory内存,IO已经磁盘进行压力测试,可以指定负载的CPU个数
yum -y install epel-release 安装epel软件库
yum -y install stress 安装软件包
stress参数
-c | cpu | 产生n个进程,每个进程都反复不停的计算随机数的平方根 |
-i | io | 产生n个进程,每个进程反复调用 将内存上的内容写到硬盘上 |
-m | vm | 产生n个进程,每个进程不断分配和释放内存 |
-t | timout | 在n秒后结束进程 |
-d | hdd | 产生n个不断执行 write 和unlink函数的进程(创建文件、写入内容、删除文件 |
三,进程性能查看pidstat
pidstat是一个常用的进程性能分析工具,用来实时查看进程的cpu,内存。IO以及上下文切换等性能指标。
常用参数
选项 | 描述 |
-u | 默认的参数,显示各个进程的CPU使用统计 |
-r | 显示各个进程的内存使用统计 |
-r | 显示各个进程的IO使用情况 |
-p | 指定进程号 |
-w | 显示每个进程的上下文切换情况 |
-t | 显示选择任务的线程的统计信息外的额外信息 |
-V | 版本号 |
-h | 在一行上显示了所有活动,这样其他程序可以容易解析。 |
-I(大写) | 在SMP环境,表示任务的CPU使用率/内核数量 |
-l | 显示命令名和所有参数 |
压力测试
模拟I/O负载
三,lostat命令
Iostat主要用于输出磁盘io和cpu的统计信息
Iostat命令语法
Iostat 【选项】【时间间隔】【次数】
-c: 显示CPU使用情况
-d: 显示磁盘使用情况
-N: 显示磁盘阵列(LVM) 信息
-n: 显示NFS 使用情况
-k: 以 KB 为单位显示
-m: 以 M 为单位显示
-t: 报告每秒向终端读取和写入的字符数和CPU的信息
-V: 显示版本信息
-x: 显示详细信息
-p:[磁盘] 显示磁盘和分区的情况
Iostat使用
显示所有设别负载情况
cpu属性说明:
user:CPU处在用户模式下的时间百分比。
nice:CPU处在带NICE值的用户模式下的时间百分比。
system:CPU处在系统模式下的时间百分比。
iowait:CPU等待输入输出完成时间的百分比。
steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。
idle:CPU空闲时间百分比。
磁盘属性说明:
device:磁盘名称
tps:每秒钟发送到的I/O请求数.
Blk_read/s:每秒读取的block数.
Blk_wrtn/s:每秒写入的block数.
Blk_read:读入的block总数.
Blk_wrtn:写入的block总数.
2,iostat1 5
间隔1秒,总共显示五次
iostat -d 2
每隔两秒,显示一次设备统计信息
iostat -x sda sdb 2 3
每隔两秒显示一次sda sdb 两个设备的扩展统计信息,共输出3次
rrqm/s: 每秒进行 merge 的读操作数目。即 rmerge/s
wrqm/s: 每秒进行 merge 的写操作数目。即 wmerge/s
r/s: 每秒完成的读 I/O 设备次数。即 rio/s
w/s: 每秒完成的写 I/O 设备次数。即 wio/s
rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。
wkB/s: 每秒写K字节数。是 wsect/s 的一半。
avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。
avgqu-sz: 平均I/O队列长度。
r_await:每个读操作平均所需的时间
不仅包括硬盘设备读操作的时间,还包括了在kernel队列中等待的时间。
w_await:每个写操作平均所需的时间
不仅包括硬盘设备写操作的时间,还包括了在kernel队列中等待的时间。
- await: 平均每次设备I/O操作的等待时间 (毫秒)。
svctm: 平均每次设备I/O操作的服务时间 (毫秒)。
%util: 一秒中有百分之多少的时间用于 I/O 操作,即被io消耗的cpu百分比
- iostat -m
- 以M为单位显示所以信息
- iostat -d -x 1 1
- 查看设备使用率(%util),相应时间(await)
总结:iostat命令主要用于输出磁盘信息,可以和许多选项搭配其中相对重要的选项为-d显示磁盘使用情况,-k以kb为单位显示,-m以m为单位显示-x查看详细信息-p显示磁盘和分区的情况
四,pidstat
pidstat是sysstat工具的一个命令,用于监控全部或指定进程的cpu、内存一、线程、设备IO等系统资源的占用情况。pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。
Pidstat安装
pidstat是sysstat软件套件的一部分,sysstat包含很多监控linux系统状态的工具,它能够从大多数linux发行版的软件源中获得。
Yum install -y sysstat
Pidstat使用方法:
Pidstat 【选项】 【时间间隔】【次数】
常用参数:
-u:默认的参数,显示各个进程的cpu使用统计
-r:显示各个进程的内存使用统计
-d:显示各个进程的IO使用情况
-p︰指定进程号
-w:显示每个进程的上下文切换情况
-t:显示选择任务的线程的统计信息外的额外信息
-T { TASK | CHILD |ALL }
这个选项指定了pidstat监控的。TASK表示报告独立的task,CHILD关键字表示报告进程下所有线程统计信息。ALL表示报告独立的task和task下面的所有线程。
注意: task和子线程的全局的统计信息和pidstat选项无关。这些统计信息不会对应到当前的统间隔,这些统计信息只有在子线程kill或者完成的时候才会被收集。
-V:版本号
-h:在一行上显示了所有活动,这样其他程序可以容易解析
-I:在SMP环境,表示任务的CPU使用率/内核数量
-:显示命令名和所有参数
查看所有进程的cpu使用情况
Pidstat -u -p ALL-u是默认参数统计cpu的参数,-p参数是显示指定进程,而这里是显示所有进程
PID:进程ID
usr:进程在用户空间占用cpu的百分比
system:进程在内核空间占用cpu的百分比
guest:进程在虚拟机占用cpu的百分比
%CPU:进程占用cpu的百分比
CPU:处理进程的cpu编号
Command:当前进程对应的命令
Cpu使用状况统计
内存使用状态
pidstat -r
PID:进程标识符
Minflt/s:任务每秒发生的次要错误,不需要从磁盘中加载页
Majflt/s:任务每秒发生的主要错误,需要从磁盘中加载页
VSZ:虚拟地址大小,虚拟内存的使用KB
RSS:常驻集合大小,非交换区五里内存使用KB
Command:task命令名
查看各个进程的io使用情况
pidstat -d
PID:进程id
kB_rd/s:每秒从磁盘读取的KB
kB_wr/s:每秒写入磁盘KB
kB_ccwr/s:任务取消的写入磁盘的KB。当任务截断脏的pagecache[11] 的时候会发生。
COMMAND:task的命令名
显示每个进程的上下文切换情况
Pidstat -w -p ALL
PID:进程id
Cswch/s:每秒主动任务上下文切换数量
Nvcswch/s:每秒被动任务上下文切换数量
Command:命令名
pidstat -T TASK
pidstat -T CHILD
pidstat -T ALL
TASK表示报告独立的task即任务或进程
CHILD关键字表示报告进程下所有线程统计信息。
ALL表示报告独立的task和task下面的所有线程。
PID:进程id
Usr-ms:任务和子线程在用户级别使用的毫秒数。
System-ms:任务和子线程在系统级别使用的毫秒数。
Guest-ms:任务和子线程在虚拟机(running a virtual processor)使用的毫秒数。
Command:命令名
五,lsof命令
lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。
lsof命令使用选项
-p:输出指定进程打开的文件
-l:输出中使用ID代替用户名
-u:输出指定用户打开的文件
-c:输出COMMAND列中包含string的项
-d:输出包含指定描述符的项
fileName:输出打开文件fileName的所有项
输入lsof -p 1:列出1进程打开的文件
输出的各项信息:
COMMAND : 命令名称
PID : 进程ID
USER : 用户ID号或登录名
FD : 文件描述符
TYPE : 与文件关联结点的类型
DEVICE : 设备号
SIZE/OFF : 文件大小/偏移量,以字节为单位
NODE : 文件结点
NAME : 文件挂载点和文件所在的系统