压力测试下系统负载数据的分析工具 —— sar

在对 Web Server 做性能测试的时候, 除了需要给出 “最大并发请求数”、“平均响应时间” 等数据, 还需要给出系统资源的使用情况。例如, CPU 使用率、内存使用、负载等数据。

linux 自带了一个对系统资源监控的工具 sar, 即 system activity report. sar 包含在 sysstat 包中, 关于 sysstat 的介绍:

sysstat 写道
sysstat is a package of monitoring tools, these are the tools included in the package.

iostat
      Reports CPU statistics and input/output statistics for devices, partitions and network filesystems.
mpstat
      Reports individual or combined processor related statistics.
pidstat
      Reports statistics for Linux tasks (processes) : I/O, CPU, memory, etc.
sar
      Collects, reports and saves system activity information (CPU, memory, disks, interrupts, network interfaces, TTY, kernel tables,etc.)
sadc
       Is the system activity data collector, used as a backend for sar.
sa1
      Collects and stores binary data in the system activity daily data file. It is a front end to sadc designed to be run from cron.
sa2
       Writes a summarized daily activity report. It is a front end to sar designed to be run from cron.
sadf
        Displays data collected by sar in multiple formats (CSV, XML, etc.) This is useful to load performance data into a database, or import them in a spreadsheet to make graphs.
 

如果运行

$ sar 
 

显示

zhongwei@zhongwei-T-6845c:~$ sar
Cannot open /var/log/sysstat/sa06: No such file or directory
Please check if data collecting is enabled in /etc/default/sysstat
 

则修改 /etc/default/sysstat 文件, 将 ENABLED 设置为 true.

看一下 manual 中对 sar 的描述:

manual 写道
sar - Collect, report, or save system activity information.
命令格式 写道
sar [ -A ] [ -b ] [ -B ] [ -C ] [ -d ] [ -h ] [ -i interval ] [ -m ] [ -p ] [ -q ] [ -r ] [ -R ] [ -S ] [ -t ] [ -u [ ALL ] ] [ -v ] [ -V ] [ -w ] [ -W ] [ -y ] [ -n { keyword [,...] | ALL } ] [ -I { int [,...] | SUM | ALL | XALL } ] [ -P { cpu [,...] | ALL } ] [ -o [ filename ] | -f [ file‐name ] ] [ -s [ hh:mm:ss ] ] [ -e [ hh:mm:ss ] ] [ interval [ count ] ]
 

测试:

先尝试一下 interval / count 这两个参数。(interval 以秒为单位)

$ sar 1 5

 的输出结果:

zhongwei@zhongwei-T-6845c:~$ sar 1 5
Linux 2.6.35-23-generic (zhongwei-T-6845c) 12/06/2010 _i686_ (2 CPU)

04:40:02 PM CPU %user %nice %system %iowait %steal %idle
04:40:03 PM all 4.88 0.00 1.95 0.00 0.00 93.17
04:40:04 PM all 5.99 0.00 5.53 4.61 0.00 83.87
04:40:05 PM all 5.88 0.00 2.94 6.37 0.00 84.80
04:40:06 PM all 2.91 0.00 3.88 0.00 0.00 93.20
04:40:07 PM all 5.39 0.00 3.92 0.00 0.00 90.69
Average: all 5.02 0.00 3.67 2.22 0.00 89.09
zhongwei@zhongwei-T-6845c:~$
 

就是从此刻开始,每隔 1 秒钟输出一次 CPU 的状态信息,执行 5 次。

使用 sar 查看系统负载:

zhongwei@zhongwei-T-6845c:~$ sar -q 1 5
Linux 2.6.35-23-generic (zhongwei-T-6845c) 12/06/2010 _i686_ (2 CPU)

04:52:31 PM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15
04:52:32 PM 0 360 0.40 0.48 0.40
04:52:33 PM 2 360 0.40 0.48 0.40
04:52:34 PM 0 360 0.40 0.48 0.40
04:52:35 PM 1 360 0.37 0.47 0.40
04:52:36 PM 1 360 0.37 0.47 0.40
Average: 1 360 0.39 0.48 0.40
zhongwei@zhongwei-T-6845c:~$
 

