简介
sar 是一个比较全面的性能监控工具,包括cpu、内存、磁盘和网络等信息,并且该命令会每10分钟自动保存一次硬件资源使用情况。如果在执行某方面的性能测试时忘记监控,那么 sar 可以帮助我们查看历史记录。
文章目录如下
1. 语法
sar [ 选项 ] [ <时间间隔> [ <次数> ] ]
1.1. 常用参数
-u:CPU利用率
-r:内存利用率
-R:内存状况
-S:交换空间利用率
-H:交换空间利用率
-b:I/O 和传输速率信息状况
-d:磁盘使用情况
-q:队列长度和平均负载
-n { <关键词> [,...] | ALL } :网络统计信息
-o:保存信息为二进制文件
-f:查看 -o 保存的文件
2. cpu监控
2.1. 监控系统负载
- 通过 sar -q 监测系统的运行队列和负载情况。它提供了有关系统中等待运行的进程数量、平均负载以及执行队列长度等信息。通过分析这些数据,可以评估系统的负载状态,帮助排查性能问题,并合理调整系统资源以优化性能。
sar -q 1 3 # 每 1s 监控一次,共监控 3 次
runq-sz :运行队列长度(正在等待 CPU 执行的进程数)
plist-sz :进程队列长度(等待 CPU 时间片的进程数)
ldavg-1 :过去1分钟负载平均值
ldavg-5 :过去5分钟负载平均值
ldavg-15:过去15分钟负载平均值
blocked :阻塞进程数量(目前正在阻塞等待某些事件的进程数量)
2.2. 监控CPU利用率
- 通过 sar -u 来统计系统的CPU使用情况,包括CPU利用率、用户态、内核态、空闲、等待I/O等,以帮助评估系统CPU负载和性能状况。
sar -u 1 3 # 每 1s 监控一次,共监控 3 次
%user :用户空间占用的CPU
%nice :改变过优先级进程占用的CPU
%system:内核空间占用的CPU
%iowait :CPU 等待 IO 的占比(若该占比较高,硬盘可能存在 I/O 瓶颈)
%steal :管理程序(hypervisor)为另一个虚拟进程提供服务而等待的虚拟CPU占比
%idle :空闲的CPU(若空闲较大,但系统响应慢,有可能CPU等待内存分配,应适当增加内存容量;若空闲持续低于 1%,则系统的CPU处理能力较低)
2.3. 监控上下文切换
sar -w 1 3 # 查看上下文切换情况,每 1s 监控一次,共 3 次
proc/s :每秒新建进程的数量。
cswch/s:每秒上下文切换的次数。
- proc/s 表示每秒钟新创建的线程和进程的总数,可以反映系统的任务调度情况。较高的数值可能表示系统正在频繁地创建新的进程或线程。
- 上下文切换是指在多任务操作系统中,由于 CPU 资源的切换,系统从一个进程或线程切换到另一个进程或线程时所进行的操作。上下文切换在多任务系统中是必要的,但频繁的上下文切换可能会影响系统的性能。
cswch/s
可以衡量系统的调度效率和负载情况。较高的值可能表示系统正在频繁进行进程切换,这可能是由于进程数量过多或其他资源限制引起的。
3. 内存监控
3.1. 监控物理内存
- 通过 sar -r 可以查看内存使用情况,包括内存利用率、可用内存、缓存和缓冲区、页面交换等,以帮助评估系统内存压力和性能状况。
sar -r 1 3 # 查看内存使用率,每 1s 监控一次,共 3 次
- 默认单位:KB
kbmemfree :空闲的物理内存
kbmemused:已使用的物理内存
%memused:物理内存使用率
kbbuffers :已使用的缓冲区大小
kbcached :已缓存的文件系统大小
kbcommit :保证当前系统所需内存,为了确保不溢出而需要的内存(RAM + SWAP)
%commit :可用内存占比(是可用,而不是空闲)
3.2. 监控内存分页
- 通过观察页面交换的频率和量,可以评估系统的内存压力情况。较高的页交换率可能表明系统正在经历内存紧缺的情况。
sar -B 1 3 # 查看内存分页情况,每隔 1s 监控一次,共 3 次
pgpgin/s :每秒从磁盘或swap置换到内存的字节数(单位 KB)
pgpgout/s:每秒从内存置换到磁盘或swap的字节数(单位 KB)
fault/s :系统每秒产生的缺页数(major + minor)
majflt/s :每秒产生的主缺页数
pgfree/s :每秒被放入空闲队列的页个数
pgscank/s:每秒被kswapd扫描的页个数
pgscand/s:每秒被直接扫描的页个数
pgsteal/s :每秒从cache中被清除来满足内存需要的页个数
%vmeff : 清除页占总扫描页的百分比
3.3. 监控系统交换活动信息
- sar -W 可以提供有关系统内存交换的重要信息,有助于评估系统内存压力和性能状况。当
pswpin
和pswpout
的值较高或持续增长时,可能需要进一步分析和优化系统的内存使用情况,以避免过度的页面交换和性能瓶颈。
sar -W 1 3 # 查看系统交换活动信息,每隔 1s 监控一次,共 3 次
pswpin/s :每s平均发生的进程页面交换到内存的次数
pswpout/s:每s平均发生的进程页面从内存交换出去的次数
- pswpin/s 衡量了进程被从磁盘交换到内存中的频率。较高的值可能意味着系统正经历内存压力,并且需要经常从磁盘加载进程页面到内存中,这可能导致性能下降。
- pswpout/s 表示了进程页面从内存中被交换到磁盘的频率。较高的值可能表示系统内存不足,需要将不常用的进程页面交换到磁盘以释放内存空间。
4. 磁盘监控
4.1. 监控磁盘使用情况
- 通过 sar -d 来监测和统计系统的磁盘活动情况。它提供了关于磁盘I/O操作的信息,包括读取和写入的速率、传输字节数、I/O请求的等待时间等。通过查看这些数据,可以评估磁盘的使用情况、检测性能瓶颈和磁盘故障,并进行必要的优化和调整。
sar -d 1 3 -p # 查看磁盘使用情况,每 1s 监控一次,共 3 次
sar -d 1 3 # 输出情况同上,块设备名显示不同
DEV :块设备名
tps :每秒 I/O 数
rd_sec/s:每秒读取扇区数
wr_sec/s:每秒写入扇区数
avgrq-sz:平均每次 I/O 操作的数据大小(扇区)
avgqu-sz:磁盘请求队列的平均长度(此值越低时,设备利用率较高)
await :I/O 请求队列的平均等待时间(单位 ms)
svctm :I/O 服务处理时间
%util :I/O 请求占 CPU 百分比,比例越大说明越饱和;接近 100% 时表示带宽已经占满
4.2. 监控磁盘 I/O
- sar -b 用于监测磁盘I/O活动情况。它提供了有关硬盘的传输信息,包括传输速率、传输字节数等。
sar -b 1 3 # 查看 I/O 和传输率,每 1s 监控一次,共 3 次
tps :每秒物理设备的 I/O 传输总量
rtps :每秒从物理设备读入的数据总量
wtps :每秒从物理设备写入的数据总量
bread/s :每秒从物理设备读入的数据量(单位 块/s)
bwrtn/s :每秒从物理设备写入的数据量(单位 块/s)
5. 网络监控
sar -n DEV 1 3 # 查看网络情况,每隔 1s 监控一次,共 3 次
-n 关键词如下:
DEV 网卡
EDEV 网卡 (错误)
NFS NFS 客户端
NFSD NFS 服务器
SOCK Sockets (套接字) (v4)
IP IP 流 (v4)
EIP IP 流 (v4) (错误)
ICMP ICMP 流 (v4)
EICMP ICMP 流 (v4) (错误)
TCP TCP 流 (v4)
ETCP TCP 流 (v4) (错误)
UDP UDP 流 (v4)
SOCK6 Sockets (套接字) (v6)
IP6 IP 流 (v6)
EIP6 IP 流 (v6) (错误)
ICMP6 ICMP 流 (v6)
EICMP6 ICMP 流 (v6) (错误)
UDP6 UDP 流 (v6)
IFACE :网卡名
rxpck/s :每秒接收的包
txpck/s :每秒发送的包
rxkB/s :每秒接收的字节数(单位 KB)
txkB/s :每秒发送的字节数(单位 KB)
rxcmp/s :每秒接收的压缩包
txcmp/s :每秒发送的压缩包
rxmcst/s:每秒接收的多播包
6. 历史监控
- 若操作系统存在 sar 命令,那么系统将自动保存 30 天监控情况
- 目录为:/var/log/sa/*,如果没开机则无法监控
- 监控文件以每 10 分钟保存一次
sar -f /var/log/sa/sa04 -u # 查看4号的CPU使用情况
sar -f /var/log/sa/sa04 -r # 查看4号的内存使用情况
sar -f /var/log/sa/sa04 -d # 查看4号的磁盘使用情况
sar -f /var/log/sa/sa04 -b # 查看4号的I/O使用情况
查看其他资源监控只需要使用 sar -f [需要读取的文件] + [参数] 即可
注意:系统每10分钟保存一次,所以即使指定每 1 秒输出一次,也是按每 10 分钟输出一次
7. 总结
sar 是一个比较全面的性能监控命令,分析cpu瓶颈可以根据系统负载情况、cpu利用率和上下文切换次数来判断cpu是否出现瓶颈。如果cpu出现瓶颈后,需要查找影响瓶颈的进程,sar 无法做到,这需要其他命令配合使用(top、pidstat)。查看内存压力可以通过 sar 查看物理内存使用情况、内存分页、交换信息等方式来观察,如果需要查找使用内存最大的进程还是需要 top 或 pidstat 来查看。分析磁盘或网络瓶颈都可以使用 sar,支持磁盘读写、磁盘利用率、网络速率等方式监控。
top 命令的用法:https://blog.csdn.net/m0_61066945/article/details/126452494
pidstat 命令的用法:https://blog.csdn.net/m0_61066945/article/details/126568206