Linux命令详解-sar

sar是Linux上的一款全面系统性能分析工具,能够提供CPU使用率、I/O、内存、网络等多方面的统计信息。它允许设置取样时间和次数,通过丰富的选项输出详细的系统活动报告。例如,使用`sar -u`可以查看CPU使用情况,`sar -d`关注I/O和传输速率,而`sar -r`则用于输出内存和交换空间的统计。了解sar的各个命令和参数对于监控和优化Linux系统性能至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sar命令简介

sar(System Activity Reporter)是系统活动情况报告的缩写。它是由sysstat软件包提供。sar 工具将对系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行状态。它的特点是可以连续对系统取样,获得大量的取样数据;取样数据和分析的结果都可以存入文件,所需的负载很小。 sar 是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。为了提供不同的信息,sar 提供了丰富的选项、因此使用较为复杂。

注意:本文使用的是sysstat版本为sysstat-10.1.5-11.el7.x86_64,由于sysstat升级过程中,变动还是很大的,版本不同的话,可用参数会不同,同参数出参显示的数据项也有不同。

sar 的命令格式

sar 的命令格式为:

Usage: sar [ options ] [ <interval> [ <count> ] ]
Options are:
[ -A ] [ -B ] [ -b ] [ -C ] [ -d ] [ -H ] [ -h ] [ -p ] [ -q ] [ -R ]
[ -r ] [ -S ] [ -t ] [ -u [ ALL ] ] [ -V ] [ -v ] [ -W ] [ -w ] [ -y ]
[ -I { <int> [,...] | SUM | ALL | XALL } ] [ -P { <cpu> [,...] | ALL } ]
[ -m { <keyword> [,...] | ALL } ] [ -n { <keyword> [,...] | ALL } ]
[ -j { ID | LABEL | PATH | UUID | ... } ]
[ -f [ <filename> ] | -o [ <filename> ] | -[0-9]+ ]
[ -i <interval> ] [ -s [ <hh:mm:ss> ] ] [ -e [ <hh:mm:ss> ] ]

其中:

  • interval : 为取样时间间隔
  • count : 为输出次数,若省略此项,默认值为 1

常用选项说明:

选项说明
-A等同于-bBdHqrRSuvwWy -I SUM -I XALL -m ALL -n ALL -u ALL -P ALL
-b显示I/O和传送速率的统计信息
-B输出内存页面的统计信息
-C当从一个文件读取数据时,告诉sar显示评论xx sadc
-d报告每个块设备的活动情况,每个块设备是以dev m-n来显示的,m是major number,n是minor number,也可以使块设备名称显示的更友好一些,那就是采用-p参数
-H报告拒页的使用情况
-h显示帮助
-p显示友好设备名字,以方便查看,也可以和-d 和-n 参数结合使用,比如 -dp 或-np
-q输出进程队列长度和平均负载状态统计信息
-R输出内存页面的统计信息
-r输出内存和交换空间的统计信息
-S报告swap的使用情况
-t读取 /var/log/sa/saDD 的数据时显示其中记录的原始时间,如果没有这个参数使用用户的本地时间
-u输出CPU使用情况的统计信息
-V输出版本号信息
-v输出inode、文件和其他内核表的统计信息
-W输出系统交换的统计信息
-w输出系统交换活动信息
-y输出TTY设备的活动信息
-I { irq | SUM | ALL | XALL }输出指定中断的统计信息。
irq指定中断号
SUM指定输出每秒接收到的中断总数
ALL指定输出前16个中断
XALL指定输出全部的中断信息
-P {cpu | ALL}输出指定 CPU 的统计信息
-m报告电源管理统计信息,参数可以是CPU, FAN, FREQ, IN, TEMP and USB或者ALL
-n { DEV | EDEV | NFS | NFSD | SOCK | ALL }分析输出网络设备状态统计信息。
DEV报告网络设备的统计信息
EDEV报告网络设备的错误统计信息
NFS报告 NFS 客户端的活动统计信息
NFSD报告 NFS 服务器的活动统计信息
SOCK报告网络套接字(sockets)的使用统计信息
ALL报告所有类型的网络活动统计信息
-j显示持久化设备名称
-f filename从文件 filename 读取数据信息。filename 是使用-o 选项时生成的文件。
-o filename将输出信息保存到文件 filename
-iinterval 指定间隔时长,单位为秒
-s hh:mm:ss指定输出统计数据的起始时间
-e hh:mm:ss指定输出统计数据的截至时间,默认为18:00:00

