sar是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。
sar常用命令项如下:
-A:所有报告的总和
-u:输出CPU使用情况的统计信息
-v:输出inode、文件和其他内核表的统计信息
-d:输出每一个块设备的活动信息
-r:输出内存和交换空间的统计信息
-b:显示I/O和传送速率的统计信息
-a:文件读写情况
-c:输出进程统计信息,每秒创建的进程数
-R:输出内存页面的统计信息
-y:终端设备活动情况
-w:输出系统交换活动信息
CPU资源监控
[root@centos6-mysql-172 ~]# sar -u 1 -o cpu
Linux 3.2.0+ (centos6-mysql-172) 10/31/2013 _x86_64_ (1 CPU)
10:54:39 AM CPU %user %nice %system %iowait %steal %idle
10:54:40 AM all 0.00 0.00 36.90 63.10 0.00 0.00
10:54:41 AM all 0.00 0.00 35.71 64.29 0.00 0.00
10:54:42 AM all 0.00 0.00 34.52 65.48 0.00 0.00
10:54:43 AM all 1.19 0.00 34.52 64.29 0.00 0.00
10:54:44 AM all 0.00 0.00 34.12 65.88 0.00 0.00
10:54:45 AM all 0.00 0.00 35.71 64.29 0.00 0.00
10:54:46 AM all 0.00 0.00 34.94 65.06 0.00 0.00
10:54:47 AM all 0.00 0.00 35.29 64.71 0.00 0.00
sar的输出结果以二进制的形式存放于cpu文件中,输出结果说明如下:
CPU:all 表示统计信息为所有 CPU 的平均值。
%user:显示在用户级别(application)运行使用 CPU 总时间的百分比。
%nice:显示在用户级别,用于nice操作,所占用 CPU 总时间的百分比。
%system:在核心级别(kernel)运行所使用 CPU 总时间的百分比。
%iowait:显示用于等待I/O操作占用 CPU 总时间的百分比。
%steal:管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比。
%idle:显示 CPU 空闲时间占用 CPU 总时间的百分比。
1. 若 %iowait 的值过高,表示硬盘存在I/O瓶颈
2. 若 %idle 的值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量
3. 若 %idle 的值持续低于1,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU 。
如果想读取存放于cpu文件中的采集信息,键入下述命令
sar -u -f cpu
内核表监控
[root@centos6-mysql-172 ~]# sar -v 1
Linux 3.2.0+ (centos6-mysql-172) 10/31/2013 _x86_64_ (1 CPU)
10:59:01 AM dentunusd file-nr inode-nr pty-nr
10:59:02 AM 5769 736 11728 2
10:59:03 AM 5769 736 11728 2
10:59:04 AM 5769 736 11728 2
10:59:05 AM 5769 736 11728 2
10:59:06 AM 5769 736 11728 2
10:59:07 AM 5769 736 11728 2
10:59:08 AM 5769 736 11728 2
参数说明
dentunusd:目录高速缓存中未被使用的条目数量
file-nr:文件句柄(file handle)的使用数量
inode-nr:索引节点句柄(inode handle)的使用数量
pty-nr:使用的pty数量
内存、交换空间监控
[root@centos6-mysql-172 ~]# sar -r 1
Linux 3.2.0+ (centos6-mysql-172) 10/31/2013 _x86_64_ (1 CPU)
11:00:16 AM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit
11:00:17 AM 67244 1988488 96.73 1293176 519988 191156 4.60
11:00:18 AM 70344 1985388 96.58 1290324 519992 191156 4.60
11:00:19 AM 72700 1983032 96.46 1288060 519992 191156 4.60
11:00:20 AM 75304 1980428 96.34 1285228 519964 191156 4.60
11:00:21 AM 67740 1987992 96.70 1292728 519956 191156 4.60
11:00:22 AM 69724 1986008 96.61 1290480 519960 191156 4.60
11:00:23 AM 73940 1981792 96.40 1286608 520004 191156 4.60
11:00:24 AM 67988 1987744 96.69 1292464 519948 191156 4.60
11:00:25 AM 71088 1984644 96.54 1289392 519992 191156 4.60
11:00:26 AM 74312 1981420 96.39 1286112 520004 191156 4.60
参数说明
kbmemfree:这个值和free命令中的free值基本一致,所以它不包括buffer和cache的空间.
kbmemused:这个值和free命令中的used值基本一致,所以它包括buffer和cache的空间.
%memused:这个值是kbmemused和内存总量(不包括swap)的一个百分比.
kbbuffers和kbcached:这两个值就是free命令中的buffer和cache.
kbcommit:保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap).
%commit:这个值是kbcommit与内存总量(包括swap)的一个百分比.
内存分页监控
[root@centos6-mysql-172 ~]# sar -B 1
Linux 3.2.0+ (centos6-mysql-172) 10/31/2013 _x86_64_ (1 CPU)
11:01:17 AM pgpgin/s pgpgout/s fault/s majflt/s pgfree/s pgscank/s pgscand/s pgsteal/s %vmeff
11:01:18 AM 0.00 117028.57 45.24 0.00 27979.76 26345.24 0.00 26345.24 100.00
11:01:19 AM 0.00 117028.57 46.43 0.00 30550.00 28780.95 0.00 28780.95 100.00
11:01:20 AM 0.00 118438.55 37.35 0.00 31907.23 29939.76 0.00 29939.76 100.00
11:01:21 AM 0.00 117042.86 36.90 0.00 30463.10 28526.19 0.00 28526.19 100.00
11:01:22 AM 0.00 102400.00 38.75 0.00 29227.50 27390.00 0.00 27390.00 100.00
11:01:23 AM 0.00 114306.98 36.05 0.00 29694.19 27945.35 0.00 27945.35 100.00
11:01:24 AM 0.00 118438.55 37.35 0.00 31238.55 29313.25 0.00 29303.61 99.97
11:01:25 AM 0.00 115651.76 36.47 0.00 30629.41 28709.41 0.00 28709.41 100.00
11:01:26 AM 0.00 99907.32 37.80 0.00 31389.02 29401.22 0.00 29401.22 100.00
11:01:27 AM 0.00 118438.55 37.35 0.00 28146.99 26312.05 0.00 26312.05 100.00
参数说明
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)的百分比
IO以及传输速率监控
[root@centos6-mysql-172 ~]# sar -b 1
Linux 3.2.0+ (centos6-mysql-172) 10/31/2013 _x86_64_ (1 CPU)
11:03:47 AM tps rtps wtps bread/s bwrtn/s
11:03:48 AM 230.49 0.00 230.49 0.00 236019.51
11:03:49 AM 224.71 0.00 224.71 0.00 230098.82
11:03:50 AM 227.38 0.00 227.38 0.00 232838.10
11:03:51 AM 234.15 0.00 234.15 0.00 239765.85
11:03:52 AM 224.71 0.00 224.71 0.00 230098.82
11:03:53 AM 224.71 0.00 224.71 0.00 230098.82
11:03:54 AM 215.48 0.00 215.48 0.00 220647.62
11:03:55 AM 220.00 0.00 220.00 0.00 225280.00
11:03:56 AM 234.57 0.00 234.57 0.00 240197.53
11:03:57 AM 209.41 0.00 209.41 0.00 214437.65
参数说明
tps:每秒钟物理设备的 I/O 传输总量
rtps:每秒钟从物理设备读入的数据总量
wtps:每秒钟向物理设备写入的数据总量
bread/s:每秒钟从物理设备读入的数据量,单位为 块/s
bwrtn/s:每秒钟向物理设备写入的数据量,单位为 块/s
进程队列、负载监控
[root@centos6-mysql-172 ~]# sar -q 1
Linux 3.2.0+ (centos6-mysql-172) 10/31/2013 _x86_64_ (1 CPU)
11:05:15 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15
11:05:16 AM 1 108 1.82 1.85 1.78
11:05:17 AM 1 108 1.82 1.85 1.78
11:05:18 AM 1 108 1.82 1.85 1.78
11:05:19 AM 1 108 1.82 1.85 1.78
11:05:20 AM 2 108 1.84 1.85 1.78
11:05:21 AM 1 108 1.84 1.85 1.78
11:05:22 AM 1 108 1.84 1.85 1.78
11:05:23 AM 1 108 1.84 1.85 1.78
11:05:24 AM 1 108 1.84 1.85 1.78
11:05:25 AM 1 108 1.85 1.85 1.78
11:05:26 AM 1 108 1.85 1.85 1.78
11:05:27 AM 2 109 1.85 1.85 1.78
参数说明
runq-sz:运行队列的长度(等待运行的进程数)
plist-sz:进程列表中进程(processes)和线程(threads)的数量
ldavg-1:最后1分钟的系统平均负载(System load average)
ldavg-5:过去5分钟的系统平均负载
ldavg-15:过去15分钟的系统平均负载
系统交换信息监控
[root@centos6-mysql-172 ~]# sar -W 1
Linux 3.2.0+ (centos6-mysql-172) 10/31/2013 _x86_64_ (1 CPU)
11:06:22 AM pswpin/s pswpout/s
11:06:23 AM 0.00 0.00
11:06:24 AM 0.00 0.00
11:06:25 AM 0.00 0.00
11:06:26 AM 0.00 0.00
11:06:27 AM 0.00 0.00
11:06:28 AM 0.00 0.00
11:06:29 AM 0.00 0.00
11:06:30 AM 0.00 0.00
11:06:31 AM 0.00 0.00
11:06:32 AM 0.00 0.00
参数说明
pswpin/s:每秒系统换入的交换页面(swap page)数量
pswpout/s:每秒系统换出的交换页面(swap page)数量
块设备使用情况监控
[root@centos6-mysql-172 ~]# sar -d 1 -p
Linux 3.2.0+ (centos6-mysql-172) 10/31/2013 _x86_64_ (1 CPU)
11:08:04 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
11:08:05 AM sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11:08:05 AM sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11:08:05 AM sdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11:08:05 AM sdd 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11:08:05 AM vg_centos6mysql1-LogVol00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11:08:05 AM fd0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11:08:05 AM mysql-lvol0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11:08:05 AM sde 234.15 0.00 239765.85 1024.00 166.32 738.41 5.20 121.83
参数说明
参数-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:从请求磁盘操作到系统完成处理,每次请求的平均消耗时间,包括请求队列等待时间,单位是毫秒
svctm:系统处理每次请求的平均时间,不包括在请求队列中消耗的时间.
%util:I/O请求占CPU的百分比,比率越大,说明越饱和.