前言:
关于sar命令的解释说明:
sar(System Activity Reporter 系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘 I/O、CPU 效率、内存使用状况、进程活动及 IPC 有关的活动等。
我们可以使用sar命令来获得整个系统性能的报告。这有助于我们定位系统性能的瓶颈,并且有助于我们找出这些烦人的性能问题的解决方法。
Linux 内核维护着一些内部计数器,这些计数器包含了所有的请求及其完成时间和 I/O 块数等信息,sar命令从所有的这些信息中计算出请求的利用率和比例,以便找出瓶颈所在。
sar命令主要的用途是生成某段时间内所有活动的报告,因此必需确保sar命令在适当的时间进行数据采集(而不是在午餐时间或者周末)
原文地址:https://shockerli.net/post/linux-tool-sar/
sysstat工具:
sysstat是 Linux系统中的常用工具包。主要用途是用于观察服务的负载情况,例如CPU和内存的占用率、网络的使用率以及磁盘写入和读取速度等。
sysstat 工具包中包含两类工具:
即时查看工具 | iostat、mpstat、sar |
---|---|
累计统计工具 | sar |
也就是说,sar具有这两种功能。因此,sar是 sysstat 中的核心工具
注意:sar命令来自于 sysstat工具包,如果提示 sar命令不存在,需先安装 sysstat
命令:yum install -y sysstat
命令格式:
用法: sar [ 选项 ] [ <时间间隔> [ <次数> ] ]
主选项和报告:
-b I/O 和传输速率信息状况
-B 分页状况
-d 块设备状况
-I { <中断> | SUM | ALL | XALL }
中断信息状况
-m 电源管理信息状况
-n { <关键词> [,...] | ALL }
网络统计信息
关键词可以是:
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)
-q 队列长度和平均负载
-r 内存利用率
-R 内存状况
-S 交换空间利用率
-u [ ALL ]
CPU 利用率
-v Kernel table 状况
-w 任务创建与系统转换统计信息
-W 交换信息
-y TTY 设备状况
-o {<文件路径>}
将命令结果以二进制格式存放在指定文件
具体使用场景:
1、网络信息统计
sar -n <关键词> [ <时间间隔> [ <次数> ] ]
举例
[root@server ~]# sar -n DEV 3 5
Linux 3.10.0-862.el7.x86_64 (server) 2020年09月16日 _x86_64_ (1 CPU)
20时54分12秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
20时54分15秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
20时54分15秒 ens33 1.34 0.33 0.08 0.06 0.00 0.00 0.00
20时54分15秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
20时54分18秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
20时54分18秒 ens33 1.34 0.33 0.08 0.13 0.00 0.00 0.00
20时54分18秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
20时54分21秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
20时54分21秒 ens33 0.34 0.34 0.02 0.13 0.00 0.00 0.00
20时54分21秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
20时54分24秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
20时54分24秒 ens33 0.33 0.33 0.02 0.13 0.00 0.00 0.00
20时54分24秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
20时54分27秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
20时54分27秒 ens33 0.34 0.34 0.02 0.13 0.00 0.00 0.00
平均时间: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
平均时间: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
平均时间: ens33 0.74 0.33 0.04 0.11 0.00 0.00 0.00
命令中 3 5 表示每3秒钟取 1 次值,一共取 5 次。
命令执行后会列出每个网卡这 5 次取值的平均数据,根据实际情况来确定带宽跑满的网卡名称,默认情况下 eth0 为内网网卡,eth1 为外网网卡
2、CPU使用情况
sar -u [ <时间间隔> [ <次数> ] ]
[root@server ~]# sar -u 2 3
Linux 3.10.0-862.el7.x86_64 (server) 2020年09月16日 _x86_64_ (1 CPU)
20时58分49秒 CPU %user %nice %system %iowait %steal %idle
20时58分51秒 all 0.00 0.00 0.00 0.00 0.00 100.00
20时58分53秒 all 0.00 0.00 0.00 0.00 0.00 100.00
20时58分55秒 all 0.00 0.00 0.50 0.00 0.00 99.50
平均时间: all 0.00 0.00 0.17 0.00 0.00 99.83
命令中 2 3 表示每2秒钟取 1 次值,一共取 3 次
输出项说明:
CPU:all 表示统计信息为所有 CPU 的平均值。
%user:显示在用户级别(application)运行使用 CPU 总时间的百分比
%nice:显示在用户级别,用于nice操作,所占用 CPU 总时间的百分比
%system:在核心级别(kernel)运行所使用 CPU 总时间的百分比
%iowait:显示用于等待I/O操作占用 CPU 总时间的百分比
%steal:管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比
%idle:显示 CPU 空闲时间占用 CPU 总时间的百分比
1. 若 %iowait 的值过高,表示硬盘存在I/O瓶颈
2. 若 %idle 的值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量
3. 若 %idle 的值持续低于1,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU
性能问题排查技巧
怀疑 CPU 存在瓶颈,可用sar -u和sar -q等来查看
怀疑内存存在瓶颈,可用sar -B、sar -r和sar -W等来查看
怀疑 I/O 存在瓶颈,可用sar -b、sar -u和sar -d等来查看
注:个人学习使用,侵权联系删除