一、命令使用介绍 sar命令全称 System Activity Report,它非常全能,可以分析linux系统各个维度的指标。包括: 文件的读写情况 系统调用的使用情况 磁盘I/O CPU效率 内存使用状况(包括内存页面的置换) 进程活动 IPC有关的活动 网卡相关信息 他的命令常用格式如下: sar [options] [-A] [-o file] t [n] 其中t为采样间隔,n为采样次数,默认值是1;-o file表示将命令结果以二进制格式存放在文件中,file是文件名;options为命令行选项,sar常用的选项有以下(主要各个维度的对应参数信息): -A:所有报告的总和 -u:输出CPU使用情况的统计信息 -q:输出cpu等待队列的长度相关统计信息 -v:输出inode、文件和其他内核表的统计信息 -d:输出每一个块设备的活动信息 -r:输出内存和交换空间的统计信息 -b:显示I/O和传送速率的统计信息 -a:文件读写情况 -c:输出进程统计信息,每秒创建的进程数 -R:输出内存页面的统计信息 -y:终端设备活动情况 -w:输出系统交换活动信息 二、系统各个维度的性能分析1、CPU相关指标和CPU相关的指标的参数主要有 -P、-u、-q。 1.1、 -P 或者 -u 输出CPU使用情况的统计信息其中-u是输出cpu总的相关性能指标,-P可以指定输出某一个cpu的指标(会把cpu一个个列出来) # 获取cpu的一个总的信息(默认就是-u) 输出: 03:47:05 PM CPU %user %nice %system %iowait %steal %idle 相关指标含义: %user:CPU处在用户模式下的时间百分比 %nice:CPU处在带NICE值的用户模式下的时间百分比 %system:CPU处在系统模式下的时间百分比 %iowait:CPU等待输入输出完成时间的百分比 %steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比 %idle:CPU空闲时间百分比 1.2、 -q 输出CPU队列的相关统计信息sar -q 2 2 输出: 03:54:30 PM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 相关指标含义: runq-sz:运行队列的长度(等待运行的进程数); plist-sz:进程列表中进程(processes)和线程(threads)的数量,很多线程可能在休眠中 ldavg-1:最后1分钟的系统平均负载; ldavg-5:过去5分钟的系统平均负载; ldavg-15:过去15分钟的系统平均负载; 2、磁盘相关指标(建议用iostat)我们可以通过-b、-d来输出磁盘的相关指标。通过 2.1、 -b 输出磁盘基本信息sar -b 2 2 输出: 04:10:11 PM tps rtps wtps bread/s bwrtn/s 相关指标含义:
2.2、-d 输出磁盘更详细的信息sar -d 2 2 输出: 04:13:39 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 相关指标含义: DEV:磁盘设备; 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的百分比,比率越大,说明越饱; 3、内存相关指标(-n 参数)通过 -B、-r、-W 来查看内存的相关指标 3.1、-r 查看内存的使用情况sar -r 2 2 输出: 05:37:07 PM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit 相关指标含义: kbmemfree:这个值和free命令中的free值基本一致,所以它不包括buffer和cache的空间; kbmemused:这个值和free命令中的used值基本一致,所以它包括buffer和cache的空间; %memused:这个值是kbmemused和内存总量(不包括swap)的一个百分比; kbbuffers:这两个值就是free命令中的buffer; kbcached:这两个值就是free命令中的cache; kbcommit:保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM + swap); %commit:这个值是kbcommit与内存总量(包括swap)的一个百分比; 3.2、-B 查看内存分页的情况sar -B 2 2输出 05:39:43 PM pgpgin/s pgpgout/s fault/s majflt/s pgfree/s pgscank/s pgscand/s pgsteal/s %vmeff 相关指标含义: 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)的百分比; 3.3、-W 查看SWAP交换的统计信息sar -W 2 2 输出: 05:41:40 PM pswpin/s pswpout/s 相关指标含义:
4、网络相关指标使用姿势: # keyword 表示不同的几个开关。包括:DEV | EDEV | NFS | NFSD | SOCK
4.1、网络接口相关信息sar -n DEV 2 2 输出: 05:48:11 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 相关指标含义: IFACE:LAN接口网络设备的名称; rxpck/s:每秒钟接收的数据包; txpck/s:每秒钟发送的数据包; rxkB/s:每秒钟接收的字节数; txkB/s:每秒钟发送的字节数; rxcmp/s:每秒钟接收的压缩数据包; txcmp/s:每秒钟发送的压缩数据包; rxmcst/s:每秒钟接收的多播数据包; 4.2、网络错误的统计数据sar -n EDEV 2 2 输出: 05:49:25 PM IFACE rxerr/s txerr/s coll/s rxdrop/s txdrop/s txcarr/s rxfram/s rxfifo/s txfifo/s 相关指标含义: IFACE:LAN接口网络设备的名称; rxerr/s:每秒钟接收的坏数据包; txerr/s:每秒钟发送的坏数据包; coll/s:每秒冲突数; rxdrop/s:因为缓冲充满,每秒钟丢弃的已接收数据包数; txdrop/s:因为缓冲充满,每秒钟丢弃的已发送数据包数; txcarr/s:发送数据包时,每秒载波错误数; rxfram/s:每秒接收数据包的帧对齐错误数; rxfifo/s:接收的数据包每秒FIFO过速的错误数; txfifo/s:发送的数据包每秒FIFO过速的错误数 4.3、 查看套接字相关信息sar -n SOCK 2 2 输出: 05:51:14 PM totsck tcpsck udpsck rawsck ip-frag tcp-tw 相关指标含义: totsck:使用的套接字总数量; tcpsck:使用的TCP套接字数量; udpsck:使用的UDP套接字数量; rawsck:使用的RAW套接字数量; ip-frag:当前的IP分片的数目; tcp-tw:TCP套接字中处于TIME-WAIT状态的连接数量 三、其他1、关于输出二进制文件和读取sa二进制文件通过-o参数,可以将性能报告输出到指定的文件中。不过这个文件是二进制的,需要查看具体的信息还是需要通过sar命令来打开解析。 # 输出到指定的文件 2、关于sysstat包 sar、sa1和sa2命令都是sysstat包的一部分。它是Linux包含的性能监视工具集合。 sar:显示数据 sa1和sa2:收集和保存数据用于以后分析。sa2shell脚本在/var/log/sa目录中每日写入一个报告。sa1shell脚本将每日的系统活动信息以二进制数据的形式写入到文件中。 我们可以在/etc/cron.d/下sysstat文件中找到sar默认的cron作业,如下: # Run system activity accounting tool every 10 minutes 这样我们就可以按照我们的需求,进行输出定制化了。 sar不止上面说的几个程序: sar:收集、报告或存储信息(CPU、内存、磁盘、中断、网卡、TTY、内核表等等); sadc:系统数据收集器,给sar做后台服务; sa1:收记并存储二进制数据到每天的文件;这是设计来给cron执行一个sadc的前台程序; sa2:生成总结报表; sadf:以多种格式显示数据(CSV, XML, JSON, etc.),还可以用来生成SVG(Scalable Vector Graphics)图表。 ![]() ---------------------------------------------------------------------------------------------------------------------- 我们尊重原创,也注重分享,文章来源于微信公众号:Linux知识积累,建议关注公众号查看原文。如若侵权请联系qter@qter.org。 ---------------------------------------------------------------------------------------------------------------------- |