上一篇介绍了sysstat的配置,存储以及sar如何观察CPU负载情况,这一篇介绍如何使用sar分析内存使用情况以及监控磁盘I/O活动情况
上一篇:Linux 系统性能监控工具集sysstat之sar(一)
下一篇:Linux 系统性能监控工具集sysstat之sar(三)完结
(2)分析内存使用趋势
sar -r -f /var/log/sysstat/sa24 -s 10:00:00 -e 11:00:00 #查看24 号10点到11点的内存数据
输出字段:
kbmemfree:空闲物理内存(KB)。
kbavail:可用内存(包括缓存和缓冲,KB)。
kbmemused:已用物理内存(KB)。
%memused:内存使用率百分比。
kbbuffers:内核缓冲区占用的内存(KB)。
kbcached:缓存占用的内存(KB)。
kbcommit:系统当前负载所需内存(KB)。
%commit:kbcommit 占总内存的百分比。
kbactive:活跃内存(正在使用的内存,KB)。
kbinact:非活跃内存(可回收的内存,KB)。
kbdirty:等待写回磁盘的脏数据(KB)。
应用场景:
内存泄漏:若 kbmemfree 持续下降且 kbbuffers 未显著增加,可能应用存在内存泄漏。
缓存效率:高 kbbuffers 表示磁盘缓存有效,减少直接磁盘读写。
内存不足:如果 %memused 持续接近 100%,且 kbmemfree 极低,说明物理内存不足,可能导致频繁使用交换空间(kbswpused)。
缓存有效性:高 kbcached 表示系统有效利用缓存加速磁盘访问;若缓存过低(如接近 0),可能需检查应用程序或调整缓存策略。
交换空间使用:若 kbswpused 持续增长,说明物理内存不足,系统开始使用交换空间(磁盘模拟内存),此时性能会显著下降。
(3)监控磁盘 I/O 活动
sar -d -p -f /var/log/sysstat/sa24 -s 10:00:00 -e 11:00:00 #查看24号10点到11点磁盘活动记录
输出字段:
DEV:设备名称(如 sda 表示第一块物理磁盘,dm-0 表示 LVM 逻辑卷)。
tps:每秒传输次数,即设备每秒处理的 I/O 请求数(包括读+写)。
rkB/s:每秒从设备 读取的数据量(单位:KB/s)。
wkB/s:每秒向设备 写入的数据量(单位:KB/s)。
dkB/s:每秒丢弃的数据量(Discard KB/s,通常与 SSD 的 TRIM 操作相关,机械硬盘为 0)。
areq-sz:平均每个 I/O 请求的 数据大小(单位:KB),计算公式:(rkB/s + wkB/s) / tps。
aqu-sz:平均请求队列长度,即当前等待处理的 I/O 请求数量。高值表示设备存在积压。
await:平均 I/O 请求处理时间(单位:毫秒),包括等待时间和实际处理时间。高值(如 >50ms)可能表示设备性能不足或过载。
%util:设备利用率百分比,即设备处理 I/O 的时间占比。接近 100% 表示设备已达到性能极限(瓶颈)。低值(如 <60%)表示设备空闲较多。
应用场景:
磁盘性能瓶颈:
%util > 90%:设备接近满负荷运行,需检查是否因高 tps 或大 areq-sz 导致。
await > 50ms:请求处理延迟高,可能因磁盘速度慢或队列过长(aqu-sz 高)。
读写负载分析:
rkB/s 远高于 wkB/s:应用以读取操作为主(如数据库查询)。
wkB/s 突增:可能触发了大量数据写入(如日志刷盘、备份操作)。
SSD 健康监控:关注 dkB/s和 %util,异常值可能预示 SSD 寿命或性能下降。
负载分布:分析不同磁盘(如 /dev/sda 和 /dev/sdb)的读写压力是否均衡。
注意问题:
为什么 %util 超过 100%?
在多队列磁盘(如 NVMe SSD)中,%util 可能超过 100%,表示设备并行处理多个请求。
aqu-sz 和 await 的关系是什么?
aqu-sz = tps × await,若 aqu-sz 高且 await 长,说明磁盘响应缓慢。