使用linux sar命令分析CPU和磁盘

订阅号原文:使用linux sar命令分析CPU和磁盘

一、摘要

这是夜说的第八篇学习文章,使用sar命令分析cpu和io问题。

二、sar -u分析cpu问题

1. sar -u分析cpu问题,2代表时间间隔(s),5代表次数,这两个值可以自行调整。

[root@oracle11g dev]# sar -u 2 5
Linux 3.10.0-862.el7.x86_64 (oracle11g)   02/23/2022   _x86_64_  (1 CPU)

01:17:08 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
01:17:10 AM     all      0.00      0.00      0.00      0.00      0.00    100.00
01:17:12 AM     all      0.00      0.00      0.00      0.00      0.00    100.00
01:17:14 AM     all      0.00      0.00      0.00      0.00      0.00    100.00
01:17:16 AM     all      0.00      0.00      0.50      0.00      0.00     99.50
01:17:18 AM     all      0.00      0.00      0.00      0.00      0.00    100.00
Average:        all      0.00      0.00      0.10      0.00      0.00     99.90

%user 用户空间的CPU使用率
%nice 改变过优先级的进程的CPU使用率
%system 内核空间的CPU使用率
%iowait CPU等待IO的百分比 
%steal 虚拟机的虚拟机CPU使用的CPU
%idle 空闲的CPU

在以上的显示当中,主要看%iowait和%idle,
%iowait过高表示存在I/O瓶颈,即磁盘IO无法满足业务需求,
如果%idle过低表示CPU使用率比较严重,需要结合内存使用等情况判断CPU是否瓶颈。

若 %iowait 的值过高,表示硬盘存在I/O瓶颈
若 %idle 的值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量
若 %idle 的值持续低于 10,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU

三、sar -d分析磁盘问题

1.sar -d分析磁盘问题,-p即以磁盘名称显示,例如sd*。2代表时间间隔(s),3代表次数。

[root@oracle11g dev]# sar -d -p 2 3
Linux 3.10.0-862.el7.x86_64 (oracle11g)   02/23/2022   _x86_64_  (1 CPU)

01:26:32 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
01:26:34 AM       sda      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01:26:34 AM rhel-root      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01:26:34 AM rhel-swap      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

01:26:34 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
01:26:36 AM       sda      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01:26:36 AM rhel-root      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01:26:36 AM rhel-swap      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

01:26:36 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
01:26:38 AM       sda      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01:26:38 AM rhel-root      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01:26:38 AM rhel-swap      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

Average:          DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
Average:          sda      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:    rhel-root      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:    rhel-swap      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

 
rd_sec/s: 每秒从设备读取的扇区数 
wr_sec/s: 每秒往设备写入的扇区数 
avgrq-sz: 发送给设备的请求的平均大小(以扇区为单位) 
avgqu-sz: 发送给设备的请求队列的平均长度 
await :服务等待I/O请求的平均时间,包括请求队列等待时间 (单位毫秒) 
svctm :设备处理I/O请求的平均时间,不包括请求队列等待时间 (单位毫秒) 
%util :一秒中有百分之多少的时间用于 I/O 操作,即被io消耗的cpu百分比。

如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。
如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;如果 await 远大于 svctm,说明I/O 队列太长,io响应太慢,则需要进行必要优化。 
如果avgqu-sz比较大,也表示有当量io在等待。

你可能感兴趣的:(Linux,linux)