暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Linux性能分析命令-sar

Linux日常小实验 2019-01-28
1172

实验环境:Centos7.4

实验目的:掌握linux 性能分析命令之sar命令

实验步骤:

黄金圈法则:

What:sar命令(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一。

Why:sar是自动记录信息的,可直接追溯历史统计信息,不太耗费资源。可以统计的内容包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。

How:


用法: sar 【 选项 】 【 <时间间隔> [ <次数> ] 】

-A:所有报告的总和

-b:显示I/O和传递速率的统计信息

-B:显示换页状态

-d:输出每一块磁盘的使用信息

-e:设置显示报告的结束时间

-f:从制定的文件读取报告

-i:设置状态信息刷新的间隔时间

-P:报告每个CPU的状态

-R:显示内存状态

–u:输出cpu使用情况和统计信息

–v:显示索引节点、文件和其他内核表的状态

-w:显示交换分区的状态

-x:显示给定进程的装

-r:报告内存利用率的统计信息

总结一下,这个命令其实不难,难的是命令出来的结果值,及针对结果值进行的分析。

CPU

示例一、整体CPU使用情况(-u),CPU的信息是最难统计的。

使用-u选项,sar输出整体CPU的使用情况,不加选项时,默认使用的就是-u选项。

# sar 3  10 /*采样3秒,10次*/

# sar -u 3 10

输出项说明:

CPU:all表示统计信息为所有CPU的平均值。

%usr:CPU在用户态执行进程的时间百分比。

%nice:CPU在用户态模式下,用于nice操作,所占用CPU总时间的百分比。

%system:CPU处在内核态执行进程的时间百分比。

%iowait:CPU用于等待I/O操作占用CPU总时间的百分比。

%steal:管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟CPU的百分比。

%idle:CPU空闲时间百分比。

对命令结果的一些简单判断

1、若 %iowait 的值过高,表示硬盘存在I/O瓶颈;

2、若 %idle 的值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量;

3、 若 %idle 的值持续低于1,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU。

实例二、各个cpu的使用情况(-P)

"-P ALL"选项指示对每个内核输出统计信息:

#  sar -P ALL 1 1  /*ALL需要大写,1s的采样时间,次数为1次*/

其中”CPU”列输出0,1,2,3,4,5指示对应的cpu核。也可针对单独一个内核显示,“-P 1”指示显示第二个内核的统计信息。


内存

实例三、内存使用情况统计(-r)

# sar -r 1 2    /*以1秒为采样时间,次数为2次 */

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 -B 3 2

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

实例五、整体IO情况,使用-b选项,可以显示磁盘I/O的使用情况:

# sar -b 3 2

tps:每秒向磁盘设备请求数据的次数,包括读、写请求,为rtps与wtps的和。出于效率考虑,每一次IO下发后并不是立即处理请求,而是将请求合并(merge),这里tps指请求合并后的请求计数。

rtps: 每秒向磁盘设备的读请求次数

wtps: 每秒向磁盘设备的写请求次数

bread/s:每秒钟从物理设备读入的数据量,单位为 块/s

bwrtn/s:每秒钟向物理设备写入的数据量,单位为 块/s

实例六、统计IO各个磁盘的情况,使用-d选项可以显示各个磁盘的统计信息

# sar -d -p 3 2

rd_sec/s: 每秒从设备读取的扇区数

wr_sec/s: 每秒往设备写入的扇区数

avgrq-sz: 发送给设备的请求的平均大小(以扇区为单位)

avgqu-sz: 发送给设备的请求队列的平均长度

await:服务等待I/O请求的平均时间,包括请求队列等待时间 (单位毫秒)

svctm:设备处理I/O请求的平均时间,不包括请求队列等待时间 (单位毫秒)

%util:一秒中有百分之多少的时间用于 I/O 操作,即被io消耗的cpu百分比。

备注:

-如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。

-如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;如果 await 远大于 svctm,说明I/O 队列太长,io响应太慢,则需要进行必要优化。

-如果avgqu-sz比较大,也表示有当量io在等待。


网络统计

使用-n选项可以对网络使用情况进行显示,-n后接关键词”DEV”可显示eth0、eth1等网卡的信息:

# sar -n DEV 1 1

IFACE 本地网卡接口的名称

rxpck/s 每秒钟接受的数据包

txpck/s 每秒钟发送的数据库

rxKB/S 每秒钟接受的数据包大小,单位为KB

txKB/S 每秒钟发送的数据包大小,单位为KB

rxcmp/s 每秒钟接受的压缩数据包

txcmp/s 每秒钟发送的压缩包

rxmcst/s 每秒钟接收的多播数据包

sar还有很多其他的参数等待读者去发掘,每一项都能看懂,那么问题来了,我每一项都能看懂,但是他们组合起来的结果,我就迷糊了,这些数字的高低,代表着什么,对linux操作系统调优有什么影响,linux系统调优是一个系统性的工程,非三篇两篇文章就能解释透的,我自己也限于知识积累的厚度,不能给读者展示一个全貌,只能提出一些问题,希望读者能根据问题继续深入研究。

如果您喜欢我的文章,请长按以下图片关注我的公众号,学习Linux的路上,期待与您同行。


文章转载自Linux日常小实验,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论