常用命令举例

1、输出CPU使用情况的统计信息

命令:sarsar -u
输出:

[root@localhost tmp]# sar
Linux 3.10.0-514.21.1.el7.x86_64 (localhost)    07/14/2017      _x86_64_        (8 CPU)

11:44:56 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
11:44:58 PM     all      0.20      0.00      1.37      0.00      0.00     98.43
11:45:00 PM     all      0.00      0.07      1.01      0.00      0.00     98.93
11:45:02 PM     all      0.06      0.00      1.00      0.00      0.00     98.94
Average:        all      0.09      0.02      1.12      0.00      0.00     98.77
[root@localhost tmp]# sar -u
Linux 3.10.0-514.21.1.el7.x86_64 (localhost)    07/14/2017      _x86_64_        (8 CPU)

11:44:56 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
11:44:58 PM     all      0.20      0.00      1.37      0.00      0.00     98.43
11:45:00 PM     all      0.00      0.07      1.01      0.00      0.00     98.93
11:45:02 PM     all      0.06      0.00      1.00      0.00      0.00     98.94
Average:        all      0.09      0.02      1.12      0.00      0.00     98.77  

输出项说明:

选项说明
CPUall 表示统计信息为所有 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 的值持续低于 10,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU

2、显示I/O和传送速率的统计信息

命令:sar -b
输出:

[root@localhost tmp]# sar -b
Linux 3.10.0-514.21.1.el7.x86_64 (localhost)    07/14/2017      _x86_64_        (8 CPU)

11:44:56 PM       tps      rtps      wtps   bread/s   bwrtn/s
11:44:58 PM      0.00      0.00      0.00      0.00      0.00
11:45:00 PM      2.00      0.00      2.00      0.00     74.00
11:45:02 PM      0.00      0.00      0.00      0.00      0.00
11:50:01 PM      0.75      0.00      0.74      0.21     18.38
Average:         0.75      0.00      0.74      0.21     18.50

输出项说明:

选项说明
tps每秒钟物理设备的 I/O 传输总量
rtps每秒钟从物理设备读入的数据总量
wtps每秒钟向物理设备写入的数据总量
bread/s每秒钟从物理设备读入的数据量,单位为 (块/s)
bwrtn/s每秒钟向物理设备写入的数据量,单位为 (块/s)

3、输出内存页面的统计信息

命令:sar -B
输出:

[root@localhost tmp]# sar -B
Linux 3.10.0-514.21.1.el7.x86_64 (localhost)    07/14/2017      _x86_64_        (8 CPU)

11:44:56 PM  pgpgin/s pgpgout/s   fault/s  majflt/s  pgfree/s pgscank/s pgscand/s pgsteal/s    %vmeff
11:44:58 PM      0.00      0.00  12698.50      0.00   5274.50      0.00      0.00      0.00      0.00
11:45:00 PM      0.00     69.00  13500.50      0.00   5110.50      0.00      0.00      0.00      0.00
11:45:02 PM      0.00      0.00  12432.50      0.00   5129.00      0.00      0.00      0.00      0.00
11:50:01 PM      0.12     12.05  12806.55      0.00   5292.63      0.00      0.00      0.00      0.00
Average:         0.12     12.26  12807.94      0.00   5290.25      0.00      0.00      0.00      0.00

输出项说明:

选项说明
pgpgin/s每秒从磁盘或SWAP置换到内存的字节数(KB)
pgpgout/s每秒从内存置换到磁盘或SWAP的字节数(KB)
fault/s每秒钟系统产生的缺页数,即主缺页与次缺页之和(major + minor)
majflt/s每秒钟产生的主缺页数
pgfree/s每秒被放入空闲队列中的页个数
pgscank/s每秒被kswapd扫描的页个数
pgscand/s每秒直接被扫描的页个数
pgsteal/s每秒钟从cache中被清除来满足内存需要的页个数
%vmeff每秒清除的页(pgsteal)占总扫描页(pgscank+pgscand)的百分比

4、输出网络设备状态的统计信息

命令:sar -n DEV |grep ens33
输出:

