当前位置: 首页 > 工具软件 > Sar2html > 使用案例 >

Linux sar命令

陈君之
2023-12-01

最近有个需求要比较数据入库程序在x86架构和arm架构的性能,分别部署后发现两者的入库速度有较大差异,但是又不知道为什么。之前入库程序调优时,都只是基于各组件参数的调优,因为没有去观察机器的负载情况,并不知道程序性能的真正瓶颈在哪里。要发现差异、找出程序性能瓶颈,必须去观察程序部署机器的实时负载,于是发现了sar这个神器,特此记录。

sar命令可以从多方面对系统的活动进行报告,包括文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。

执行sar命令后,会按照指定时间间隔、指定次数进行采样,输出每个时间点的采样情况,最后会输出采样时间内的各指标平均值。

usage

~]# sar --help
Usage: sar [ options ] [ <interval> [ <count> ] ]
Options are:
[ -A ] [ -B ] [ -b ] [ -C ] [ -d ] [ -F [ MOUNT ] ] [ -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> ] ]

options是各种选项
interval是取样的时间间隔
count是输出次数。若不指定默认是1

简单使用

以下是执行sar -u 1 10的结果。-u表示输出cpu相关信息,1表示取样时间间隔为1秒,10表示输出10次

[root@server1 ~]# sar -u 1 10
Linux 3.10.0-1160.31.1.el7.x86_64 (server1)     06/10/2022      _x86_64_        (32 CPU)

04:24:29 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
04:24:30 PM     all     11.85      0.00      2.55      3.66      0.00     81.94
04:24:31 PM     all      2.90      0.00      2.77      0.66      0.00     93.66
04:24:32 PM     all      2.74      0.00      2.83      0.72      0.00     93.70
04:24:33 PM     all      3.94      0.00      3.72      0.16      0.00     92.17
04:24:34 PM     all      2.52      0.00      2.61      1.04      0.00     93.83
04:24:35 PM     all      3.06      0.00      3.18      0.06      0.00     93.70
04:24:36 PM     all      3.03      0.00      3.15      1.76      0.00     92.06
04:24:37 PM     all      3.09      0.00      2.68      0.44      0.00     93.79
04:24:38 PM     all      2.55      0.00      2.05      3.56      0.00     91.83
04:24:39 PM     all      2.36      0.00      2.68      0.13      0.00     94.83
Average:        all      3.80      0.00      2.82      1.22      0.00     92.15

常用选项

选项功能
-A显示系统所有资源设备(CPU、内存、磁盘)的运行状况。
-u显示系统所有CPU 在采样时间内的负载状态。
-P显示当前系统中指定 CPU 的使用情况。
-d显示系统所有硬盘设备在采样时间内的使用状态。
-r显示系统内存在采样时间内的使用情况。
-b显示I/O和传送速率的统计信息
-v显示 inode 节点、文件和其他内核表的统计信息。
-n显示网络运行状态,此选项后可跟 DEV(显示网络接口信息)、EDEV(显示网络错误的统计数据)、SOCK(显示套接字信息)和 FULL(等同于使用 DEV、EDEV和SOCK)等,有关更多的选项,可通过执行 man sar 命令查看。
-q显示运行列表中的进程数、进程大小、系统平均负载等。
-R显示进程在采样时的活动情况。
-y显示终端设备在采样时间的活动情况。
-w显示系统交换活动在采样时间内的状态。

sar部分选项输出说明

-u 输出CPU使用情况

# sar -u 1 5
04:34:32 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
04:34:33 PM     all      8.00      0.00      2.17      5.16      0.00     84.67
04:34:34 PM     all      7.58      0.00      4.59      4.91      0.00     82.92
04:34:35 PM     all      7.53      0.00      3.66      4.19      0.00     84.62
04:34:36 PM     all      4.47      0.00      3.15      0.98      0.00     91.41
04:34:37 PM     all      2.90      0.00      2.36      3.87      0.00     90.87
Average:        all      6.09      0.00      3.19      3.82      0.00     86.90

输出项说明:

