一、作用
sar
命令可以监控系统的各项性能指标,包括 CPU、内存、磁盘、网络等。sar
会自动收集相关指标日志,存储在 /var/log/sa/ 目录下,文件名格式为 saXX 和 sarXX,其中 XX 表示日期(例如 sa23 和 sar23 表示当月的 23 号数据),这两个文件的主要区别在于它们的格式和用途。
- saxx文件:原始性能数据,二进制格式,需
sar
命令解析,不可直接阅读。 - sarxx文件:汇总性能报告,文本格式,可直接阅读。
sar 的日志保留时间默认为 28天,可通过修改 /etc/sysconfig/sysstat 文件中的 HISTORY 参数进行控制,修改后重启对应服务 systemctl restart sysstat.service
生效。若没有相关日志文件,说明未安装 sysstat 工具,或服务未启动。yum install sysstat
安装工具并 systemctl start sysstat.service
启动服务即可。
二、使用示例
2.1 CPU 使用率
- 命令:
sar -u 1 5 #查看当前cpu性能,每1秒输出1次,共输出5次 sar -u -f /var/log/sa/sa24 -s 09:00:00 -e 11:00:00 #查看24号9:00-11:00的cpu性能
- 输出字段:
%user
:用户态 CPU 使用率。%nice
:低优先级进程的 CPU 使用率。%system
:内核态 CPU 使用率。%iowait
:等待 I/O 操作的 CPU 时间百分比。%steal
:虚拟化环境中被其他虚拟机占用的 CPU 时间。%idle
:空闲 CPU 时间百分比。
- 阈值:
%user + %system > 70%
:CPU 使用率较高,可能需要优化程序或增加 CPU 资源。%iowait > 5%
:I/O 等待时间较高,可能是磁盘性能瓶颈。%idle < 30%
:系统负载较高,可能需要关注。
2.2 内存使用率
- 命令:
sar -r 1 5 sar -r -f /var/log/sa/sa24 -s 09:00:00 -e 11:00:00
- 输出字段:
kbmemfree
:空闲内存大小(KB)。kbmemused
:已用内存大小(KB)。%memused
:内存使用率。kbbuffers
:缓冲区使用的内存大小(KB)。kbcached
:缓存使用的内存大小(KB)。
- 阈值:
%memused > 80%
:内存使用率较高,可能需要增加内存或优化程序。kbmemfree
持续减少:可能存在内存泄漏。
2.3 Swap 使用率
- 命令:
sar -S 1 5 sar -S -f /var/log/sa/sa24 -s 09:00:00 -e 11:00:00
- 输出字段:
kbswpfree
:空闲 Swap 大小(KB)。kbswpused
:已用 Swap 大小(KB)。%swpused
:Swap 使用率。
- 阈值:
%swpused > 20%
:Swap 使用率较高,说明物理内存不足,可能需要增加内存或优化程序。
2.4 磁盘 I/O
- 命令:
sar -d 1 5 sar -d -f /var/log/sa/sa24 -s 09:00:00 -e 11:00:00
- 输出字段:
tps
:每秒的 I/O 请求数。rd_sec/s
:每秒读取的扇区数。wr_sec/s
:每秒写入的扇区数。%util
:磁盘利用率。
- 阈值:
%util > 80%
:磁盘利用率较高,可能是磁盘性能瓶颈。tps
持续较高:磁盘 I/O 压力较大,可能需要优化程序或升级磁盘。
2.5 网络接口
- 命令:
sar -n DEV 1 5 sar -n DEV -f /var/log/sa/sa24 -s 09:00:00 -e 11:00:00
- 输出字段:
rxpck/s
:每秒接收的数据包数。txpck/s
:每秒发送的数据包数。rxkB/s
:每秒接收的数据量(KB)。txkB/s
:每秒发送的数据量(KB)。
- 阈值:
rxpck/s
或txpck/s
超过网卡带宽的 70%:网络流量较高,可能导致网络延迟。rxkB/s
或txkB/s
接近网络接口带宽:可能需要优化网络配置或升级网络设备。
2.6 系统负载
- 命令:
sar -q 1 5 sar -q -f /var/log/sa/sa24 -s 09:00:00 -e 11:00:00
- 输出字段:
runq-sz
:运行队列长度(等待 CPU 的进程数)。plist-sz
:任务列表中的进程数。ldavg-1
:过去 1 分钟的系统负载。ldavg-5
:过去 5 分钟的系统负载。ldavg-15
:过去 15 分钟的系统负载。
- 阈值:
ldavg-1 > CPU 核心数
:系统负载较高,可能需要增加 CPU 资源或优化程序。runq-sz
持续较高:CPU 资源不足,进程等待时间较长。
2.7 上下文切换
- 命令:
sar -w 1 5 sar -w -f /var/log/sa/sa24 -s 09:00:00 -e 11:00:00
- 输出字段:
cswch/s
:每秒的上下文切换次数。
- 阈值:
cswch/s > 10000
:上下文切换频繁,可能导致 CPU 资源浪费,需要优化程序。
2.8. 分页活动
- 命令:
sar -B 1 5 sar -B -f /var/log/sa/sa24 -s 09:00:00 -e 11:00:00
- 输出字段:
pgpgin/s
:每秒从磁盘读入的页数。pgpgout/s
:每秒写入磁盘的页数。fault/s
:每秒的缺页中断次数。
- 阈值:
pgpgin/s
或pgpgout/s
持续较高:内存不足,导致频繁的页面交换。fault/s
持续较高:可能存在内存瓶颈。
三、与 top 命令对比
sar
和 top
都是 Linux 系统中常用的性能监控工具,但它们的设计目标和使用场景有所不同。以下是它们的优劣势对比:
特性 | sar | top |
---|---|---|
实时监控 | 较弱,主要用于历史数据分析 | 强,适合实时监控 |
历史数据 | 支持,可查看过去的数据 | 不支持 |
监控范围 | 全面(CPU、内存、磁盘、网络等) | 主要关注 CPU 和内存 |
进程级监控 | 较弱 | 强,显示每个进程的详细信息 |
交互性 | 无 | 强,支持交互式操作 |
学习曲线 | 较高,选项较多 | 较低,易于上手 |
系统开销 | 低,后台收集数据 | 较高,频繁刷新可能影响性能 |
依赖服务 | 依赖 sysstat 服务 | 无需额外服务 |