[root@localhost tmp]# sar -n DEV |grep ens33
Linux 3.10.0-514.21.1.el7.x86_64 (localhost)    07/15/2017      _x86_64_        (8 CPU)

12:00:01 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
12:10:03 AM     ens33    137.51     49.60    196.77      3.34      0.00      0.00      0.00
Average:        ens33    137.51     49.60    196.77      3.34      0.00      0.00      0.00

输出项说明:

选项说明
IFACE网络设备名
rxpck/s每秒接收的包总数
txpck/s每秒传输的包总数
rxbyt/s每秒接收的字节(byte)总数
txbyt/s每秒传输的字节(byte)总数
rxcmp/s每秒接收压缩包的总数
txcmp/s每秒传输压缩包的总数
rxmcst/s每秒接收的多播(multicast)包的总数

5、输出网络设备状态的统计信息(查看网络设备故障)

命令:sar -n EDEV |egrep 'ens33|IFACE'
输出:

[root@localhost tmp]# sar -n EDEV |egrep 'ens33|IFACE'
Linux 3.10.0-514.21.1.el7.x86_64 (localhost)    07/15/2017      _x86_64_        (8 CPU)

12:00:01 AM     IFACE   rxerr/s   txerr/s    coll/s  rxdrop/s  txdrop/s  txcarr/s  rxfram/s  rxfifo/s  txfifo/s
12:10:03 AM     ens33      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:        ens33      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

输出项说明:

选项说明
IFACE网络设备名
rxerr/s每秒接收的坏包总数
txerr/s传输包时每秒发生错误的总数
coll/s传输包时每秒发生冲突(collision)的总数
rxdrop/s接收包时,由于缺乏缓存,每秒丢弃(drop)包的数量
txdrop/s传输包时,由于缺乏缓存,每秒丢弃(drop)包的数量
txcarr/s传输包时,每秒发生的传输错误(carrier-error)的数量
rxfram/s接收包时,每秒发生帧校验错误(frame alignment error)的数量
rxfifo/s接收包时,每秒发生队列(FIFO)一出错误的数量
txfifo/s传输包时,每秒发生队列(FIFO)一出错误的数量

6、输出进程队列长度和平均负载状态统计信息

命令:sar -q
输出:

[root@localhost tmp]# sar -q
Linux 3.10.0-514.21.1.el7.x86_64 (localhost)    07/15/2017      _x86_64_        (8 CPU)

12:00:01 AM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
12:10:03 AM         4       793      1.99      0.87      0.36         0
12:20:01 AM         0       786      0.07      1.06      0.94         0
Average:            2       790      1.03      0.96      0.65         0

输出项说明:

选项说明
runq-sz运行队列的长度(等待运行的进程数)
plist-sz进程列表中进程(processes)和线程(threads)的数量
ldavg-1最后1分钟的系统平均负载(System load average)
ldavg-5过去5分钟的系统平均负载
ldavg-15过去15分钟的系统平均负载
blocked当前阻塞的进程数量,在等待IO完成

7、输出内存和交换空间的统计信息

命令:sar -r
输出:

[root@localhost tmp]# sar -r
Linux 3.10.0-514.21.1.el7.x86_64 (localhost)    07/15/2017      _x86_64_        (8 CPU)

12:00:01 AM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
12:10:03 AM    124276   3741260     96.79         4   1937072   4287964     54.08   1493264   1832796     21040
12:20:01 AM    127180   3738356     96.71         4   1957320   4213484     53.14   2064572   1254212        28
12:30:01 AM    125612   3739924     96.75         4   1959696   4213428     53.14   2069716   1251092        24
Average:       125689   3739847     96.75         4   1951363   4238292     53.45   1875851   1446033      7031

输出项说明:

选项说明
kbmemfree可用的空闲内存,单位是KB
kbmemused已经使用的内存,这个没有考虑内核自己用到的内存
%memused目前内存的使用率
kbbuffers内核缓冲区(buffer)使用的内存数量,单位为 KB
kbcached内核高速缓存(cache)数据使用的内存数量,单位为 KB
kbcommit当前工作负载锁需要的内存,这是一个估计值,多少RAM/swap可以保证当前负载不会出现out of memory
%commit当前工作负载需要的内存占RAM+swap的百分比
kbactive活跃内存的大小(内存最近被使用过,并且不会被回收)
kbinact不活跃内存大小(最近未被使用的内存,很符合回收策略的内存)
kbdirty等待写回硬盘的内存数量