字段说明
CPUall 表示统计信息为所有 CPU 的平均值。
%user显示在用户级别(application)运行使用 CPU 总时间的百分比。
%nice显示在用户级别,用于nice操作,所占用 CPU 总时间的百分比。
%system在核心级别(kernel)运行所使用 CPU 总时间的百分比。
%iowait显示用于等待I/O操作占用 CPU 总时间的百分比。
%steal管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比。
%idle显示 CPU 空闲时间占用 CPU 总时间的百分比。

-v 输出inode、文件和其他内核表监控使用情况

# sar -v 1 3 
04:39:58 PM dentunusd   file-nr  inode-nr    pty-nr
04:39:59 PM    166734     23936    118926        17
04:40:00 PM    166734     24000    118927        17
04:40:01 PM    166799     24128    119038        17
Average:       166756     24021    118964        17

输出项说明:

字段说明
dentunusd目录高速缓存中未被使用的条目数量
file-nr文件句柄(file handle)的使用数量
inode-nr索引节点句柄(inode handle)的使用数量
pty-nr使用的pty数量

-r 输出内存使用情况

# sar -r 1 3
04:41:37 PM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
04:41:38 PM  15315012 116447300     88.38         0  12046964 187005300    141.93 104811652   5980352         0
04:41:39 PM  15311820 116450492     88.38         0  12052116 187005680    141.93 104809624   5985212         0
04:41:40 PM  15328736 116433576     88.37         0  12052664 187009416    141.93 104791752   5985988       468
Average:     15318523 116443789     88.37         0  12050581 187006799    141.93 104804343   5983851       156

输出项说明:

字段说明
kbmemfree这个值和free命令中的free值基本一致
kbmemused这个值和free命令中的used值基本一致
%memused这个值是kbmemused和内存总量的百分比
kbbuffers和kbcached这两个值就是free命令中的buffer和cache
kbcommit保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap)
%commit这个值是kbcommit与内存总量(包括swap)的一个百分比

-n 输出网络设备状态

# sar -n DEV 1 3
04:53:17 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
04:53:18 PM      eth1  67674.00  15401.00  82210.17 201317.99      0.00      0.00      0.00
04:53:18 PM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
04:53:18 PM        lo      5.00      5.00      4.04      4.04      0.00      0.00      0.00

04:53:18 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
04:53:19 PM      eth1  70277.00  16155.00  85445.74 205951.76      0.00      0.00      0.00
04:53:19 PM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
04:53:19 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00

04:53:19 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
04:53:20 PM      eth1  71497.00  16398.00  87244.72 207286.21      0.00      0.00      0.00
04:53:20 PM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
04:53:20 PM        lo      5.00      5.00      3.44      3.44      0.00      0.00      0.00

Average:        IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
Average:         eth1  69816.00  15984.67  84966.88 204851.99      0.00      0.00      0.00
Average:         eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:           lo      3.33      3.33      2.49      2.49      0.00      0.00      0.00

输出项说明:

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

-b 输出I/O和传送速率的使用情况

# sar -b 1 3
04:47:49 PM       tps      rtps      wtps   bread/s   bwrtn/s
04:47:50 PM      1.00      0.00      1.00      0.00      8.00
04:47:51 PM      0.00      0.00      0.00      0.00      0.00
04:47:52 PM      0.00      0.00      0.00      0.00      0.00
Average:         0.33      0.00      0.33      0.00      2.66

输出项说明:

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

常用命令

统计cpu输出到文件中并查看

# -o cpu.stat指将结果写入cpu.stat中
sar -u 1 3 -o cpu.stat

# 写出的是二进制文件,不能直接查看,通过以下命令查看
sar -u -f cpu.stat

统计内存使用情况

sar -r 1 10 

统计磁盘io情况

sar -b 1 180

统计网卡IO

sar -n DEV 1 300

参考

sar命令使用 https://www.cnblogs.com/bandaoyu/p/15573653.html

Linux sar 查看网卡流量 网络io https://www.likecs.com/show-205185561.html

 类似资料: