sar(SystemActivityReporter系统活动报告)是目前Linux上最全面的系统性能分析工具之一,可以从各个方面监控系统活动报告,包括:文件读写、系统调用使用、磁盘I/O、CPU效率、内存使用、进程活动和IPC相关活动。我们可以使用sar命令来获得关于整体系统性能的报告。这有助于我们定位系统性能瓶颈,并帮助我们找出解决这些烦人的性能问题的方法。Linux内核维护一些内部计数器。这些计数器包含所有请求及其完成时间和I/O块等信息。sar命令从所有这些信息中计算出利用率和请求比例,以便找出瓶颈所在。.sar命令的主要目的是生成一定时间内所有活动的报告,所以需要保证sar命令在合适的时间采集数据(不是午餐时间或者周末)原文地址:https://shockerli.net/post/li...命令参数用法:sar[options][[]]主要选项和报告:-bI/O和传输速率信息状态-B分页状态-d块设备状态-I{<中断>|求和|所有|XALL}中断信息状态-m电源管理信息状态-n{<关键字>[,...]|ALL}网络统计关键字可以是:DEVNICEDEVNIC(error)NFSNFSClientNFSDNFSServerSOCKSockets(v4)IPIPStream(v4)EIPIPStream(v4)(Error)ICMPICMPStream(v4)EICMPICMPStream(v4)(错误)TCPTCP流(v4)ETCPTCP流(v4)(错误)UDPUDP流(v4)SOCK6套接字(v6)IP6IP流(v6)EIP6IP流(v6)(错误)ICMP6ICMP流(v6)EICMP6ICMPflow(v6)(error)UDP6UDPflow(v6)-q队列长度和平均负载-r内存利用率-R内存状态-S交换空间利用率Rate-u[ALL]CPU利用率-v内核表状态-w任务创建和系统转换统计-W交换信息-yTTY设备状态-o{<文件路径>}将命令结果以二进制格式存储到指定文件中常用命令sar来自sysstat工具包。如果sar命令不存在,需要先安装sysstat网络统计。5平均时间:IFACErxpck/stxpck/srxkB/stxkB/srxcmp/stxcmp/srxmcst/s平均时间:lo2.212.210.180.180.000.000.00平均时间:eth04.623.820.370.000.05表示每秒取一次值,一共取5次值。命令执行后会列出每块网卡的5个值的平均值数据,满带宽的网卡名称可根据实际情况确定。默认情况下,eth0是内部网卡,eth1是外部网卡。CPU利用率sar-u[<时间间隔>[<次数>]]示例:sar-u13Linux2.6.32-642.13.1.el6.x86_64(upfor106)April25,2018_x86_64_(1CPU)10:33:08CPU%user%nice%system%iowait%steal%idle10:33:09所有0.000.000.000.000.00100.0010:33:10所有0.990.000.990.000.0098.0210:33:10.000.00.0平均1000.0time:all0.330.000.330.000.0099.33命令中13表示每秒取一个值,一共取3次。输出项说明:CPU:all表示统计的是所有CPU的平均值。%user:显示用于运行在用户级别(应用程序)的总CPU时间百分比%nice:显示用于运行在用户级别用于nice操作的总CPU时间百分比%system:用于运行在内核level(kernel)占总时间的百分比%iowait:显示CPU等待I/O操作的总时间百分比%steal:hypervisor为另一个虚拟进程提供服务,同时等待虚拟CPU的百分比%idle:显示CPU空闲timeoccupied占CPU总时间的百分比1.如果%iowait的值过高,说明硬盘有I/O瓶颈。2.如果%idle的值很高但是系统响应慢,可能是CPU在等待分配内存,此时应该增加内存Capacity3.如果%idle的值持续变低比1,系统的CPU处理能力比较低,说明系统中最需要解析的资源是CPU索引节点、文件等内核表的状态sar-v[<时间间隔>[<次数>]]示例:sar-v13Linux2.6.32-696.13.2.el6.x86_64(upfor163)2018-04-25_x86_64_(2CPU)10:50:29dentunusdfile-nrinode-nrpty-nr10:50:3092004586413910210:50:3192004586413910210:50:32920045896139102平均时间:920045875139102输出条目描述:dentunusd:在目录缓存中未使用的条目数file-nrus使用的文件句柄数inode-nr:使用的inode句柄数pty-nr:使用的pty数内存利用率sar-r[[]]示例:sar-r13Linux2.6.32-696.13.2.el6.x86_64(upfor163)2018年04月25日_x86_64_(2CPU)10时53分00秒kbmemfreekbmemused%memusedkbbufferskbcachedkbcommit%commit10时53分01秒2027760202873250.011454921243820116390028.6910时53分02秒2027620202887250.021454921243820116389628.6910时53分03秒2028100202839250.001454921243820116390028.69平均时间:2027827202866550.011454921243820116389928.69输出项说明:kbmemfree:这个值和free命令中的free值基本一致,所以它不包括buffer和cacheThespacekbmemused:Thisvalueisbasicallythesameastheusedvalueinthefreecommand,soitincludesthebufferandcachespace%memused:Thisvalueisapercentageofkbmemusedandthetotalmemory(excludingswap)kbbuffersandkbcached:thesetwoThevalueisthebufferandcachekbcommitinthefreecommand:guaranteethememoryrequiredbythecurrentsystem,thatis,thememoryrequiredtoensurenooverflow(RAM+swap)%commit:thisvalueisapercentageofkbcommitandthetotalmemory(includingswap)Memorypagingstatussar-B[[]]Example:sar-B13Linux2.6.32-696.13.2.el6.x86_64(upfor163)April25,2018_x86_64_(2CPU)10:55:41pgpgin/spgpgout/sfault/smajflt/spgfree/spgscank/spgscand/spgsteal/s%vmeff10时55分42秒0.000.005723.760.003356.440.000.000.000.0010时55分43秒0.000.001185.000.00312.000.000.000.000.0010时55分44秒0.000.0027.000.0056.000.000.000.000.00平均时间:0.000.002323.260.001248.500.000.000.000.00输出项说明:pgpgin/s:表示每秒从磁盘或SWAP替换到内存的字节数(KB)pgpgout/s:表示每秒从内存替换到磁盘或SWAP的字数Numberofsections(KB)fault/s:系统每秒产生的pagefault数量,即primaryfaultpage和secondaryfaultpage的总和(major+minor)majflt/s:primary的数量faultpagesgeneratedpersecondpgfree/s:每秒放入空闲队列的页面数pgscank/s:kswapd每秒扫描的页面数pgscand/s:每秒直接扫描的页面数pgsteal/s:numberofpagesscannedpersecond为满足内存需求而清除的页面数%vmeff:每秒清除的页面数(pgsteal)占总扫描页面数(pgscank+pgscand)I/O和传输速率信息statussar-b[<时间间隔>[<次数>]]示例:sar-b13Linux2.6.32-696.13.2.el6.x86_64(upfor163)2018-04-25_x86_64_(2CPU)10:58:15tpsrtpswtpsbread/sbwrtn/s10:58:167.000.007.000.0064.0010:58:174.040.004.040.0080.8110:58:180.000.000.000.000.00平均时间:3.670.003.670.0048.00输出项说明:tps:每秒物理设备的总I/O传输量rtps:per总量ofdatareadfromthephysicaldevicepersecondwtps:每秒写入物理设备的数据总量bread/s:每秒从物理设备读取的数据量,单位是:block/sbwrtn/s:每秒写入物理设备的数据量,单位为:block/s队列长度和平均负载sar-q[[]]example:sar-q13Linux2.6.32-696.13.2.el6.x86_64(upfor163)2018-04-25_x86_64_(2CPU)11:00:35runq-szplist-szldavg-1ldavg-5ldavg-1511:00:3602680.000.000.0011:00:3702680.000.000.0011:00:3802680.000.000.00平均时间:02680.000.000.00输出说明:runq-sz:运行队列长度(等待运行的进程数)plist-sz:进程数andthreadsintheprocesslistldavg-1:最近1分钟的平均系统负载(Systemloadaverage)ldavg-5:过去5分钟的平均系统负载ldavg-15:过去15分钟系统平均负载系统交换信息sar-W[<时间间隔>[<次数>]]例子:sar-W13Linux2.6.32-696.13.2.el6.x86_64(upfor163)2018-04-25_x86_64_(2CPU)11:01:45pswpin/spswpout/s11:01:460.000.0011:01:470.000.0011:0148秒0.000.00平均时间:0.000.00输出项说明:pswpin/s:系统每秒换入的交换页(swappages)数pswpout/s:系统每秒换出的交换页(swappages)数块设备statussar-d[[]]示例:sar-d13Linux2.6.32-696.13.2.el6.x86_64(upfor163)April25,2018_x86_64_(2CPU)11:02min46secDEVtpsrd_sec/swr_sec/savgrq-szavgqu-sz等待svctm%util11:02:47dev252-00.000.000.000.000.000.000.000.0011:02:47DEVtpsrd_sec/swravgrq-szavgqu-szavgqusvctm%util11:02:48dev252-06.060.0064.6510.670.000.000.000.0011:02:48DEVtpsrd_sec/swr_sec/s1avgrq-szutv1%ilv1sctawa02分钟49秒0.00.00.0dev252-0.00..000.000.000.00平均时间:DEVtpsrd_sec/swr_sec/savgrq-szavgqu-szawaitsvctm%util平均时间:dev252-02.000.0021.3310.670.000.000.000.00输出项描述:来自物理磁盘的tps:每秒I/O多个逻辑请求的个数会合并成一个I/O磁盘请求,一次传输的大小不确定rd_sec/s:每秒读扇区数wr_sec/s:每秒写扇区数avgrq-sz:每次设备I/O操作的平均数据大小(扇区)avgqu-sz:磁盘请求队列的平均长度await:每次请求从请求磁盘操作到系统完成的平均消耗时间处理,包括请求队列等待时间,单位毫秒(1秒=1000毫秒)svctm:系统处理每个请求的平均时间,不包括在请求队列中消耗的时间。%util:I/O请求对CPU的百分比,比率越大,表示越饱和1.avgqu-sz的值越低,设备的利用率越高2.当%util接近1%,表示设备带宽已经被占满,输出统计的数据信息sar-opath_file[option][[]]示例:sar-osarfile.log-u13上面的示例命令会将sar-u13收集的数据以二进制格式存储在文件sarfile.log中。我们还可以通过命令sadf-dsarfile.log将二进制数据文件转换为数据库可读格式。sadf-dsarfile.log#hostname;interval;timestamp;CPU;%user;%nice;%system;%iowait;%steal;%idleupfor163;1;2018-04-2503:15:02UTC;-1;0.00;0.00;0.50;0.50;0.00;99.00upfor163;1;2018-04-2503:15:03UTC;-1;1.01;0.00;0.00;0.00;0.00;98.99upfor163;1;2018-04-2503:15:04UTC;-1;0.00;0.00;0.00;0.00;0.00;100.00这些数据也可以存储在csv文件中,然后绘制成图表显示,如下图:sadf-dsarfile.log|sed's/;/,/g'>sarfile.csv从数据文件中读取信息sar-f<文件路径>例子:sar-fsarfile.logLinux2.6.32-696.13.2.el6.x86_64(upfor163)2018-04-25_x86_64_(2CPU)11:15:01CPU%user%nice%system%iowait%steal%idle11:15:02所有0.000.000.500.500.0099.0011:15:03所有1.010.000.000.000.901:98.0015:04all0.000.000.000.000.00100.00平均时间:all0.330.000.170.170.0099.33读取并显示之前存储在二进制文件中的数据。性能问题排查技巧如果怀疑是CPU瓶颈,可以使用sar-u和sar-q查看疑似内存瓶颈,可以使用sar-B、sar-r和sar-W查看疑似I/O瓶颈,可以用sar-b。sar-u和sar-d等查看原文地址:https://shockerli.net/post/li...