sar
是System Activity Reporter
(系统活动情况报告)的缩写。sar
工具将对系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行状态。它的特点是可以连续对系统取样,获得大量的取样数据;取样数据和分析的结果都可以存入文件,所需的负载很小。
sar
是目前Linux
上最为全面的系统性能分析工具之一,可以从14
个大方面对系统的活动进行报告,包括文件的读写情况、系统调用的使用情况、串口、CPU
效率、内存使用状况、进程活动及IPC有关的活动等,使用也是较为复杂。
sar
是查看操作系统报告指标的各种工具中,最为普遍和方便的;它有两种用法;
-
追溯过去的统计数据(默认)
-
周期性的查看当前数据
1.安装sar工具
有的linux
系统下,默认可能没有安装这个包,可以使用下面命令来安装:
[root@yunkvm ~]# yum install -y sysstat
已加载插件:fastestmirror, langpacks
Determining fastest mirrors
* base: mirrors.bfsu.edu.cn
* extras: mirrors.ustc.edu.cn
* updates: mirrors.bfsu.edu.cn
……
安装完成后即可使用,其默认配置文件信息如下:
[root@yunkvm ~]# cat /etc/sysconfig/sysstat
# sysstat-10.1.5 configuration file.
# How long to keep log files (in days).
# If value is greater than 28, then log files are kept in
# multiple directories, one for each month.
HISTORY=28
# Compress (using gzip or bzip2) sa and sar files older than (in days):
COMPRESSAFTER=31
# Parameters for the system activity data collector (see sadc manual page)
# which are used for the generation of log files.
SADC_OPTIONS="-S DISK"
# Compression program to use.
ZIP="bzip2"
[root@yunkvm ~]#
其中:
HISTORY=28
用于指定sysstat
工具保存历史数据的天数。这里为28天。
COMPRESSAFTER=31
用于指定多长时间后对收集的数据进行压缩。COMPRESSAFTER
的单位是天,表示从数据文件的创建时间开始计算,当数据文件的年月日与当前日期相差大于或等于COMPRESSAFTER
时,就会对数据文件进行压缩。
例如,COMPRESSAFTER=31
表示在数据文件创建后31
天后对其进行压缩。
SADC_OPTIONS="-S DISK"
用于指定sa1
命令在收集系统性能数据时的选项。其中,-S
指定收集系统性能数据,DISK
表示收集磁盘相关的性能数据。
ZIP="bzip2"
用于指定sysstat
工具在对历史数据进行压缩时所使用的压缩工具。默认情况下,ZIP
的值为gzip
,即sysstat
工具使用gzip
工具对历史数据进行压缩。如果需要使用其他的压缩工具,可以将ZIP
的值修改为相应的压缩工具名称。
2.sar参数说明
参数 | 含义 |
---|---|
-u | CPU使用情况 |
-r | 内存使用情况 |
-b | I/O使用情况 |
-n DEV | 网络使用情况 |
-n EDEV | 扩展网络使用情况 |
-n NFS | NFS客户端使用情况 |
-n NFSD | NFS服务器使用情况 |
-n SOCK | 套接字使用情况 |
-n IP | IP使用情况 |
-q | 进程队列长度和负载 |
-A | 所有报告 |
-P ALL | 所有CPU报告 |
-d | 磁盘使用情况 |
-p | 分区使用情况 |
-W | 系统交换情况 |
-S | Swap使用情况 |
3.sar
用法举例
3.1查看CPU使用率
sar -u
: 默认情况下显示的cpu
使用率等信息就是sar -u
:
[root@yunkvm ~]# sar 1 3
Linux 3.10.0-957.el7.x86_64 (yunkvm) 2023年06月01日 _x86_64_ (32 CPU)
11时46分18秒 CPU %user %nice %system %iowait %steal %idle
11时46分19秒 all 4.04 0.00 0.79 0.32 0.00 94.85
11时46分20秒 all 5.77 0.00 0.60 0.57 0.00 93.05
11时46分21秒 all 5.52 0.00 0.73 0.16 0.00 93.59
平均时间: all 5.11 0.00 0.71 0.35 0.00 93.84
[root@yunkvm ~]#
可以看到这台机器有相应的时间消耗; 各列的指标分别是:
-
%user
:用户模式下消耗的CPU
时间的比例; -
%nice
:通过nice
改变了进程调度优先级的进程,在用户模式下消耗的CPU
时间的比例 -
%system
: 系统模式下消耗的CPU时间的比例; -
%iowait
:CPU
等待磁盘I/O
导致空闲状态消耗的时间比例; -
%steal
:利用Xen
等操作系统虚拟化技术,等待其它虚拟CPU
计算占用的时间比例; -
%idle
:CPU
空闲时间比例;
3.2查看平均负载
sar -q
: 查看平均负载,该命令可以用来监控系统的负载情况,了解系统当前的压力情况,以便及时调整系统资源或优化系统性能。
指定-q
后,就能查看运行队列中的进程数、系统上的进程大小、平均负载等;与其它命令相比,它能查看各项指标随时间变化的情况;
-
runq-sz
:运行队列的长度(等待运行的进程数) -
plist-sz
:进程列表中进程(processes
)和线程(threads
)的数量 -
ldavg-1
:最后1分钟
的系统平均负载ldavg-5
:过去5分钟
的系统平均负载 -
ldavg-15
:过去15分钟的系统平均负载
如下:以1秒为间隔,连续监控系统平均负载和进程队列长度,共监控30次,即30秒。
[root@yunkvm ~]# sar -q 1 30
Linux 3.10.0-957.el7.x86_64 (yunkvm) 2023年06月01日 _x86_64_ (32 CPU)
11时59分26秒 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
11时59分27秒 1 1163 1.24 1.23 1.22 0
11时59分28秒 1 1173 1.24 1.23 1.22 0
11时59分29秒 0 1172 1.14 1.21 1.22 0
11时59分30秒 2 1162 1.14 1.21 1.22 0
11时59分31秒 1 1163 1.14 1.21 1.22 0
11时59分32秒 1 1164 1.14 1.21 1.22 0
11时59分33秒 3 1165 1.14 1.21 1.22 0
11时59分34秒 2 1167 1.13 1.21 1.22 0
11时59分35秒 2 1168 1.13 1.21 1.22 0
11时59分36秒 4 1172 1.13 1.21 1.22 0
11时59分37秒 1 1171 1.13 1.21 1.22 0
11时59分38秒 0 1161 1.13 1.21 1.22 0
11时59分39秒 1 1163 1.04 1.19 1.21 0
11时59分40秒 1 1167 1.04 1.19 1.21 0
11时59分41秒 0 1167 1.04 1.19 1.21 0
11时59分42秒 4 1164 1.04 1.19 1.21 0
11时59分43秒 3 1167 1.04 1.19 1.21 0
11时59分44秒 6 1167 1.20 1.22 1.22 0
11时59分45秒 1 1178 1.20 1.22 1.22 0
11时59分46秒 1 1174 1.20 1.22 1.22 0
11时59分47秒 3 1178 1.20 1.22 1.22 0
11时59分48秒 2 1179 1.20 1.22 1.22 0
11时59分49秒 1 1179 1.58 1.30 1.25 0
11时59分50秒 5 1170 1.58 1.30 1.25 0
11时59分51秒 1 1172 1.58 1.30 1.25 0
11时59分52秒 2 1172 1.58 1.30 1.25 0
11时59分53秒 0 1171 1.58 1.30 1.25 0
11时59分54秒 0 1168 1.54 1.29 1.25 1
11时59分55秒 1 1179 1.54 1.29 1.25 0
11时59分56秒 0 1180 1.54 1.29 1.25 0
平均时间: 2 1170 1.25 1.23 1.23 0
[root@yunkvm ~]#
3.3查看内存使用状况
sar -r
: 指定-r
之后,可查看物理内存使用状况。
该命令可以用来了解系统内存的使用情况,包括内存总量、空闲内存、已使用内存、缓存、交换分区等信息,以便及时调整系统资源或优化系统性能。
如下:以1秒为间隔,连续监控系统内存使用情况,共监控3次。
[root@yunkvm ~]# sar -r 1 3
Linux 3.10.0-957.el7.x86_64 (yunkvm) 2023年06月01日 _x86_64_ (32 CPU)
12时02分29秒 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
12时02分30秒 791736 263063820 99.70 96 70828820 336498268 123.60 183183320 74221356 140
12时02分31秒 792224 263063332 99.70 96 70828820 336498268 123.60 183183344 74221376 140
12时02分32秒 791932 263063624 99.70 96 70828820 336498268 123.60 183183364 74221376 164
平均时间: 791964 263063592 99.70 96 70828820 336498268 123.60 183183343 74221369 148
[root@yunkvm ~]#
-
kbmemfree
:这个值和free
命令中的free
值基本一致,所以它不包括buffer
和cache
的空间。 -
kbmemused
:这个值和free
命令中的used
值基本一致,所以它包括buffer
和cache
的空间。 -
%memused
:物理内存使用率,这个值是kbmemused
和内存总量(不包括swap
)的一个百分比。 -
kbbuffers
和kbcached
:这两个值就是free
命令中的buffer
和cache
。 -
kbcommit
:保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap)
。 -
%commit
:这个值是kbcommit
与内存总量(包括swap
)的一个百分比。
3.4查看页面交换发生状况
sar -W
:查看页面交换发生状况。
页面发生交换时,服务器的吞吐量会大幅下降;服务器状况不良时,如果怀疑因为内存不足而导致了页面交换的发生,可以使用这个命令来确认是否发生了大量的交换。
如下:以1秒为间隔,连续监控系统交换情况,共监控3次。
[root@yunkvm ~]# sar -W 1 3
Linux 3.10.0-957.el7.x86_64 (yunkvm) 2023年06月01日 _x86_64_ (32 CPU)
12时07分15秒 pswpin/s pswpout/s
12时07分16秒 0.00 0.00
12时07分17秒 0.00 0.00
12时07分18秒 0.00 0.00
平均时间: 0.00 0.00
[root@yunkvm ~]#
该命令可以用来了解系统交换分区的使用情况,包括交换分区的总量、空闲量、已使用量、交换读写速度等信息,以便及时调整系统资源或优化系统性能。
-
pswpin/s
:每秒系统换入的交换页面(swap page
)数量。 -
pswpout/s
:每秒系统换出的交换页面(swap page
)数量。
要判断系统瓶颈问题,有时需几个 sar
命令选项结合起来:
-
怀疑
CPU
存在瓶颈,可用sar -u
和sar -q
等来查看。 -
怀疑内存存在瓶颈,可用
sar -B
、sar -r
和sar -W
等来查看。 -
怀疑
I/O
存在瓶颈,可用sar -b
、sar -u
和sar -d
等来查看。