• 命令 sariostatmpstat 同属 sysstat 软件包下的子命令;
  • 在实际工作中,很少用该命令去查看系统性能和负载,基本上可以使用 sar 命令搞定;
  • 关于命令 iostat 的用法可以参考:Linux 命令之 - iostat
  • 关于命令 mpstat 的用法可以参考:Linux 命令之 - mpstat

命令简介

sar命令是sysstat工具包中的一个命令。sar 是 System Activity Reporter 的缩写,是Linux 系统性能分析工具之一。它能够收集系统的各种性能数据,如 CPU 使用率、内存使用情况、磁盘 I/O 等,并以可读性强的形式进行展示。用户可以利用 sar 命令实时监控系统性能、分析系统负载情况、排查性能问题等。

命令格式

sar 命令用于收集和报告 CPU、内存、网络等系统活动数据。

1
sar [ 选项 ] [ <时间间隔> [ <次数> ] ]

其中:

  • 选项:用于指定 sar 命令的参数和选项。
  • <时间间隔>:指定统计数据的时间间隔,即 sar 命令每次收集统计数据的时间间隔。单位为秒。
  • <次数>:指定 sar 命令收集统计数据的次数。

参数说明

参数 描述 备注
-A 显示所有可用的报告 -
-B 显示内存和交换设备的统计信息 -
-b 显示缓冲区的统计信息 -
-C 显示 CPU 的统计信息 -
-D 显示块设备的统计信息 -
-d 显示块设备和分区的统计信息 -
-F [ MOUNT ] 显示文件系统的统计信息 可以指定挂载点
-H 以人类可读的格式显示结果 -
-h 显示帮助信息 -
-p 显示页交换的统计信息 -
-r [ ALL ] 显示内存的统计信息 可选参数 ALL 显示全部信息
-S 显示交换空间的统计信息 -
-t 显示任务(进程)的统计信息 -
-u [ ALL ] 显示 CPU 使用率的统计信息 可选参数 ALL 显示全部信息
-V 显示 sar 的版本信息 -
-v 显示内核的版本信息 -
-W 显示交换设备的统计信息 -
-w 显示任务(进程)和 I/O 子系统的统计信息 -
-y 显示终端设备的统计信息 -
-z 显示客户端的统计信息 -
-I [ SUM | ALL ] 显示中断的统计信息 可选参数 SUM 显示总和,ALL 显示全部
-P { | ALL } 显示指定 CPU 的统计信息 可以指定 CPU 列表或 ALL
-m { [,…] | ALL } 显示指定关键词的统计信息 可以指定关键词列表或 ALL
-n { [,…] | ALL } 显示指定关键词的网络统计信息 可以指定关键词列表或 ALL
-q [ [,…] | ALL ] 显示指定关键词的队列统计信息 可以指定关键词列表或 ALL
–dev= 指定要统计的设备列表 -
–fs= 指定要统计的文件系统列表 -
–iface= 指定要统计的网络接口列表 -
–int= 指定要统计的中断列表 -
–dec={ 0 | 1 | 2 } 指定输出结果的精度 可选值为 0、1、2
–help 显示帮助信息 -
–human 以人类可读的格式显示结果 -
–pretty 以美观的格式显示结果 -
–sadc 从系统启动开始连续输出数据 -
-j { SID | ID | LABEL | PATH | UUID | … } 指定输出结果的格式 可选参数为 SID、ID、LABEL、PATH、UUID 等
-f [ ] 读取指定文件中的数据 可选参数为文件名
-o [ ] 输出结果到指定文件中 可选参数为文件名
-[0-9]+ 指定输出的行数 数字表示输出行数
-i 指定统计信息的时间间隔 参数为时间间隔,单位为秒
-s [ hh:mm[:ss] ] 指定统计信息的起始时间 参数为起始时间,格式为 hh:mm[:ss]
-e [ hh:mm[:ss] ] 指定统计信息的结束时间 参数为结束时间,格式为 hh:mm[:ss]

命令实例

基本用法

1.查看 CPU 使用率

