sar 命令

本文详细介绍了sar命令的使用方法,涵盖CPU、内存、I/O、网络等监控数据的获取。通过实例演示了如何实时监控和解析历史数据,帮助读者掌握Linux性能监控技巧。

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

sar(System Activity Reporter系统活动情况报告)

安装Sysstat
sudo apt-get install sysstat
(or)
yum install sysstat
(or)
rpm -ivh sysstat-10.0.0-1.i586.rpm

sar -V: 查看安装是否成功
默认配置文件:    `/etc/default/sysstat`
存放数据文件夹:  `/var/log/sysstat`
配置cron任务:   `/etc/cron.d/sysstat`

# 系统Linux内核版本 (主机名)            数据被收集的日期   系统架构   (可用CPU数量,多核系统中,指核数)

Linux 3.13.0-52-generic (user-3010)   20160128日   _x86_64_  (4 CPU)
所有CPU使用情况(sar -u)
╭─user@user-3010  ~  
╰─$ sar -u 1 3
Linux 3.13.0-52-generic (user-3010)   20160128日   _x86_64_  (4 CPU)

140615秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
140616all      0.50     50.38      0.25      0.76      0.00     48.11
140617all      0.75     50.13      0.50      0.00      0.00     48.62
140618all      0.50     50.25      0.25      0.00      0.00     48.99
Average:        all      0.59     50.25      0.34      0.25      0.00     48.58

╭─user@user-3010  ~  
╰─$ sar -u ALL 1 3     
Linux 3.13.0-52-generic (user-3010)   20160128日   _x86_64_  (4 CPU)

144500秒     CPU      %usr     %nice      %sys   %iowait    %steal      %irq     %soft    %guest    %gnice     %idle
144501all      1.26      0.00      1.51      3.52      0.00      0.00      0.00      0.00      0.00     93.72
144502all      1.52      0.00      0.00      3.54      0.00      0.00      0.00      0.00      0.00     94.94
144503all      1.26      0.00      1.01      0.00      0.00      0.00      0.00      0.00      0.00     97.73
Average:       all      1.34      0.00      0.84      2.35      0.00      0.00      0.00      0.00      0.00     95.46

命令的变种:
sar -u                          显示目前今天CPU使用率.
sar -u                          实时显示CPU使用率每秒1次共执行3.
sar -u ALL                      和“sar -u”作用一样,但是显示附加字段.
sar -u ALL 1 3                  和“sar -u 1 3”,但是显示附加字段.
sar -u -f /var/log/sysstat/sa10 解析sa10数据文件,显示本月第10天CPU使用率.
FieldDescription
CPUall 表示统计信息为所有 CPU 的平均值。
%user显示在用户级别(application)运行使用 CPU 总时间的百分比。注意,这个字段包含运行虚拟处理器花费的时间。
%usr显示在用户级别(application)运行使用 CPU 总时间的百分比。注意,这个字段包含运行虚拟处理器花费的时间。
%guestCPU或CPUs运行虚拟处理器花费的时间。
%nice显示在用户级别,用于nice操作,所占用 CPU 总时间的百分比。
%system在核心级别(kernel)运行所使用 CPU 总时间的百分比。注意,这个字段包含维护软硬件服务中断花费的时间。
%sys在核心级别(kernel)运行所使用 CPU 总时间的百分比。注意,这个字段包含维护软硬件服务中断花费的时间。
%irqCPU或CPUs硬件中断服务花费的时间。
%softCPU或CPUs软件中断服务花费的时间。
%iowait显示用于等待I/O操作占用 CPU 总时间的百分比。
%steal管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比。
%idle显示 CPU 空闲时间占用 CPU 总时间的百分比。
每个CPU使用详情(sar -P)
╭─user@user-3010  ~  
╰─$ sar -P ALL 1 1

Linux 3.13.0-52-generic (user-3010)   20160128日   _x86_64_  (4 CPU)

151052秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
151053all      1.51      0.00      1.01      0.00      0.00     97.49
1510530      1.02      0.00      0.00      0.00      0.00     98.98
1510531      1.02      0.00      1.02      0.00      0.00     97.96
1510532      2.00      0.00      1.00      0.00      0.00     97.00
1510533      1.98      0.00      0.99      0.00      0.00     97.03

