Linux 系统性能监控工具集sysstat之sar(二)

上一篇介绍了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 长,说明磁盘响应缓慢。

原文链接:,转发请注明来源!