一、sar工具介绍
sar 命令很强大,是分析系统性能的重要工具之一,通过该命令可以全面地获取系统的 CPU、运行队列、磁盘读写(I/O)、分区(交换区)、内存、CPU 中断和网络等性能数据。
二、检查本地系统环境
1.检查系统版本
[root@docker ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
2.检查系统内核版本
[root@docker ~]# uname -r
3.10.0-957.el7.x86_64
三、安装sar工具
1.检查yum仓库状态
检查yum仓库的各镜像源状态
[root@docker yum.repos.d]# yum repolist all |grep enable
base/7/x86_64 CentOS-7 - Base enabled: 10,072
docker-ce-stable/7/x86_64 Docker CE Stable - x86_64 enabled: 210
extras/7/x86_64 CentOS-7 - Extras enabled: 515
updates/7/x86_64 CentOS-7 - Updates enabled: 4,734
2.安装sar
sar的软件包名称为sysstat,直接使用yum安装即可。
[root@docker yum.repos.d]# yum -y install sysstat
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.bupt.edu.cn
* extras: mirrors.bupt.edu.cn
* updates: mirrors.bupt.edu.cn
Resolving Dependencies
--> Running transaction check
---> Package sysstat.x86_64 0:10.1.5-20.el7_9 will be installed
--> Processing Dependency: libsensors.so.4()(64bit) for package: sysstat-10.1.5-20.el7_9.x86_64
--> Running transaction check
---> Package lm_sensors-libs.x86_64 0:3.4.0-8.20160601gitf9185e5.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
====================================================================================================================================================
Package Arch Version Repository Size
====================================================================================================================================================
Installing:
sysstat x86_64 10.1.5-20.el7_9 updates 315 k
Installing for dependencies:
lm_sensors-libs x86_64 3.4.0-8.20160601gitf9185e5.el7 base 42 k
Transaction Summary
====================================================================================================================================================
Install 1 Package (+1 Dependent package)
Total download size: 357 k
Installed size: 1.2 M
Downloading packages:
(1/2): lm_sensors-libs-3.4.0-8.20160601gitf9185e5.el7.x86_64.rpm | 42 kB 00:00:00
(2/2): sysstat-10.1.5-20.el7_9.x86_64.rpm | 315 kB 00:00:00
----------------------------------------------------------------------------------------------------------------------------------------------------
Total 1.3 MB/s | 357 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Warning: RPMDB altered outside of yum.
** Found 2 pre-existing rpmdb problem(s), 'yum check' output follows:
automake-1.13.4-3.el7.noarch has missing requires of autoconf >= ('0', '2.65', None)
libtool-2.4.2-22.el7_3.x86_64 has missing requires of autoconf
Installing : lm_sensors-libs-3.4.0-8.20160601gitf9185e5.el7.x86_64 1/2
Installing : sysstat-10.1.5-20.el7_9.x86_64 2/2
Verifying : sysstat-10.1.5-20.el7_9.x86_64 1/2
Verifying : lm_sensors-libs-3.4.0-8.20160601gitf9185e5.el7.x86_64 2/2
Installed:
sysstat.x86_64 0:10.1.5-20.el7_9
Dependency Installed:
lm_sensors-libs.x86_64 0:3.4.0-8.20160601gitf9185e5.el7
Complete!
四、sar命令的基本语法
1.sar命令的帮助
在Linux系统中,查看sar命令的help帮助信息。
[root@docker yum.repos.d]# sar -h
Usage: sar [ options ] [ <interval> [ <count> ] ]
Main options and reports:
-b I/O and transfer rate statistics
-B Paging statistics
-d Block device statistics
-F [ MOUNT ]
Filesystems statistics
-H Hugepages utilization statistics
-I { <int> | SUM | ALL | XALL }
Interrupts statistics
-m { <keyword> [,...] | ALL }
Power management statistics
Keywords are:
CPU CPU instantaneous clock frequency
FAN Fans speed
FREQ CPU average clock frequency
IN Voltage inputs
TEMP Devices temperature
USB USB devices plugged into the system
-n { <keyword> [,...] | ALL }
Network statistics
Keywords are:
DEV Network interfaces
EDEV Network interfaces (errors)
NFS NFS client
NFSD NFS server
SOCK Sockets (v4)
IP IP traffic (v4)
EIP IP traffic (v4) (errors)
ICMP ICMP traffic (v4)
EICMP ICMP traffic (v4) (errors)
TCP TCP traffic (v4)
ETCP TCP traffic (v4) (errors)
UDP UDP traffic (v4)
SOCK6 Sockets (v6)
IP6 IP traffic (v6)
EIP6 IP traffic (v6) (errors)
ICMP6 ICMP traffic (v6)
EICMP6 ICMP traffic (v6) (errors)
UDP6 UDP traffic (v6)
-q Queue length and load average statistics
-r Memory utilization statistics
-R Memory statistics
-S Swap space utilization statistics
-u [ ALL ]
CPU utilization statistics
-v Kernel table statistics
-w Task creation and system switching statistics
-W Swapping statistics
-y TTY device statistics
2.sar命令选项的解释
sar命令常用选项的解释
-A:显示所有的报告信息;
-b:显示I/O速率;
-B:显示换页状态;
-c:显示进程创建活动;
-d:显示每个块设备的状态;
-e:设置显示报告的结束时间;
-f:从指定文件提取报告;
-i:设状态信息刷新的间隔时间;
-n: 报告网络统计信息。
-P:报告每个CPU的状态;
-R:显示内存状态;
-u:显示CPU利用率;
-v:显示索引节点,文件和其他内核表的状态;
-w:显示交换分区状态;
-x:显示给定进程的状态。
五、sar工具的日常基本使用
1.显示系统内核信息
显示索引节点,文件和其他内核表的状态。
[root@docker yum.repos.d]# sar -v
Linux 3.10.0-957.el7.x86_64 (docker) 03/07/2023 _x86_64_ (4 CPU)
2.统计cpu的使用情况
如果想要查看系统 CPU 的整体负载状况,每 5 秒统计一次,统计 10 次,可以执行如下命令:
[root@docker yum.repos.d]# sar -u 5 10
Linux 3.10.0-957.el7.x86_64 (docker) 03/07/2023 _x86_64_ (4 CPU)
07:48:06 PM CPU %user %nice %system %iowait %steal %idle
07:48:11 PM all 0.00 0.00 0.00 0.00 0.00 100.00
07:48:16 PM all 0.00 0.00 0.00 0.05 0.00 99.95
07:48:21 PM all 0.00 0.00 0.05 0.00 0.00 99.95
07:48:26 PM all 0.05 0.00 0.00 0.00 0.00 99.95
07:48:31 PM all 0.00 0.00 0.00 0.00 0.00 100.00
07:48:36 PM all 0.00 0.00 0.00 0.00 0.00 100.00
07:48:41 PM all 0.00 0.00 0.05 0.00 0.00 99.95
07:48:46 PM all 0.00 0.00 0.00 0.00 0.00 100.00
07:48:51 PM all 0.00 0.00 0.00 0.00 0.00 100.00
07:48:56 PM all 0.00 0.00 0.05 0.00 0.00 99.95
Average: all 0.01 0.00 0.02 0.01 0.00 99.97
%user:用于表示用户模式下消耗的 CPU 时间的比例;
%nice:通过 nice 改变了进程调度优先级的进程,在用户模式下消耗的 CPU 时间的比例;
%system:系统模式下消耗的 CPU 时间的比例;
%iowait:CPU 等待磁盘 I/O 导致空闲状态消耗的时间比例;
%steal:利用 Xen 等操作系统虚拟化技术,等待其它虚拟 CPU 计算占用的时间比例;
%idle:CPU 空闲时间比例。
3.统计系统磁盘的读写性能
如果需要统计磁盘的性能状况,每5秒统计一次,统计6次,可使用以下命令:
sar -d 5 6
[root@docker yum.repos.d]# sar -d 5 6
Linux 3.10.0-957.el7.x86_64 (docker) 03/07/2023 _x86_64_ (4 CPU)
07:56:46 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
07:56:51 PM dev11-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:56:51 PM dev8-0 0.40 0.00 2.80 7.00 0.05 131.00 131.00 5.24
07:56:51 PM dev253-0 0.20 0.00 2.80 14.00 0.05 262.00 262.00 5.24
07:56:51 PM dev253-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:56:51 PM dev253-2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:56:51 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
07:56:56 PM dev11-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:56:56 PM dev8-0 0.20 0.00 1.60 8.00 0.01 37.00 37.00 0.74
07:56:56 PM dev253-0 0.20 0.00 1.60 8.00 0.01 37.00 37.00 0.74
07:56:56 PM dev253-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:56:56 PM dev253-2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:56:56 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
07:57:01 PM dev11-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:57:01 PM dev8-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:57:01 PM dev253-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:57:01 PM dev253-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:57:01 PM dev253-2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:57:01 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
07:57:06 PM dev11-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:57:06 PM dev8-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:57:06 PM dev253-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:57:06 PM dev253-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:57:06 PM dev253-2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:57:06 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
07:57:11 PM dev11-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:57:11 PM dev8-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:57:11 PM dev253-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:57:11 PM dev253-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:57:11 PM dev253-2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:57:11 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
07:57:16 PM dev11-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:57:16 PM dev8-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:57:16 PM dev253-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:57:16 PM dev253-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:57:16 PM dev253-2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
Average: dev11-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: dev8-0 0.10 0.00 0.73 7.33 0.01 99.67 99.67 1.00
Average: dev253-0 0.07 0.00 0.73 11.00 0.01 149.50 149.50 1.00
Average: dev253-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: dev253-2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
tps:每秒从物理磁盘 I/O 的次数。注意,多个逻辑请求会被合并为一个 I/O 磁盘请求,一次传输的大小是不确定的;
rd_sec/s:每秒读扇区的次数;
wr_sec/s:每秒写扇区的次数;
avgrq-sz:平均每次设备 I/O 操作的数据大小(扇区);
avgqu-sz:磁盘请求队列的平均长度;
await:从请求磁盘操作到系统完成处理,每次请求的平均消耗时间,包括请求队列等待时间,单位是毫秒(1 秒=1000 毫秒);
svctm:系统处理每次请求的平均时间,不包括在请求队列中消耗的时间;
%util:I/O 请求占 CPU 的百分比,比率越大,说明越饱和。
4.统计内存的使用情况
想要查看系统内存使用情况,每隔4秒统计一次,统计3次:
[root@docker yum.repos.d]# sar -r 4 3
Linux 3.10.0-957.el7.x86_64 (docker) 03/07/2023 _x86_64_ (4 CPU)
08:00:29 PM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
08:00:33 PM 536796 1344960 71.47 3140 905316 1223900 30.76 597084 557088 4
08:00:37 PM 536796 1344960 71.47 3140 905316 1223900 30.76 597092 557088 4
08:00:41 PM 536796 1344960 71.47 3140 905316 1223900 30.76 597092 557088 4
Average: 536796 1344960 71.47 3140 905316 1223900 30.76 597089 557088 4
kbmemfree:这个值和free命令中的free值基本一致,所以它不包括buffer和cache的空间
kbmemused:这个值和free命令中的used值基本一致,所以它包括buffer和cache的空间
%memused:这个值是kbmemused和内存总量(不包括swap)的一个百分比
kbbuffers和kbcached:这两个值就是free命令中的buffer和cache
kbcommit:保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap)
%commit:这个值是kbcommit与内存总量(包括swap)的一个百分比
5.统计网络的使用情况
sar -n { DEV | EDEV | NFS | NFSD | SOCK | ALL },sar 提供六种不同的语法选项来显示网络信息。
DEV 显示网络接口信息。
EDEV 显示关于网络错误的统计数据。
NFS 统计活动的NFS客户端的信息。
NFSD 统计NFS服务器的信息。
SOCK 显示套接字信息。
ALL 显示所有5个开关,它们可以单独或者一起使用。
统计网络接口的情况,每隔10秒统计一次,统计三次,可使用以下命令:
[root@docker yum.repos.d]# sar -n DEV 10 3
Linux 3.10.0-957.el7.x86_64 (docker) 03/07/2023 _x86_64_ (4 CPU)
08:04:17 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
08:04:27 PM br-3944f4a2d80c 0.00 0.00 0.00 0.00 0.00 0.00 0.00
08:04:27 PM br-6f43f91e4cf7 0.00 0.00 0.00 0.00 0.00 0.00 0.00
08:04:27 PM br-cb2953f35dc8 0.00 0.00 0.00 0.00 0.00 0.00 0.00
08:04:27 PM eth0 2.30 0.50 0.28 0.05 0.00 0.00 0.00
08:04:27 PM lo 0.10 0.10 0.01 0.01 0.00 0.00 0.00
08:04:27 PM br-c468faf400ff 0.00 0.00 0.00 0.00 0.00 0.00 0.00
08:04:27 PM docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
08:04:27 PM vethfe0e4d1 0.00 0.00 0.00 0.00 0.00 0.00 0.00
08:04:27 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
08:04:37 PM br-3944f4a2d80c 0.00 0.00 0.00 0.00 0.00 0.00 0.00
08:04:37 PM br-6f43f91e4cf7 0.00 0.00 0.00 0.00 0.00 0.00 0.00
08:04:37 PM br-cb2953f35dc8 0.00 0.00 0.00 0.00 0.00 0.00 0.00
08:04:37 PM eth0 2.50 0.60 0.15 0.13 0.00 0.00 0.00
08:04:37 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
08:04:37 PM br-c468faf400ff 0.00 0.00 0.00 0.00 0.00 0.00 0.00
08:04:37 PM docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
08:04:37 PM vethfe0e4d1 0.00 0.00 0.00 0.00 0.00 0.00 0.00
08:04:37 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
08:04:47 PM br-3944f4a2d80c 0.00 0.00 0.00 0.00 0.00 0.00 0.00
08:04:47 PM br-6f43f91e4cf7 0.00 0.00 0.00 0.00 0.00 0.00 0.00
08:04:47 PM br-cb2953f35dc8 0.00 0.00 0.00 0.00 0.00 0.00 0.00
08:04:47 PM eth0 1.40 0.20 0.09 0.10 0.00 0.00 0.00
08:04:47 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
08:04:47 PM br-c468faf400ff 0.00 0.00 0.00 0.00 0.00 0.00 0.00
08:04:47 PM docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
08:04:47 PM vethfe0e4d1 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
Average: br-3944f4a2d80c 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: br-6f43f91e4cf7 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: br-cb2953f35dc8 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: eth0 2.07 0.43 0.17 0.09 0.00 0.00 0.00
Average: lo 0.03 0.03 0.00 0.00 0.00 0.00 0.00
Average: br-c468faf400ff 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: vethfe0e4d1 0.00 0.00 0.00 0.00 0.00 0.00 0.00
[root@docker yum.repos.d]#
IFACE:网络接口。
rxpck/s:每秒接收的报文数。
txpck/s:每秒发送的报文数。
rxkB/s:每秒接收的字节数,rxkB/s * 1024 / rxpck/s < 60B,意味着收到的是小包。
txkB/s:每秒发送的字节数。
rxcmp/s:每秒接收的压缩数据包数。
txcmp/s:每秒发送的压缩数据包数。
rxmcst/s:每秒接收的多播数据包数。
%ifutil:网络接口的利用率百分比,对于半双工接口,利用率使用rxkB/s和txkB/s之和作为接口速度的百分比计算。对于全双工,这是rxkB/s或txkB/s中的较大值。