最近有个需求要比较数据入库程序在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.