系统活动报告器 :sar 优化性能 | 解读系统运行状态
sar:系统活动报告器
sar
是 System Activity Reporter 的缩写,是一个系统性能监视工具,用于收集、报告以及分析系统的活动信息。能够收集系统各种资源的使用情况,如CPU利用率、内存使用、磁盘I/O等,并将这些信息保存在文件中,供后续分析和监视使用。
sar
能够提供关于系统资源的历史信息,对于系统性能分析和故障排除非常有用。通过预先设置的时间间隔,定期地记录系统的活动状态,并将数据保存在指定的文件中,这样就可以在需要的时候进行查看和分析。
sar
包含在 sysstat
软件包中。通过命令行可以调用 sar
监视查看资源历史数据,还可以分析和比较不同时间段的数据,从而了解系统在不同时间的性能状况。
::: hljs-center
:::
起源 | 介绍
最初由 Solbourne Computer 公司开发,用于 SunOS 操作系统。随后被移植到多个 UNIX 和类 UNIX 操作系统上,包括 Linux。
sar
主要基于在系统上运行的后台守护进程,守护进程定期收集系统的性能指标数据。数据可以通过配置文件来控制收集的频率和种类。
默认情况下,sar每隔(10分钟)收集一次数据。
sar 工作流程:
- 数据收集:sar会在后台周期性地收集系统性能数据,比如CPU使用率、内存利用率、磁盘I/O、网络活动等。
- 数据存储:收集到的数据以二进制或文本文件的形式存储在指定的位置,默认
/var/log/sa
目录下。 - 报告生成:sar命令来生成报告,根据需要查看历史性能数据。
sar 的力量
sar
收集的系统统计信息包括:
- 输入/输出以及传输速率统计信息(全局、每个设备、每个分区和每个网络文件系统);
- CPU 统计信息(全局和每个 CPU),包括对虚拟化体系结构的支持;
- 内存、大页和交换空间利用率统计信息;
- 虚拟内存、分页和故障统计信息;
- 流程创建活动;
- 中断统计信息(全局、每个 CPU 和每个中断,包括潜在的 APIC 中断源、硬件和软件中断);
- 广泛的网络统计信息:网络接动(每秒接收和传输的数据包数和 kB 数等),包括网络设备的故障;基于SNMPv2标准的IP、TCP、ICMP和UDP协议的- 网络流量统计;支持 IPv6 相关协议;
- 光纤通道流量统计;
- 基于软件的网络处理(softnet)统计信息;
- NFS 服务器和客户端活动;
- 套接字统计信息;
- 运行队列和系统负载统计信息;
- 内核内部表利用率统计信息;
- 交换统计;
- TTY 设备活动;
- 电源管理统计信息(瞬时和平均 CPU 时钟频率、风扇速度、设备温度、电压输入);
- 插入系统的 USB 设备;
- 文件系统利用率(索引节点和块);
- 压力失速信息统计;
基本语法
sar [选项] [时间间隔] [次数]
选项
:指定要获取的性能数据,比如-u
用于CPU使用率,-r
用于内存使用情况等。时间间隔
:表示每次采样的时间间隔。次数
:表示执行 sar 命令的次数,即采样的次数。
sar
还支持许多其他选项和标志,允许你筛选特定时间段的数据、将数据保存到文件中、显示历史数据等。
常用选项
-u
:显示CPU使用情况。-r
:显示内存的使用情况。-b
:显示磁盘I/O统计信息。-n
:显示网络统计信息。-q
:显示负载统计信息。-P
:显示系统中每个CPU的统计信息。-A
:显示系统所有可用的报告。
此外,还可以使用以下参数:
-f
:指定历史文件分析已记录的数据。-s
和-e
:指定开始和结束时间。-o
:将数据保存到文件中。-p
:显示指定 PID 的数据。-h
:显示帮助信息。-c
: 用于指定要发送的命令,-c ls /root
- #
时间间隔
:表示数据收集的时间间隔。例如,-u 5
表示每5秒收集一次CPU使用情况。 - #
次数
:表示数据收集的次数。例如,-u 5 10
表示每5秒收集一次CPU使用情况,共收集10次。
语法示例
-
显示CPU使用情况:
sar -u
-
显示磁盘I/O统计信息:
sar -b
-
显示网络统计信息:
sar -n
-
指定时间间隔和次数:
sar -u 5 10
sar命令执行后,会显示收集的性能数据。此外,sar的输出也可以重定向到文件进行保存以供日后分析
sar -u > cpu_usage.txt
数据收集
- 性能监控:收集 CPU、内存、磁盘 I/O、网络等资源的使用情况。
- 数据记录:周期性记录系统活动数据,并保存为文件以供后续分析。
- 时间间隔设置:用户可以设置收集数据的时间间隔,从而灵活控制数据的采集频率。
- 历史数据比较:允许比较不同时间段的数据,帮助了解系统性能的变化。
sar
,可以监视系统性能的变化,识别潜在的性能问题,并根据历史数据做出调整和优化,确保系统运行最佳状态。
sar命令的高级功能和用法允许更深入地分析系统性能,包括定时收集、报告生成以及与其他工具的结合等。
定时收集
可以使用crontab或其他定时任务工具设置sar命令周期性地收集系统性能数据,保存到文件中进行分析。
报告生成
sar命令生成报告,将性能数据整理为易读的格式。结合选项 -f
和 -o
来读取之前保存的数据文件并生成报告:
sar -f /var/log/sa/sar -n DEV > network_report.txt
数据存储
sar命令收集的数据存储在指定的系统日志目录(默认 /var/log/sa/
)中。
报告示例
使用sar 和 awk 结合,提取系统负载信息:
#!/bin/bash
# 收集系统活动数据
sar -q 1 5 > system_load.txt # 每秒采样一次,共采样5次,保存到文件
# 使用 awk 分析并提取数据
awk '/Average:/ {print "Average load: "$4}' system_load.txt # 提取平均负载信息
awk '/CPU/ {print "CPU idle percentage: "$8}' system_load.txt # 提取CPU空闲百分比
# 删除临时文件
rm system_load.txt
示例释义:
- 使用
sar -q 1 5 > system_load.txt
命令采集系统活动数据。每秒采集一次,共采集5次,将结果保存到名为system_load.txt
的文件中。
详细输出:
Linux 5.4.0-70-generic (hostname) 07/10/21 _x86_64_ (4 CPU)
12:00:01 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
12:00:02 AM 1 120 0.01 0.03 0.00 0
12:00:03 AM 1 120 0.01 0.03 0.00 0
12:00:04 AM 1 120 0.01 0.03 0.00 0
12:00:05 AM 1 120 0.01 0.03 0.00 0
Average: 1 120 0.01 0.03 0.00 0
这里是每秒采集一次的系统负载情况,包括 runq-sz
(运行队列长度)、plist-sz
(进程列表长度)和 ldavg-1
、ldavg-5
、ldavg-15
(1分钟、5分钟和15分钟的平均负载)以及 blocked
(被阻塞的进程数)等信息。最后一行是这五次采样的平均值。
这些指标提供系统负载和进程等待情况的重要信息,有助于评估系统的性能和稳定性。
2. 使用 awk
命令分析 system_load.txt
文件提取所需的数据。
3. awk '/Average:/ {print "Average load: "$4}' system_load.txt
提取平均负载信息
4. awk '/CPU/ {print "CPU idle percentage: "$8}' system_load.txt
提取CPU空闲百分比。
5. 最后, rm system_load.txt
删除文件。
场景
- 收集数据:收集系统活动数据。
- 分析和比较:对数据进行分析和比较。
- 监视性能:定期查看和监视系统活动文件,了解系统性能变化。
- 性能调优:帮助系统管理员优化系统性能,发现系统瓶颈并进行优化。
- 故障排查:通过历史性能数据帮助排查问题并进行故障排除。
- 资源规划:根据历史数据制定资源规划和管理策略。
总结
sar
是一款强大的系统性能监视工具,通过收集和记录系统的活动信息,展示系统在不同时间段的性能数据,帮助我们更好的了解系统的性能状况并进行问题排查。对于系统性能分析和故障排除都具有重要作用。因其提供了丰富的系统性能数据和监控能力而受到青睐。
sar
在几乎所有主流的 Linux 发行版中都有支持,并且是轻量级的监控工具,不会对系统性能造成很大负担。
参考链接:
https://github.com/sysstat/sysstat
http://pagesperso-orange.fr/sebastien.godard/
喜欢的话,请收藏+关注~
万一有趣的事还在后头呢~
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!