1
2
3
4
5
6
7
8
9
# 动态查看 CPU 使用率,每秒1次,总共打印3次。如果不写后面的 3, 则每秒打印一次,直到用户按 ctrl + C 终止
leazhi@leazhi-ubuntu2310:~/Templates$ sar -u 1 3
Linux 6.5.0-25-generic (leazhi-ubuntu2310) 03/13/2024 _x86_64_ (32 CPU)

10:05:11 AM CPU %user %nice %system %iowait %steal %idle
10:05:12 AM all 3.12 0.00 0.69 0.00 0.00 96.19
10:05:13 AM all 3.77 0.00 8.46 0.06 0.00 87.71
10:05:14 AM all 2.92 0.00 0.69 0.06 0.00 96.30
平均时间: all 3.27 0.00 3.27 0.04 0.00 93.42

2.查看内存使用率

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 动态查看 CPU 使用率,每秒1次,总共打印2次。如果不写后面的 2, 则每秒打印一次,直到用户按 ctrl + C 终止
leazhi@leazhi-ubuntu2310:~/Templates$ sar -r 1 2
Linux 6.5.0-25-generic (leazhi-ubuntu2310) 03/13/2024 _x86_64_ (32 CPU)

10:07:34 AM kbmemfree kbavail kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
10:07:35 AM 110851508 117918972 11417892 8.67 679904 7614180 57066392 41.99 12773184 6216464 104
10:07:36 AM 110855616 117923080 11411608 8.67 679904 7616356 56914136 41.88 12775636 6218652 88
平均时间: 110853562 117921026 11414750 8.67 679904 7615268 56990264 41.94 12774410 6217558 96

# 加 -h 参数,以人性化方式显示使用率:
leazhi@leazhi-ubuntu2310:~/Templates$ sar -r -h 1 2
Linux 6.5.0-25-generic (leazhi-ubuntu2310) 03/13/2024 _x86_64_ (32 CPU)

10:08:50 AM kbmemfree kbavail kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
10:08:51 AM 105.8G 112.5G 10.8G 8.6% 664.0M 7.3G 54.2G 41.9% 12.1G 5.9G 328.0k
10:08:52 AM 105.8G 112.5G 10.8G 8.6% 664.0M 7.3G 54.2G 41.9% 12.1G 5.9G 228.0k
平均时间: 105.8G 112.5G 10.8G 8.6% 664.0M 7.3G 54.2G 41.9% 12.1G 5.9G 278.0k

# 查看交换内存情况
leazhi@leazhi-ubuntu2310:~/Templates$ sar -S -h 1 2
Linux 6.5.0-25-generic (leazhi-ubuntu2310) 03/13/2024 _x86_64_ (32 CPU)

10:10:41 AM kbswpfree kbswpused %swpused kbswpcad %swpcad
10:10:42 AM 4.0G 0.0k 0.0% 0.0k 0.0%
10:10:43 AM 4.0G 0.0k 0.0% 0.0k 0.0%
平均时间: 4.0G 0.0k 0.0% 0.0k 0.0%

3.查看磁盘 I/O 情况

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

leazhi@leazhi-ubuntu2310:~/Templates$ sar -d -h 1 2
Linux 6.5.0-25-generic (leazhi-ubuntu2310) 03/13/2024 _x86_64_ (32 CPU)

10:11:49 AM tps rkB/s wkB/s dkB/s areq-sz aqu-sz await %util DEV
10:11:50 AM 0.00 0.0k 0.0k 0.0k 0.0k 0.00 0.00 0.0% loop0
10:11:50 AM 0.00 0.0k 0.0k 0.0k 0.0k 0.00 0.00 0.0% loop1
10:11:50 AM 0.00 0.0k 0.0k 0.0k 0.0k 0.00 0.00 0.0% loop2
10:11:50 AM 0.00 0.0k 0.0k 0.0k 0.0k 0.00 0.00 0.0% loop3
10:11:50 AM 0.00 0.0k 0.0k 0.0k 0.0k 0.00 0.00 0.0% loop4
10:11:50 AM 0.00 0.0k 0.0k 0.0k 0.0k 0.00 0.00 0.0% loop5
10:11:50 AM 0.00 0.0k 0.0k 0.0k 0.0k 0.00 0.00 0.0% loop6
10:11:50 AM 0.00 0.0k 0.0k 0.0k 0.0k 0.00 0.00 0.0% loop7
10:11:50 AM 0.00 0.0k 0.0k 0.0k 0.0k 0.00 0.00 0.0% nvme0n1
10:11:50 AM 0.00 0.0k 0.0k 0.0k 0.0k 0.00 0.00 0.0% nvme1n1
10:11:50 AM 0.00 0.0k 0.0k 0.0k 0.0k 0.00 0.00 0.0% nvme2n1

