Linux性能监控之绪论篇

发表于:2007-12-19来源:作者:点击数: 标签:性能监控
Linux性能监控之绪论篇性能调优的目的是找到系统的瓶颈,并且调节系统来设法消除这些瓶颈.我们在监控性能的时候重点在于监视一下子系统: 1.CPU 2.Memory 3.IO 4.Network 但这些系统都是彼此依赖,不能单独只看其中一个.当一个系统

Linux性能监控之绪论篇性能调优的目的是找到系统的瓶颈,并且调节系统来设法消除这些瓶颈.我们在监控性能的时候重点在于监视一下子系统:
1.CPU
2.Memory
3.IO
4.Network

但这些系统都是彼此依赖,不能单独只看其中一个.当一个系统负载过重时往往会引起其它子系统的问题,比如说:
->大量的读入内存的IO请求(page-in IO)会用完内存队列;
->大量的网络流量会造成CPU的过载;
->CPU的高使用率可能正在处理空闲内存队列;
->大量的磁盘读写会消耗CPU和IO资源.

我们测试的系统,总的来说可分为二类:
第一, IO Bound, 这类系统会大量消耗内存和底层的存储系统,它并不消耗过多的CPU和网络资源(除非系统是网络的).IO bound系统消耗CPU资源用来接受IO请求,然后会进入休眠状态.数据库通常被认为是IO bound系统.

第二, CPU Bound,这类系统需要消耗大量的CPU资源.他们往往进行大量的数学计算. 高吞吐量的Web server, Mail Server通常被认为是CPU Bound系统.

在性能测试中首先要做的是建立基线(Baseline),这样后续的调整才会有一个参考标准.值得注意的是,在测试基线的时候,一定要保证系统工作在正常的状态下.

在Linux上,监视系统的性能的常用工具有:
Tool     Description                                      Base                         Repository
vmstat all purpose performance tool            yes                                 yes
mpstat provides statistics per CPU                no                                 yes
sar all purpose performance monitoring tool no                                 yes
iostat provides disk statistics                         no                                 yes
netstat provides network statistics                 yes                               yes
dstat monitoring statistics aggregator            no                      in most distributions
iptraf traffic monitoring dashboard                 no                                yes
ethtool reports on Ethernet interface configuration yes yes

这些工具在Linux的安装过程中都可以选择进行安装。

下面是一个vmstat产生的baseline的例子:
# vmstat 1
procs memory swap io system cpu
r b swpd free buff cache si so bi bo in cs us sy wa id
1 0 138592 17932 126272 214244 0 0 1 18 109 19 2 1 1 96
0 0 138592 17932 126272 214244 0 0 0 0 105 46 0 1 0 99
0 0 138592 17932 126272 214244 0 0 0 0 198 62 40 14 0 45
0 0 138592 17932 126272 214244 0 0 0 0 117 49 0 0 0 100
0 0 138592 17924 126272 214244 0 0 0 176 220 938 3 4 13 80
0 0 138592 17924 126272 214244 0 0 0 0 358 1522 8 17 0 75
1 0 138592 17924 126272 214244 0 0 0 0 368 1447 4 24 0 72
0 0 138592 17924 126272 214244 0 0 0 0 352 1277 9 12 0 79
# vmstat 1
procs memory swap io system cpu
r b swpd free buff cache si so bi bo in cs us sy wa id
2 0 145940 17752 118600 215592 0 1 1 18 109 19 2 1 1 96
2 0 145940 15856 118604 215652 0 0 0 468 789 108 86 14 0 0
3 0 146208 13884 118600 214640 0 360 0 360 498 71 91 9 0 0
2 0 146388 13764 118600 213788 0 340 0 340 672 41 87 13 0 0
2 0 147092 13788 118600 212452 0 740 0 1324 620 61 92 8 0 0
2 0 147360 13848 118600 211580 0 720 0 720 690 41 96 4 0 0
2 0 147912 13744 118192 210592 0 720 0 720 605 44 95 5 0 0
2 0 148452 13900 118192 209260 0 372 0 372 639 45 81 19 0 0
2 0 149132 13692 117824 208412 0 372 0 372 457 47 90 10 0 0

这个抛砖引玉的文章很好,值得我们去更深的去学习和讨论;
在性能测试的过程中,不但要测试必要的指标,比如吞吐量,并发用户,事务处理等,指标,还要注意被测对象本身性能的变化,CPU内存,和磁盘IO等;
这样我们就需要监控工具,比如LR自身的监控功能等

原文转自:http://www.ltesting.net