Average:        CPU     %user     %nice   %system   %iowait    %steal     %idle
Average:        all      1.51      0.00      1.01      0.00      0.00     97.49
Average:          0      1.02      0.00      0.00      0.00      0.00     98.98
Average:          1      1.02      0.00      1.02      0.00      0.00     97.96
Average:          2      2.00      0.00      1.00      0.00      0.00     97.00
Average:          3      1.98      0.00      0.99      0.00      0.00     97.03

命令的变种:
sar -P ALL                           显示目前今天每个核心CPU使用率.
sar -P ALL 1 3                       实时显示每个核心CPU使用率每秒1次共执行3.
sar -P 1                             显示目前今天1号核心CPU使用率.
sar -P 1 1 3                         实时显示每个核心CPU使用率每秒1次共执行3.
sar -P ALL -f /var/log/sysstat/sa10  解析sa10数据文件,显示本月第10天CPU使用率.
内存使用详情(sar -r)

你很可能会关心“kbmemfree”和“kbmemused”这两个字段,了解空闲内存量和已用内存量.

╭─user@user-3010  ~  
╰─$ sar -r 1 3
Linux 3.13.0-52-generic (user-3010)   20160128日   _x86_64_  (4 CPU)

154244秒 kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
154245365572   3582616     90.74     14200    589568   9238660     78.57   2275880    954720       172
154246365084   3583104     90.75     14200    589904   9238368     78.56   2275976    955000       172
154247365100   3583088     90.75     14200    589912   9238368     78.56   2275976    955000       172
Average:       365252   3582936     90.75     14200    589795   9238465     78.56   2275944    954907       172
FieldDescription
kbmemfree可用的空闲内存量(单位为千字节)。
kbmemused已使用内存的量(单位为千字节)。这并不考虑内核本身所使用的内存。
%memused这个值是kbmemused和内存总量(不包括swap)的一个百分比。
kbbuffers用于内核缓冲区的内存量。
kbcached用于内核缓存数据的内存量。
kbcommit当前系统工作负载所需的内存量。即为了确保不溢出而需要的内存(RAM+swap)。
%commit这个值是kbcommit与内存总量(RAM+swap)的一个百分比。这个数值也许会大于100%,因为内核经常过量使用内存。
交换空间使用详情(sar -S)

如果“kbswpused”和“%swpused”这两个字段为0,说明系统当前没有内存交换.

╭─user@user-3010  ~  
╰─$ sar -S 1 3                                                                                                                                                               1 ↵
Linux 3.13.0-52-generic (user-3010)   20160128日   _x86_64_  (4 CPU)

160640秒 kbswpfree kbswpused  %swpused  kbswpcad   %swpcad
1606416727380   1083688     13.87    202772     18.71
1606426727384   1083684     13.87    202768     18.71
1606436727384   1083684     13.87    202768     18.71
Average:      6727383   1083685     13.87    202769     18.71
FieldDescription
kbswpfree可用的空闲交换空间内存量(单位为千字节)。
kbswpused已使用的交换空间内存量(单位为千字节)。这并不考虑内核本身所使用的内存。
%swpused已使用交换空间内存占比。
kbswpcad缓存的交换空间内存量(单位为千字节)。
%swpcad缓存的交换空间内存相对于已使用的交换空间内存比例, 即kbswpcad/kbswpused。
内存分页监控(sar -B)
╭─user@user-3010  ~  
╰─$ sar -B 1 3
Linux 3.13.0-52-generic (user-3010)   20160128日   _x86_64_  (4 CPU)

161831秒  pgpgin/s pgpgout/s   fault/s  majflt/s  pgfree/s pgscank/s pgscand/s pgsteal/s    %vmeff
1618320.00      0.00     37.00      0.00    583.00      0.00      0.00      0.00      0.00
1618330.00     40.00   2666.00      0.00   1599.00      0.00      0.00      0.00      0.00
1618340.00    140.00     55.00      0.00    204.00      0.00      0.00      0.00      0.00
Average:         0.00     60.00    919.33      0.00    795.33      0.00      0.00      0.00      0.00
FieldDescription
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)的百分比
I/O活动详情(sar -b)
╭─user@user-3010  ~  
╰─$ sar -b 1 3
Linux 3.13.0-52-generic (user-3010)   20160128日   _x86_64_  (4 CPU)