10:11:50 AM tps rkB/s wkB/s dkB/s areq-sz aqu-sz await %util DEV
10:11:51 AM 0.00 0.0k 0.0k 0.0k 0.0k 0.00 0.00 0.0% loop0
10:11:51 AM 0.00 0.0k 0.0k 0.0k 0.0k 0.00 0.00 0.0% loop1
10:11:51 AM 0.00 0.0k 0.0k 0.0k 0.0k 0.00 0.00 0.0% loop2
10:11:51 AM 0.00 0.0k 0.0k 0.0k 0.0k 0.00 0.00 0.0% loop3
10:11:51 AM 0.00 0.0k 0.0k 0.0k 0.0k 0.00 0.00 0.0% loop4
10:11:51 AM 0.00 0.0k 0.0k 0.0k 0.0k 0.00 0.00 0.0% loop5
10:11:51 AM 0.00 0.0k 0.0k 0.0k 0.0k 0.00 0.00 0.0% loop6
10:11:51 AM 0.00 0.0k 0.0k 0.0k 0.0k 0.00 0.00 0.0% loop7
10:11:51 AM 26.00 0.0k 332.0k 0.0k 12.8k 0.06 2.27 5.2% nvme0n1
10:11:51 AM 0.00 0.0k 0.0k 0.0k 0.0k 0.00 0.00 0.0% nvme1n1
10:11:51 AM 0.00 0.0k 0.0k 0.0k 0.0k 0.00 0.00 0.0% nvme2n1

平均时间: tps rkB/s wkB/s dkB/s areq-sz aqu-sz await %util DEV
平均时间: 0.00 0.0k 0.0k 0.0k 0.0k 0.00 0.00 0.0% loop0
平均时间: 0.00 0.0k 0.0k 0.0k 0.0k 0.00 0.00 0.0% loop1
平均时间: 0.00 0.0k 0.0k 0.0k 0.0k 0.00 0.00 0.0% loop2
平均时间: 0.00 0.0k 0.0k 0.0k 0.0k 0.00 0.00 0.0% loop3
平均时间: 0.00 0.0k 0.0k 0.0k 0.0k 0.00 0.00 0.0% loop4
平均时间: 0.00 0.0k 0.0k 0.0k 0.0k 0.00 0.00 0.0% loop5
平均时间: 0.00 0.0k 0.0k 0.0k 0.0k 0.00 0.00 0.0% loop6
平均时间: 0.00 0.0k 0.0k 0.0k 0.0k 0.00 0.00 0.0% loop7
平均时间: 13.00 0.0k 166.0k 0.0k 12.8k 0.03 2.27 2.6% nvme0n1
平均时间: 0.00 0.0k 0.0k 0.0k 0.0k 0.00 0.00 0.0% nvme1n1
平均时间: 0.00 0.0k 0.0k 0.0k 0.0k 0.00 0.00 0.0% nvme2n1

4.查看网络流量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
leazhi@leazhi-ubuntu2310:~/Templates$ sar -n DEV 1 3 
Linux 6.5.0-25-generic (leazhi-ubuntu2310) 03/13/2024 _x86_64_ (32 CPU)

10:13:21 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
10:13:22 AM lo 36.00 36.00 5.01 5.01 0.00 0.00 0.00 0.00
10:13:22 AM eno2 25.00 11.00 6.29 0.99 0.00 0.00 8.00 0.01
10:13:22 AM wlp0s20f3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
10:13:22 AM br0 23.00 11.00 5.85 0.99 0.00 0.00 7.00 0.00
10:13:22 AM virbr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
10:13:22 AM vnet0 0.00 9.00 0.00 2.05 0.00 0.00 0.00 0.00
10:13:22 AM vnet1 0.00 9.00 0.00 2.05 0.00 0.00 0.00 0.00
10:13:22 AM docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
10:13:22 AM enxe2925c0465ea 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