8、输出内存页面的统计信息

命令:sar -R
输出:

[root@localhost tmp]# sar -R
Linux 3.10.0-514.21.1.el7.x86_64 (localhost)    07/15/2017      _x86_64_        (8 CPU)

12:00:01 AM   frmpg/s   bufpg/s   campg/s
12:10:03 AM    -51.20      0.00     36.83
12:20:01 AM      1.21      0.00      8.46
12:30:01 AM     -0.65      0.00      0.99
Average:       -16.93      0.00     15.46

输出项说明:

选项说明
frmpg/s每秒系统中空闲的内存页面(memory page freed)数量
bufpg/s每秒系统中用作缓冲区(buffer)的附加内存页面(additional memory page)数量
campg/s每秒系统中高速缓存的附加内存页面(additional memory pages cached)数量

9、输出inode、文件和其他内核表的信息

命令:sar -v
输出:

[root@localhost tmp]# sar -v
Linux 3.10.0-514.21.1.el7.x86_64 (localhost)    07/15/2017      _x86_64_        (8 CPU)

12:00:01 AM dentunusd   file-nr  inode-nr    pty-nr
12:10:03 AM     56436      3104     41378        12
12:20:01 AM     86494      2976     41368        12
12:30:01 AM     86927      2880     41723        12
Average:        76619      2987     41490        12

输出项说明:

选项说明
dentunusd目录高速缓存中未被使用的条目数量
file-nr被系统使用的文件句柄数
inode-nr被系统使用的inode句柄数
pty-nr被系统使用的pseudo-terminals数目

10、输出系统交换活动信息

命令:sar -w
输出:

[root@localhost tmp]# sar -w
Linux 3.10.0-514.21.1.el7.x86_64 (localhost)    07/15/2017      _x86_64_        (8 CPU)

12:00:01 AM    proc/s   cswch/s
12:10:03 AM     39.37   3535.95
12:20:01 AM     45.08   3450.30
12:30:01 AM     45.16   3429.46
12:40:01 AM     44.97   3417.48
Average:        43.64   3458.36

输出项说明:

选项说明
proc/s每秒钟创建的进程数
cswch/s每秒钟的上下文交换数

11、 输出系统交换的统计信息

命令:sar -W
输出:

[root@localhost tmp]# sar -W
Linux 3.10.0-514.21.1.el7.x86_64 (localhost)    07/15/2017      _x86_64_        (8 CPU)

12:00:01 AM  pswpin/s pswpout/s
12:10:03 AM      0.01      1.16
12:20:01 AM      0.01      0.00
12:30:01 AM      0.01      0.00
12:40:01 AM      0.01      0.00
Average:         0.01      0.29

输出项说明:

选项说明
pswpin/s每秒钟系统引入的swap pages
pswpout/s每秒钟系统换出的swap pages

12、输出TTY设备的活动信息

命令:sar -y
输出:

[root@localhost tmp]# sar -y
Linux 3.10.0-514.21.1.el7.x86_64 (localhost)    07/15/2017      _x86_64_        (8 CPU)

12:00:01 AM       TTY   rcvin/s   xmtin/s framerr/s prtyerr/s     brk/s   ovrun/s
12:10:03 AM         0      0.00      0.00      0.00      0.00      0.00      0.00
12:20:01 AM         0      0.00      0.00      0.00      0.00      0.00      0.00
12:30:01 AM         0      0.00      0.00      0.00      0.00      0.00      0.00
12:40:01 AM         0      0.00      0.00      0.00      0.00      0.00      0.00
Average:            0      0.00      0.00      0.00      0.00      0.00      0.00

输出项说明:

选项说明
TTYTTY 串行设备号
rcvin/s每秒接收的中断数量
xmtin/s每秒传送的中断数量
framerr/s每秒发生的帧错误数(frame error)量
prtyerr/s每秒发生的奇偶校验错误(parity error)数量
brk/s每秒发生的暂停(break)数量
ovrun/s每秒发生的溢出错误(overrun error)数量

14、显示全面的累计统计信息

命令:sar -y
输出所有信息。

另:命令的详细用法可以参考项目源码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值