同时查看CPU 和 系统平均负载:

zhongwei@zhongwei-T-6845c:~$ sar -q -u 1 5
Linux 2.6.35-23-generic (zhongwei-T-6845c) 12/06/2010 _i686_ (2 CPU)

04:55:22 PM CPU %user %nice %system %iowait %steal %idle
04:55:23 PM all 2.90 0.48 2.90 0.00 0.00 93.72

04:55:22 PM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15
04:55:23 PM 0 361 0.61 0.53 0.43

04:55:23 PM CPU %user %nice %system %iowait %steal %idle
04:55:24 PM all 4.37 0.49 3.88 0.00 0.00 91.26

04:55:23 PM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15
04:55:24 PM 0 361 0.61 0.53 0.43

04:55:24 PM CPU %user %nice %system %iowait %steal %idle
04:55:25 PM all 4.76 0.48 5.24 0.00 0.00 89.52

04:55:24 PM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15
04:55:25 PM 1 361 0.56 0.52 0.43

04:55:25 PM CPU %user %nice %system %iowait %steal %idle
04:55:26 PM all 3.92 0.98 1.96 0.00 0.00 93.14

04:55:25 PM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15
04:55:26 PM 1 361 0.56 0.52 0.43

04:55:26 PM CPU %user %nice %system %iowait %steal %idle
04:55:27 PM all 3.43 0.49 3.43 0.00 0.00 92.65

04:55:26 PM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15
04:55:27 PM 0 361 0.56 0.52 0.43

Average: CPU %user %nice %system %iowait %steal %idle
Average: all 3.88 0.58 3.49 0.00 0.00 92.05

Average: runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15
Average: 0 361 0.58 0.52 0.43
zhongwei@zhongwei-T-6845c:~$

使用 sar 收集内存使用状况:

zhongwei@zhongwei-T-6845c:~$ sar -r 1 100 > mem.txt &
[1] 4644
zhongwei@zhongwei-T-6845c:~$ tail -f mem.txt
Linux 2.6.35-23-generic (zhongwei-T-6845c) 12/06/2010 _i686_ (2 CPU)

05:15:37 PM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit
05:15:38 PM 863752 1195976 58.06 78828 645112 1992556 24.94
05:15:39 PM 863744 1195984 58.07 78828 645112 1992556 24.94
05:15:40 PM 863744 1195984 58.07 78832 645112 1992556 24.94
05:15:41 PM 863744 1195984 58.07 78836 645112 1992556 24.94
05:15:42 PM 863620 1196108 58.07 78836 645112 1992556 24.94
05:15:43 PM 863612 1196116 58.07 78836 645112 1992876 24.95

下面来解决一下实际问题:

在性能测试的时候, 我们一定会想一次性的将 CPU、内存、负载情况同时抓取到, 但是采用

$ sar -u -r -q 1 100

数据的显示格式。。。混杂在了一起,不方便每项数据单独成图。

于是,写这样一个 shell 脚本:

sar_cpu_mem_load.sh
sar -u 1 10 > ./cpu.csv &
sar -r 1 10 > ./mem.csv &
sar -q 1 10 > ./load.csv &
 chmod +x sar_cpu_mem_load.sh
./sar_cpu_mem_load.sh

好了, 我们就得到了想要收集的数据。但是。。。。, 如果我想将数据转换成更直观的图表呢?

按照 google 的搜索结果, 先尝试了一下 ksar. 

BUG 多的简直不能忍,按照 bug 报告的提示从 5.0.6 版本换到 5.1.0, 又到 5.1.0 beta4. 各种 bug, 例如对 CPU all 字段的不支持,对不同时间日期格式的不支持。就为了这么个烂工具, 我还特意装了 jre.

算了,还是使用 OpenOffice 的 SpreadSheet 比较靠谱。选中某一列, insert -> chart 就好了。

参考列表:

http://www.go2linux.org/sysstat-linux-performance-monitor-toolkit

猜你喜欢

转载自zhongwei-leg.iteye.com/blog/834299
sar