sar命令是Linux下系统运行状态统计工具。可以从14个大方面对系统的活动进行报告,包括文件的读写情况、系统调用的使用情况、串口、CPU效率、内存使用状况、进程活动及IPC有关的活动等,使用也是较为复杂。
sar是查看操作系统报告指标的各种工具中,下面对sar命令进行讲解。
sar命令常用格式
用法: sar [ 选项 ] [ <时间间隔> [ <次数> ] ]
[minger@centos7 ~]$ sar -help
用法: sar [ 选项 ] [ <时间间隔> [ <次数> ] ]
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 { [,…] | SUM | ALL | XALL } ] [ -P { [,…] | ALL } ]
[ -m { [,…] | ALL } ] [ -n { [,…] | ALL } ]
[ -j { ID | LABEL | PATH | UUID | … } ]
[ -f [ ] | -o [ ] | -[0-9]+ ]
[ -i ] [ -s [ hh:mm:ss ] ] [ -e [ hh:mm:ss ] ]
常用选项
-A:显示所有的报告信息;
-b:显示I/O速率;
-B:显示换页状态;
-c:显示进程创建活动;
-d:显示每个块设备的状态;
-e:设置显示报告的结束时间;
-f:从指定文件提取报告;
-i:设状态信息刷新的间隔时间;
-P:报告每个CPU的状态;
-R:显示内存状态;
-u:显示CPU利用率;
-v:显示索引节点,文件和其他内核表的状态;
-w:显示交换分区状态;
-x:显示给定进程的状态。
sar常用性能数据分析
来看看一个监控墙的图片
查看CPU使用率
内存使用情况统计
查看平均负载
查看页面交换发生状况
整体I/O情况
查看CPU使用率
sar输出整体CPU的使用情况,不加选项时,默认使用的就是-u选项。
上面的信息是命令显示采样时间为5s,采样次数为2次,使用sar 5 2 等价于sar -u 5 2
可以看到这台机器使用了虚拟化技术,有相应的时间消耗; 各列的指标分别是:
%user 用户模式下消耗的CPU时间的比例;
%nice 通过nice改变了进程调度优先级的进程,在用户模式下消耗的CPU时间的比例
%system 系统模式下消耗的CPU时间的比例;
%iowait CPU等待磁盘I/O导致空闲状态消耗的时间比例;
%steal 利用Xen等操作系统虚拟化技术,等待其它虚拟CPU计算占用的时间比例;
%idle CPU空闲时间比例;
例如,每10秒采样一次,连续采样3次,观察CPU 的使用情况,并将采样结果以二进制形式存入当前目录下的文件test_sar中,需键入如下命令:
查看内存使用状况
sar -r: 指定-r之后,可查看物理内存使用状况
kbmemfree:这个值和free命令中的free值基本一致,所以它不包括buffer和cache的空间.
kbmemused:这个值和free命令中的used值基本一致,所以它包括buffer和cache的空间.
%memused:这个值是kbmemused和内存总量(不包括swap)的一个百分比.
kbbuffers和kbcached:这两个值就是free命令中的buffer和cache.
kbcommit:保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap).
%commit:这个值是kbcommit与内存总量(包括swap)的一个百分比.
查看平均负载
sar -q: 查看平均负载
指定-q后,就能查看运行队列中的进程数、系统上的进程大小、平均负载等;与其它命令相比,它能查看各项指标随时间变化的情况;
每1s采样一次,连续采样60次,监控进程队列长度和平均负载状态
runq-sz:运行队列的长度(等待运行的进程数)
plist-sz:进程列表中进程(processes)和线程(threads)的数量
ldavg-1:最后1分钟的系统平均负载(Systemload average)
ldavg-5:过去5分钟的系统平均负载
ldavg-15:过去15分钟的系统平均负载
整体I/O情况
使用-b选项,可以显示磁盘I/O的使用情况
tps: 每秒向磁盘设备请求数据的次数,包括读、写请求,为rtps与wtps的和。出于效率考虑,每一次IO下发后并不是立即处理请求,而是将请求合并(merge),这里tps指请求合并后的请求计数。
rtps: 每秒向磁盘设备的读请求次数
wtps: 每秒向磁盘设备的写请求次数
bread/s:每秒钟从物理设备读入的数据量,单位为 块/s
bwrtn/s:每秒钟向物理设备写入的数据量,单位为 块/s
查看页面交换发生状况
sar -W:查看页面交换发生状况
页面发生交换时,服务器的吞吐量会大幅下降。服务器状况不良时,如果怀疑因为内存不足而导致了页面交换的发生,可以使用这个命令来确认是否发生了大量的交换。
pswpin/s:每秒系统换入的交换页面(swap page)数量
pswpout/s:每秒系统换出的交换页面(swap page)数量
总结
sar是用于监控Linux系统各个性能的优秀工具,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。如果要判断系统瓶颈问题,有时需几个 sar 命令选项结合起来:
1、怀疑CPU存在瓶颈,可用 sar -u 和 sar -q 等来查看
2、怀疑内存存在瓶颈,可用sar -B、sar -r 和 sar -W 等来查看
3、怀疑I/O存在瓶颈,可用 sar -b、sar -u 和 sar -d 等来查看
欢迎关注微信公众号【程序猿编码】,添加本人微信号(17865354792),回复:领取学习资料。或者回复:进入技术交流群。网盘资料有如下: