详解Linux sar命令测评VPS性能

sar(System Activity Reporter)是目前最全面的系统分析工具,可以全面的测评Linux系统的文件的读写、系统调用、I/O、CPU效率、内存使用、进程活动及IPC有关的参数。

Linux sar命令安装方法:一般我们使用的VPS安装包中是没有安装该组件的。

yum-yinstallsysstat

上述命令在centos中安装。安装后我们需要等待一段时间才可以有数据反映出来。使用下面的命令格式。

sar [options] [-A] [-o file] t [n]

其中:
t为采样间隔,n为采样次数,默认值是1;
-o file表示将命令结果以二进制格式存放在文件中,file 是文件名。

options 为命令行选项,sar命令常用选项如下:

-A:所有报告的总和
-u:输出CPU使用情况的统计信息
-v:输出inode、文件和其他内核表的统计信息
-d:输出每一个块设备的活动信息
-r:输出内存和交换空间的统计信息
-b:显示I/O和传送速率的统计信息
-a:文件读写情况
-c:输出进程统计信息,每秒创建的进程数
-R:输出内存页面的统计信息
-y:终端设备活动情况
-w:输出系统交换活动信息
范例之一,CPU性能测试:每10秒采样一次,连续采样3次

[[email protected] /]# sar -u 10 3
Linux 3.6.5-linode47 (li413-187) 	12/25/2012 	_i686_	(4 CPU)

02:28:14 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
02:28:24 PM     all      0.00      0.00      0.03      0.00      0.00     99.97
02:28:34 PM     all      0.00      0.00      0.00      0.00      0.00    100.00
02:28:44 PM     all      0.00      0.00      0.00      0.00      0.00    100.00
Average:        all      0.00      0.00      0.01      0.00      0.00     99.99

说明内容:
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。

范例之二,I/O和传送速率监控:每10秒采样一次,连续采样3次,报告缓冲区的使用情况

[[email protected] /]# sar -b 10 3
Linux 3.6.5-linode47 (li413-187) 	12/25/2012 	_i686_	(4 CPU)
02:34:59 PM       tps      rtps      wtps   bread/s   bwrtn/s
02:35:09 PM      0.00      0.00      0.00      0.00      0.00
02:35:19 PM      0.00      0.00      0.00      0.00      0.00
02:35:29 PM      0.00      0.00      0.00      0.00      0.00
Average:         0.00      0.00      0.00      0.00      0.00

输出项说明:
tps:每秒钟物理设备的 I/O 传输总量
rtps:每秒钟从物理设备读入的数据总量
wtps:每秒钟向物理设备写入的数据总量
bread/s:每秒钟从物理设备读入的数据量,单位为 块/s
bwrtn/s:每秒钟向物理设备写入的数据量,单位为 块/s
范例之三,进程队列长度和平均负载状态监控:每10秒采样一次,连续采样3次,监控进程队列长度和平均负载状态

[[email protected] /]# sar -q 10 3
Linux 3.6.5-linode47 (li413-187) 	12/25/2012 	_i686_	(4 CPU)
02:36:46 PM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15
02:36:56 PM         0        98      0.00      0.01      0.05
02:37:06 PM         0        98      0.00      0.01      0.05
02:37:16 PM         0        98      0.00      0.01      0.05
Average:            0        98      0.00      0.01      0.05

输出项说明:
runq-sz:运行队列的长度(等待运行的进程数)
plist-sz:进程列表中进程(processes)和线程(threads)的数量
ldavg-1:最后1分钟的系统平均负载(System load average)
ldavg-5:过去5分钟的系统平均负载
ldavg-15:过去15分钟的系统平均负载
因为我用的Linode测试的,这台机器上没有安装网站,所以数据比较小,这里只演示命令,没有对VPS性能进行测评。