10:13:22 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
10:13:23 AM lo 8.00 8.00 0.47 0.47 0.00 0.00 0.00 0.00
10:13:23 AM eno2 16.00 2.00 2.81 0.37 0.00 0.00 12.00 0.00
10:13:23 AM wlp0s20f3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
10:13:23 AM br0 16.00 2.00 2.59 0.37 0.00 0.00 12.00 0.00
10:13:23 AM virbr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
10:13:23 AM vnet0 0.00 14.00 0.00 2.42 0.00 0.00 0.00 0.00
10:13:23 AM vnet1 0.00 14.00 0.00 2.42 0.00 0.00 0.00 0.00
10:13:23 AM docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
10:13:23 AM enxe2925c0465ea 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

10:13:23 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
10:13:24 AM lo 64.00 64.00 7.77 7.77 0.00 0.00 0.00 0.00
10:13:24 AM eno2 27.00 14.00 5.02 1.23 0.00 0.00 8.00 0.00
10:13:24 AM wlp0s20f3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
10:13:24 AM br0 25.00 14.00 4.55 1.23 0.00 0.00 7.00 0.00
10:13:24 AM virbr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
10:13:24 AM vnet0 0.00 8.00 0.00 0.55 0.00 0.00 0.00 0.00
10:13:24 AM vnet1 0.00 8.00 0.00 0.55 0.00 0.00 0.00 0.00
10:13:24 AM docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
10:13:24 AM enxe2925c0465ea 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

平均时间: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
平均时间: lo 36.00 36.00 4.42 4.42 0.00 0.00 0.00 0.00
平均时间: eno2 22.67 9.00 4.70 0.87 0.00 0.00 9.33 0.00
平均时间: wlp0s20f3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
平均时间: br0 21.33 9.00 4.33 0.87 0.00 0.00 8.67 0.00
平均时间: virbr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
平均时间: vnet0 0.00 10.33 0.00 1.67 0.00 0.00 0.00 0.00
平均时间: vnet1 0.00 10.33 0.00 1.67 0.00 0.00 0.00 0.00
平均时间: docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
平均时间: enxe2925c0465ea 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

扩展用法

1.定期执行性能监控

可以使用 cronsystemd 定期执行 sar 命令,收集系统性能数据。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 每 10 分钟执行一次 sar 命令,保存结果到文件
0 */10 * * * /usr/bin/sar -A >/var/log/sar/sar.`date +\%Y\%m\%d\%H\%M` &

# 使用 systemd 定时器每小时执行一次 sar 命令
[Unit]
Description=System Activity Data Collection

[Timer]
OnCalendar=hourly
Persistent=true

[Install]
WantedBy=timers.target

[Service]
Type=oneshot
ExecStart=/usr/bin/sar -A >/var/log/sar/sar.`date +\%Y\%m\%d\%H\%M`

2.分析性能数据

使用 sar 命令可以分析已保存的性能数据文件。

1
2
3
4
5
# 显示 CPU 利用率报告
sar -u -f /var/log/sar/sar.202305011200

# 分析内存利用率
sar -r -f /var/log/sar/sar.202305011200

高级用法

1.生成 HTML 报告

可以使用 isag 工具生成 HTML 格式的性能报告,更直观地展示数据。

1
2
3
4
5
# 安装 isag 工具
yum install isag

# 生成 HTML 报告
isag /var/log/sar/sar.202305011200

2.进程监控

pidstat 命令可以监控特定进程的 CPU、内存等资源使用情况。

1
2
3
4
5
# 监控进程 1234 的 CPU 和内存使用情况
pidstat -u -r -p 1234

# 监控所有进程的 I/O 活动
pidstat -d

3.使用 sar 命令监控系统性能

1
2
# 每隔 5 秒收集一次 CPU 使用率数据并绘制趋势图
while true; do sar -

通过以上实例和扩展用法,相信你已经对 sysstat 工具集有了更深入的了解。它提供了多个强大的命令,可以全面监控 Linux 系统的资源利用情况,对于系统性能优化和故障排查非常有帮助。如果你还有任何疑问或需要进一步探讨,欢迎随时向我提出。