sar命令简介
Linux中的sar命令是系统运行状态的统计命令,他讲指定的操作系统状态显示到标准的输出设备中,它的全称是system activity reporter,它可以从多个方面对系统的活动进行报告,包括但不限于:系统磁盘的io状况,cpu当前的效率值,内存使用的情况,进程活动以及文件读写情况等。
常用格式和参数
02
sar (命令选项)(相关参数)
-A:显示所有的报告信息; -b:显示I/O速率; -B:显示换页状态; -c:显示进程创建活动; -d:显示每个块设备的状态; -e:设置显示报告的结束时间; -f:从指定文件提取报告; -i:设状态信息刷新的间隔时间; -P:报告每个CPU的状态; -R:显示内存状态; -u:显示CPU利用率; -v:显示索引节点,文件和其他内核表的状态; -w:显示交换分区状态; -x:显示给定进程的状态。
-o file表示将命令结果以二进制格式存放在文件中,file 是文件名。
03
实际应用
“纸上得来终觉浅,绝知此事要躬行”,这里通过一系列的操作来了解这个命令:
1.查看内存和交换空间的使用率
代码语言:javascript复制[root@localhost yeyz]# sar -r
Linux 2.6.32-431.el6.x86_64 (localhost.localdomain) 年月日 _x86_64_ ( CPU)
时分秒 LINUX RESTART
时分秒 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit
时分秒 51.52 30.54
时分秒 51.54 30.54
时分秒 51.55 30.54
时分秒 51.55 30.54
时分秒 51.60 30.56
上面的结果中,kbmemfree与kbmemused字段分别显示内存的未使用与已使用空间,后面跟着的是已使用空间的百分比(%memused字段)。kbbuffers与kbcached字段分别显示缓冲区与系统全域的数据存取量,单位为KB,#commit 这个值是kbcommit与内存总量(物理内存 swap分区)的一个百分比的值
2.查看cpu资源监控,最后的两个数字代表,每10s采样一次,总共采样1次
代码语言:javascript复制[root dba_mysql]# sar -u -o test
Linux 2.6.32-642.6.2.el6.x86_64 (hb30-dba-mysql-master-124-44) // _x86_64_ ( CPU)
:: PM CPU %user %nice %system %iowait %steal %idle
:: PM all 3.70 0.01 3.56 3.50 0.00 89.22
Average: all 3.70 0.01 3.56 3.50 0.00 89.22
上面的信息每个列的描述如下:
CPU:all 表示统计信息为所有 CPU 的平均值。 %user:显示在用户级别(application)运行使用 CPU 总时间的百分比。 %nice:显示在用户级别,用于nice操作,所占用 CPU 总时间的百分比。 %system:在核心级别(kernel)运行所使用 CPU 总时间的百分比。 %iowait:显示用于等待I/O操作占用 CPU 总时间的百分比。 %steal:管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比。 %idle:显示 CPU 空闲时间占用 CPU 总时间的百分比。
3.内存分页监控
代码语言:javascript复制sar -B 10 1 后面两个参数表示每10s采样一次,总共采样1次
代码语言:javascript复制[root dba_mysql]# sar -B
Linux 2.6.32-642.6.2.el6.x86_64 (hb30-dba-mysql-master-124-44) // _x86_64_ ( CPU)
:: PM pgpgin/s pgpgout/s fault/s majflt/s pgfree/s pgscank/s pgscand/s pgsteal/s %vmeff
:: PM 35.90 51765.81 312.82 0.00 992.41 615.38 0.00 615.17 99.97
Average: 35.90 51765.81 312.82 0.00 992.41 615.38 0.00 615.17 99.97
上图中的输出结果描述如下: 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)的百分比
4.IO和传送速率监控
sar -b 10 3该命令表示每10s采样一次,连续采样3次,结果如下:
代码语言:javascript复制[root dba_mysql]# sar -b
Linux 2.6.32-642.6.2.el6.x86_64 (hb30-dba-mysql-master-124-44) // _x86_64_ ( CPU)
:: PM tps rtps wtps bread/s bwrtn/s
:: PM 19905.58 6.21 19899.37 138.11 195967.16
:: PM 19625.40 3.16 19622.23 101.16 192708.11
:: PM 20463.72 4.47 20459.26 142.98 203368.51
Average: 19996.72 4.61 19992.11 127.37 197328.36
tps:每秒钟物理设备的 I/O 传输总量 rtps:每秒钟从物理设备读入的数据总量 wtps:每秒钟向物理设备写入的数据总量 bread/s:每秒从物理设备读入的数据量,单位为块/s bwrtn/s:每秒向物理设备写入的数据量,单位为块/s
5.设备使用情况监控
代码语言:javascript复制sar -d 10 3 –p
代码语言:javascript复制[root dba_mysql]# sar -d -p
Linux 2.6.32-642.6.2.el6.x86_64 (hb30-dba-mysql-master-124-44) // _x86_64_ ( CPU)
:: PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
:: PM sdb 6422.96 44.02 82649.74 12.87 0.37 0.06 0.05 33.58
:: PM sda 1.27 36.40 5.93 33.33 0.00 0.00 0.00 0.00
:: PM data-main 11822.65 54.18 100249.74 8.48 0.70 0.06 0.03 40.81
:: PM sdc 1719.47 10.16 17600.00 10.24 0.11 0.07 0.06 10.73
:: PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
:: PM sdb 6530.57 67.94 83672.19 12.82 0.37 0.06 0.05 33.66
:: PM sda 2.02 0.00 22.08 10.95 0.00 0.32 0.16 0.03
:: PM data-main 12019.64 67.94 99746.07 8.30 0.72 0.06 0.03 41.25
:: PM sdc 1747.13 0.00 16072.19 9.20 0.11 0.06 0.06 10.57
:: PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
:: PM sdb 6149.74 111.55 78426.64 12.77 0.41 0.07 0.06 37.62
:: PM sda 0.31 0.00 4.16 13.33 0.00 1.00 1.00 0.03
:: PM data-main 11301.77 111.55 93956.30 8.32 0.74 0.07 0.04 45.05
:: PM sdc 1661.50 0.00 15531.32 9.35 0.12 0.07 0.07 11.12
Average: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
Average: sdb 6366.36 74.72 81562.92 12.82 0.38 0.06 0.05 34.97
Average: sda 1.19 12.08 10.67 19.06 0.00 0.26 0.18 0.02
Average: data-main 11712.04 78.09 97959.55 8.37 0.72 0.06 0.04 42.39
Average: sdc 1709.06 3.37 16396.63 9.60 0.11 0.07 0.06 10.81
该结果的说明如下:
参数-p可以打印出sda,hdc等磁盘设备名称,如果不用参数-p,设备节点则有可能是dev8-0,dev22-0 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命令匹配的参数还有很多,就像上面的参数介绍一样,其他参数大家可以手动去试试,都会输出采样的结果。一般来讲,内存情况和磁盘IO以及cpu情况的查询比较多,重点连接这三个指标即可。