Linux之sar命令

2019-11-06 15:30:37 浏览数 (1)

Linux之sar命令
01

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情况的查询比较多,重点连接这三个指标即可。

0 人点赞