162129秒       tps      rtps      wtps   bread/s   bwrtn/s
1621303.00      0.00      3.00      0.00     32.00
1621310.00      0.00      0.00      0.00      0.00
1621323.00      0.00      3.00      0.00    120.00
Average:         2.00      0.00      2.00      0.00     50.67
FieldDescription
tps每秒钟物理设备的 I/O 传输总量
rtps每秒钟从物理设备读入的数据总量
wtps每秒钟向物理设备写出的数据总量
bread/s每秒钟从物理设备读入的数据量,单位为 块/s
bwrtn/s每秒钟向物理设备写出的数据量,单位为 块/s
单独块设备I/O活动详情(sar -d)
╭─user@user-3010  ~  
╰─$ sar -d 1 3
Linux 3.13.0-52-generic (user-3010)   20160128日   _x86_64_  (4 CPU)

163133秒       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
163134秒    dev8-0    269.00  13528.00      0.00     50.29      1.92      7.12      2.16     58.00

163134秒       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
163135秒    dev8-0     27.00   1576.00      0.00     58.37      0.22      8.30      3.85     10.40

163135秒       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
163136秒    dev8-0      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:       dev8-0     98.67   5034.67      0.00     51.03      0.71      7.23      2.31     22.80

如果你使用-p选项打印漂亮的格式,DEV字段将会显示真实的设备名称,例如: sda, sda1, sdb1 etc.

进程创建和系统交换活动情况(sar -w)
╭─user@user-3010  ~  
╰─$ sar -w 1 3
Linux 3.13.0-52-generic (user-3010)   20160128日   _x86_64_  (4 CPU)

164622秒    proc/s   cswch/s
1646230.00   1595.00
1646249.00   2507.00
1646250.00   1514.00
Average:         3.00   1872.00
FieldDescription
proc/s每秒创建的进程数。
cswch/s每秒上下文切换的总数。
进程队列长度和平均负载状态监控(sar -q)
╭─user@user-3010  ~  
╰─$ sar -q 1 3 
Linux 3.13.0-52-generic (user-3010)   20160128日   _x86_64_  (4 CPU)

163800秒   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
1638010       867      0.32      0.26      0.23         0
1638020       866      0.30      0.26      0.23         0
1638030       866      0.30      0.26      0.23         0
Average:            0       866      0.31      0.26      0.23         0
FieldDescription
runq-sz运行队列的长度(等待运行的进程数)。
plist-sz进程列表中进程和线程的数量。
ldavg-1最后1分钟的系统平均负载。
ldavg-5过去5分钟的系统平均负载。
ldavg-15过去15分钟的系统平均负载。
blocked当前阻塞的进程数量,为了等待I/O完成。
网络统计信息报告(sar -n)
sar -n KEYWORD

可能的关键字有DEV, EDEV, NFS, NFSD, SOCK, IP, EIP, ICMP, EICMP, TCP, ETCP, UDP, SOCK6, IP6, EIP6, ICMP6, UDP6, FC.
如果你使用DEV关键字,它将报告所有网络设备的统计信息.

╭─user@user-3010  ~  
╰─$ sar -n DEV 1 1
Linux 3.13.0-52-generic (user-3010)   20160128日   _x86_64_  (4 CPU)

170851秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil
170852秒      eth0      1.00      0.00      0.09      0.00      0.00      0.00      0.00      0.00
170852秒        lo      0.00      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   %ifutil
Average:         eth0      1.00      0.00      0.09      0.00      0.00      0.00      0.00      0.00
Average:           lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
FieldDescription
rxpck/s每秒接收的数据包总数。
txpck/s每秒传输的数据包总数。
rxkB/s每秒接收的字节数(单位KB)。
txkB/s每秒传输的字节数(单位KB)。
rxcmp/s每秒接收的压缩包总数。
txcmp/s每秒传输的压缩包总数。
rxmcst/s每秒接收的组播数据包总数。
%ifutil网络接口的利用率。

小技巧

sar -q -f /var/log/sysstat/sa23 -s 10:00:01 | head -n 10: 显示本月第23天上午10:00:01开始,前10条关于进程队列长度和平均负载状态监控报告.

参考链接: sysstat & sar manual page & sar examples & Linux Performance Checklist & linux sar 命令详解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值