方法一:top 命令
# top top - 15:12:56 up 64 days, 21:18, 1 user, load average: 3.88, 7.20, 8.13 Tasks: 526 total, 1 running, 525 sleeping, 0 stopped, 0 zombie %Cpu(s): 25.4 us, 0.5 sy, 0.0 ni, 74.1 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
具体的参数解释如下:
Tasks: 526 total 进程总数
1 running 正在运行的进程数
525 sleeping 睡眠的进程数
0 stopped 停止的进程数
0 zombie 僵尸进程数
Cpu(s):
25.4% us 用户空间占用CPU百分比
0.5% sy 内核空间占用CPU百分比
0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比
74.1% id 空闲CPU百分比
0.0% wa 等待输入输出的CPU时间百分比
0.0% wa 的百分比可以大致的体现出当前的磁盘io请求是否频繁。如果 wa的数量比较大,说明等待输入输出的的io比较多。
方法二:vmstat 命令
# vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 44 0 2637244 1792992 0 22761468 0 0 29 31 0 0 4 1 95 0 0
vmstat参数解释:
Procs
r: 等待运行的进程数 b: 处在非中断睡眠状态的进程数 w: 被交换出去的可运行的进程数。此数由 linux 计算得出,但 linux 并不耗尽交换空间
Memory
swpd: 虚拟内存使用情况,单位:KB
free: 空闲的内存,单位KB
buff: 被用来做为缓存的内存数,单位:KB
Swap
si: 从磁盘交换到内存的交换页数量,单位:KB/秒
so: 从内存交换到磁盘的交换页数量,单位:KB/秒
IO
bi: 发送到块设备的块数,单位:块/秒
bo: 从块设备接收到的块数,单位:块/秒
System
in: 每秒的中断数,包括时钟中断
cs: 每秒的环境(上下文)切换次数
CPU
按 CPU 的总使用百分比来显示
us: CPU 使用时间
sy: CPU 系统使用时间
id: 闲置时间
wa 等待IO时间 Wa过高时,说明io等待比较严重,这可能是由于磁盘大量随机访问造成的,也有可能是磁盘的带宽出现瓶颈。
vmstat -d 可以显示详细磁盘信息
# vmstat -d disk- ------------reads------------ ------------writes----------- -----IO------ total merged sectors ms total merged sectors ms cur sec sda 51544212 4376046 15326237580 1528893285 77378992 6087788 16849888943 1237001225 0 151573 sr0 18 0 2056 72 0 0 0 0 0 0 dm-0 359607 0 17168007 1936150 10555541 0 195526291 49722767 0 14768 dm-1 1377643 0 11029344 7709149 2299406 0 18395248 25937000 0 904 dm-2 54342484 0 15297982937 2134548820 70611793 0 16635742795 1265693658 0 140203
total: 总的成功读写次数
sectors: 成功读写的扇区
ms: 读写花费的毫秒数
merged:表示一次来自于合并的写/读请求,一般系统会把多个连接/邻近的读/写请求合并到一起来操作.
vmstat 当然也可以作为 IO,cpu,内存性能瓶颈的分析
方法三:iostat 命令
# iostat Linux 3.10.0-957.10.1.el7.x86_64 (master) 05/30/2019 _x86_64_(48 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 3.98 0.00 0.63 0.08 0.00 95.31 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 22.99 1366.56 1502.50 7663119794 8425406616 scd0 0.00 0.00 0.00 1028 0
avg-cpu 总体cpu使用情况统计信息,对于多核cpu,这里为所有cpu的平均值
Device 各磁盘设备的IO统计信息
%user CPU在用户态执行进程的时间百分比。
%nice CPU在用户态模式下,用于nice操作,所占用CPU总时间的百分比
%system CPU处在内核态执行进程的时间百分比
%iowait CPU用于等待I/O操作占用CPU总时间的百分比
%steal 管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟CPU的百分比
%idle CPU空闲时间百分比
tps 每秒向磁盘设备请求数据的次数,包括读、写请求,为rtps与wtps的和。出于效率考虑,每一次IO下发后并不是立即处理请求,而是将请求合并(merge),这里tps指请求合并后的请求计数。
Blk_read/s 每秒读取的数据块。块相当于内核2.4或更高版本的扇区,因此大小为512字节。对于较老的内核,块的大小是不确定的
Blk_wrtn/s 每秒写入的数据块.
Blk_read 取样时间间隔内读扇区总数量
Blk_wrtn 取样时间间隔内写扇区总数量
1. 若 %iowait 的值过高,表示硬盘存在I/O瓶颈
2. 若 %idle 的值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量
3. 若 %idle 的值持续低于1,则系统的CPU处理能力相对较低,表明系统中最需要解决的资源是 CPU
可以使用iostat -c选项单独显示avg-cpu部分的结果,使用iostat -d选项单独显示Device部分的信息