Linux性能分析和调整的基本原则 --zt

标签: Os Net | 发表时间:2011-09-23 11:16 | 作者:dbaeyes flychen50
出处:http://hi.baidu.com/dbaeyes
优化linux系统需要考虑多方面的因素,因为各个因素之间相互关联,因此遇到性能问题以及性能的调节需要综合考虑,基本要素考虑与分析:
1,那些措施能确实提供性能?
1)确保系统有足够的内存。
2)使用集群;
3)对磁盘进行优化(包括文件系统),提高I/O吞吐量;
4)网络带宽;

2,影响系统性能的一般因素:
1)CPU
2)内存
3)磁盘I/O宽带
IXDBA.NET社区论坛
4)网络I/O宽带
一般来说,现在的网络服务器针对提供的服务,其CPU速度是足够提供处理能力的;所以
影响性能的是磁盘和内存。内存不够,那么对虚拟内存管理系统来说要频繁地进行内存页
写到磁盘,磁盘写到内存的操作。这就是内存交换过程,很大地影响了性能。

而网络I/O,一般来说他不是独立的。所以要综合其他因素来考虑。

3,检查系统的性能情况。
1)CPU使用情况分析

以下指标来衡量CPU的负载情况.

总体利用率:

[root@linux stone]sar -u 5 5
Linux 2.4.21-4.ELsmp (linux1)   01/04/05

18:00:17          CPU     %user     %nice   %system     %idle
18:00:22          all      1.50      0.00      0.93     97.57
18:00:27          all     16.02      0.00      4.74     79.24
18:00:32          all      5.69      0.00      3.77     90.53
18:00:37          all      0.79      0.00      1.10     98.11
18:00:42          all      2.69      0.00      1.21     96.10
Average:          all      5.15      0.00      2.24     92.61

获得指定CPU号(多CPU情况下)的使用情况
[root@linux stone]sar -U 0
Linux 2.4.21-4.ELsmp (linux1)   01/04/05
00:00:00          CPU     %user     %nice   %system     %idle
00:10:00            0      1.10      0.00      0.83     98.36
00:20:00            0      0.55      0.00      0.78     97.52
00:30:00            0      0.97      0.00      0.77     98.57
00:40:00            0      1.15      0.00      0.93     97.09
00:50:00            0      1.88      0.00      1.33     95.96
01:00:00            0      1.20      0.00      1.11     96.66
01:10:00            0      0.78      0.00      1.26     97.96
01:20:00            0      1.07      0.00      1.04     96.91
01:30:00            0      1.24      0.00      1.01     97.29

可以获得运行用户进程%user,内核进程%system 和空闲状态是CPU时间的百分比.

观察数据,获得结论:
%user越大一般表明服务器处于运行状态;%system越大表明服务器处于系统调用
或者I/O操作。如果CPU有大量时间处于空闲状态(%idle),那就说明CPU足够。

我们还可以获得每个时间段上内核切换当前进程的次数,如果这个数很高,表示服务器
硬件有问题。
[root@linux stone]sar -w
07:50:00      cswch/s
08:00:00       285.49
08:10:00       259.64
08:20:00       387.54
08:30:00       359.15
08:40:00       504.29
08:50:00       762.73
09:00:00       572.93
09:10:01       885.75
09:20:00      1159.97
09:30:00      1101.83
09:40:00      1095.72
09:50:00      1052.89
10:00:00       961.75
10:10:00       861.31
10:20:00       501.76
10:30:00       370.81
10:40:00       736.26
10:50:00       635.93
11:00:00       399.51
11:10:00       873.58
11:20:00       741.14
11:30:00       776.49
11:40:00       641.55
Average:       416.97    
平均负载:
系统平均负载被定义为在特定时间间隔内运行队列中的平均进程数,一般来说只要每个CPU的当
前活动进程数不大于3那么系统的性能就是良好的,如果每个CPU的任务数大于5,那么就表示这
台机器的性能有严重问题.

[root@linux stone]uptime
18:07:22  up 10 days,  8:05,  1 user,  load average: 0.49, 0.31, 1.18
表示在过去的1、5、15分钟内运行队列中的平均进程数量.


[root@linux stone]sar -q
07:50:00      runq-sz  plist-sz   ldavg-1   ldavg-5
08:00:00            0       214      0.01      0.08
08:10:00            0       222      0.37      0.21
08:20:00            1       229      0.41      0.42
08:30:00            0       239      0.45      1.10
08:40:00            0       242      0.24      0.36
08:50:00            1       253      1.55      1.98
09:00:00            0       248      0.45      0.55
09:10:01            0       273      8.17      3.85
09:20:00            0       295      0.62      0.99
09:30:00            0       279      0.87      0.79
09:40:00            1       284      0.62      0.68
09:50:00            0       302      0.38      0.51
10:00:00            0       277      0.98      0.79
10:10:00            2       289      0.60      0.55
10:20:00            2       264      0.28      0.33
10:30:00            0       269      0.28      0.31
10:40:00            0       284      0.58      0.46
10:50:00            0       324      1.18      0.62
11:00:00            0       311      0.43      0.31
11:10:00            0       330      0.65      0.54
11:20:00            1       335      0.45      0.45
11:30:00            1       345      0.39      0.47
11:40:00            0       322      0.22      0.36
Average:            0       296      0.65      0.60
runq-sz:等待运行的进程数
plist-sz:总的进程数(在process list).
ldavg-1 : 系统最后一分钟的平均负载
ldavg-5:   系统最后5分钟的平均负载

每个进程的CPU消耗量:通过了解具体的某个进程对CPU消耗的统计,我们可以确定某一进程是否存在问题,
并进行改善(改善该进程?改善硬件?....)
可以用ps -aux或者top来观察某一进程对CPU的消耗情况。
另外,vmstat工具也可以报告一些cpu的情况.
[root@linux stone]vmstat
procs                      memory      swap          io     system         cpu
r  b   swpd   free   buff  cache   si   so    bi    bo   in         cs us sy id wa
0  0  92456 141164 102032 2346524    0    0     7   5    9         5  1  1  6  8
2) 内存情况
你必须对系统内存管理过程进行了解,特别是页的交换等原理。一般用活动虚拟内存的总量和换页率来衡量
内存的使用情况。从活动虚拟内存总量我们可以获得内存的需求量;根据换页率我们可以获得内存有多少处于
使用中。换页率越高,说明内存使用很大(磁盘会咯咯响),这时候应该增加内存。

活动虚拟内存的总量(VM)=实际内存大小(size of real memory)+使用的交换空间大小(amount of swap space used)
[root@linux stone]sar -r
07:50:00    kbmemfree kbmemused  %memused kbmemshrd kbbuffers  kbcached kbswpfree kbswpused  %swpused
www.ixdba.net
08:00:00        74532   3536724     97.94         0     90808   2237872   8294676     91172      1.09
08:10:00        93652   3517604     97.41         0     88864   2218328   8294696     91152      1.09
08:20:00        63192   3548064     98.25         0     69988   2269068   8294700     91148      1.09
08:30:00       272344   3338912     92.46         0     22552   2119284   8290536     95312      1.14
08:40:00       126104   3485152     96.51         0     38888   2242808   8290560     95288      1.14
08:50:00       191476   3419780     94.70         0     18528   2246968   8289944     95904      1.14
09:00:00        55304   3555952     98.47         0     32836   2368824   8285288    100560      1.20
09:10:01       201592   3409664     94.42         0     50876   2251528   8285708    100140      1.19
09:20:00       32912   3578344     99.09         0     66316   2410260   8285984     99864      1.19
09:30:00        55232   3556024     98.47         0     45944   2400496   8286072     99776      1.19
09:40:00        51652   3559604     98.57         0     64392   2383592   8286216     99632      1.19
09:50:00        45172   3566084     98.75         0     70144   2388804   8286428     99420      1.19
10:00:00        52068   3559188     98.56         0     64676   2395512   8286564     99284      1.18
10:10:00        51400   3559856     98.58         0     49620   2407528   8286596     99252      1.18
IXDBA.NET社区论坛
10:20:00        41692   3569564     98.85         0     47684   2424280   8286652     99196      1.18
10:30:00        35200   3576056     99.03         0     50336   2431268   8286656     99192      1.18
10:40:00        21400   3589856     99.41         0     64612   2423780   8286728     99120      1.18
10:50:00        83048   3528208     97.70         0     68084   2331448   8286796     99052      1.18
11:00:00        22072   3589184     99.39         0     70764   2416216   8286816     99032      1.18
11:10:00        34376   3576880     99.05         0     56780   2405008   8286824     99024      1.18
11:20:00        36376   3574880     98.99         0     48756   2397968   8286836     99012      1.18
11:30:00        43808   3567448     98.79         0     49708   2398852   8286924     98924      1.18
11:40:00        34884   3576372     99.03         0     60960   2408756   8286936     98912      1.18
11:50:00        38328   3572928     98.94         0     67080   2407960   8286936     98912      1.18

12:00:00        38932   3572324     98.92         0     72724   2406132   8286940     98908      1.18
12:10:00       109300   3501956     96.97         0     75348   2326492   8286940     98908      1.18
Average:        64548   3546708     98.21         0     96633   2330707   8291911     93937      1.12


[root@linux stone]swapon -s
Filename                        Type            Size    Used    Priority
/dev/sdb8                       partition       4192924 98908   -1
/dev/sdb10                           partition       4192924 0       -2
通过以上数据,我们可以获得
活动虚拟内存的总量(VM)=kbmem + kbswpused=3.54G
3.47G就是当前服务器需要的内存总量.

[root@linux stone]sar -B
07:50:00     pgpgin/s pgpgout/s  activepg  inadtypg  inaclnpg  inatarpg
08:00:00         9.34    139.23    566687         0     13589    142713
08:10:00        25.71    108.40    564261         0     13539    141743
08:20:00       149.36    191.93    573187         0     13399    143335
08:30:00        43.63    234.46    529094     35493     11998    134494
08:40:00       246.68    277.54    565985     25012      9177    141597
08:50:00       381.88    536.92    553537     52107     12381    140623
09:00:00       190.29    307.08    581102     31530     12311    147195
09:10:01       259.69    860.26    560927     60833     13643    142327
09:20:00       487.91    550.73    604302     55059     14379    151157
09:30:00       382.74    710.78    598312     70977     14059    149736
09:40:00       354.97    510.46    598398     70661     13795    149920
09:50:00       280.48    629.94    602880     64397     13864    150517
10:00:00       447.48    659.52    602483     69873     13362    150261
10:10:00       404.97    458.69    603719     68104     13724    150115
10:20:00       310.69    272.95    601711     67460     13898    150651
10:30:00       121.59    184.03    603972     56077     13928    151109
10:40:00       263.55    392.60    605818     60314     17208    151754
10:50:00       210.45    348.91    589640     72762     13761    148093
11:00:00       190.55    199.58    607545     54517     15086    151774
11:10:00       350.40    462.20    603874     75205     14074    150970
11:20:00       374.10    437.94    603769     70937     13904    150877
www.ixdba.net
11:30:00       163.58    381.97    601763     62157     14369    150481
11:40:00        96.75    298.26    605429     45214     14093    151042
11:50:00       127.14    159.75    602817     38423     13911    150789
12:00:00        57.85    186.46    602126     27663     14362    150737
12:10:00        51.41    216.03    585281     32559     13808    146942
12:20:00        95.07    225.01    600874      6573     13793    150148
12:30:00       197.36    162.14    605716      5821     16786    151620
12:40:00        16.31    145.40    604436         0     14285    151002
Average:       100.76    226.88    591604     16947     13867148584

pgpgin/s: 换入页的KB数
pgpgout/s: 换出页的KB数
activepg: 内存中活动的页数
inadtypg: Number of inactive dirty (modified or potentially modified) pages in memory.
inaclnpg: Number of inactive clean (not modified) pages in memory.
inatarpg: "Inactive  target"  number  of  pages.This field is a 1-minute floating average of the number of
pages the system needs to "steal" every second in order to satisfy memory demand.

如果系统总是存在大量的换出页的KB数,说明系统需要内存.当然,inatarpg参数也能说明问题。
IXDBA.NET社区论坛

3)磁盘I/O

我们可以用iostat来获得系统磁盘的数据.
[stone@localhost stone]$ iostat
Linux 2.4.20-19.7 (localhost.localdomain)       01/06/2005

avg-cpu:  %user   %nice    %sys   %idle
0.09    0.00    0.21   99.70

Device:        tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
dev3-1        0.77         4.65        17.03   11788068   43140248

tps:Indicate  the number of transfers per second that were issued to the device
Blk_read/s:Indicate  the  amount  of  data read from the drive expressed in a number of blocks per second
Blk_wrtn/s:Indicate the amount of data written to the drive expressed in a number of blocks  per  second.
Blk_read:The total number of blocks read.
Blk_wrtn:The total number of blocks written.

[stone@localhost stone]$ iostat -x
Linux 2.4.20-19.7 (localhost.localdomain)       01/06/2005

avg-cpu:  %user   %nice    %sys   %idle
0.09    0.00    0.21   99.70

Device:  rrqm/s wrqm/s   r/s   w/s  rsec/s  wsec/s avgrq-sz avgqu-sz   await  svctm  %util
hdb        0.46   1.48  0.12  0.65    4.65   17.04    28.13     0.10  118.90 207.70   1.60
hdb1       0.00   0.00  0.00  0.00    0.00    0.00     9.52     0.00  128.76  88.84   0.00
hdb2       0.46   1.48  0.12  0.65    4.65   17.01    28.17     0.09  117.58  13.39  
0.10
hdb3       0.00   0.00  0.00  0.00    0.00    0.03    15.25     0.00  619.92 519.40   0.01


[stone@localhost stone]$ procinfo  
Linux 2.4.20-19.7 ([email protected]) (gcc 2.96 20000731 ) #1 Tue Jul 15 13:45:48 EDT 2003 1CPU [localhost]

Memory:      Total        Used        Free      Shared     Buffers      Cached
Mem:        255896      247240        8656           0       78772       87056
Swap:       522104       26036      496068

Bootup: Wed Dec  8 10:28:53 2004    Load average: 0.00 0.00 0.00 1/72 2571


user  :       0:37:18.15   0.1%  page in :  5894299  disk 1:   306840r 1648467w
nice  :       0:00:20.57   0.0%  page out: 21578634
system:       1:27:38.76   0.2%  swap in :      985
idle  :  29d  5:39:38.40  99.7%  swap out:     8822
uptime:  29d  7:44:55.87         context :320846503

irq  0: 253349588 timer                 irq  6:         6                     
irq  1:         3 keyboard              irq  8:         1 rtc                 
irq  2:         0 cascade [4]           irq 12:   5277552 usb-uhci, eth0      
irq  3:         3                       irq 14:   1953315 ide0                
irq  4:         3                     
4)网络负载
可以先查看网络接口数据状态
ifconfig如果发现collisions:0 数据很大(占发送数据或者接受数据的5%以上),那么说明网络
严重堵塞。

netstat -i
Kernel Interface table
Iface   MTU Met   RX-OK RX-ERR RX-DRP RX-OVR   TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0   1500   0 4701184      0      0      0  912247      0      0      0 BMRU
lo    16436   0 1285408      0      0      0 1285408      0      0      0 LRU 阅读全文
类别:Os Net 查看评论

相关 [linux 性能分析 基本原则] 推荐:

Linux性能分析和调整的基本原则 --zt

- flychen50 - DBA eyes
优化linux系统需要考虑多方面的因素,因为各个因素之间相互关联,因此遇到性能问题以及性能的调节需要综合考虑,基本要素考虑与分析:. 3)对磁盘进行优化(包括文件系统),提高I/O吞吐量;. 2,影响系统性能的一般因素:. 一般来说,现在的网络服务器针对提供的服务,其CPU速度是足够提供处理能力的;所以.

Linux 性能分析工具 nmon for Linux

- - CSDN博客架构设计推荐文章
nmon 是 Nigel's performance Monitor for Linux on POWER, x86, x86_64, Mainframe & now ARM (Raspberry Pi) 的缩写,意思是 Nigel(nmon 的作者是 Nigel Griffiths) 的 Linux 性能检测器.

Linux 和 Android 系统性能分析

- - CSDN博客综合推荐文章
作为一名Linux 或 Android 平台的系统工程师,在开发系统新功能外,主要工作就是优化系统性能,使系统上以最优的状态运行,但是由于硬件问题、软件问题、网络环境等的复杂性和多变性,导致对系统的优化变得异常复杂,如何定位性能问题出在哪个方面,是性能优化的一大难题, 从系统入手,阐述由于系统软、硬件配置不当可能造成的性能问题,并且探讨检测系统故障和优化性能的一般方法和流程.

perf学习-linux自带性能分析工具

- - ITeye博客
目前在做性能分析的事情,之前没怎么接触perf,找了几篇文章梳理了一下,按照问题的形式记录在这里. linux性能调优工具,32内核以上自带的工具,软件性能分析. 在2.6.31及后续版本的Linux内核里,安装perf非常的容易. 几乎能够处理所有与性能相关的事件. 指在处理器或者操作系统中发生,可能影响到程序性能的硬件事件或者软件事情.

面试基本原则

- mazhechao - Reborn
到了这个阶段,很多本科申请者都要接受面试考验了. 以下向同学们分享一下几个重要的面试基本原则. 无论是谁,都会告诉你第一印象很重要. 然后紧接下来的建议就是“衣着得体”. 但,我一直觉得“衣着得体”是个很含混的要求. 在每个人的眼里,“得体”的标准是不一样的. 不过,倒是有一个小的建议很重要:全身上下颜色越少越好.

着陆页优化基本原则

- 章明 - 互联网的那点事
坚持基本原则,能让你把一个糟糕的着陆页,变成人们很难指指点点的着陆页. 在你起步时就有力地应用它们,然后再通过钻研后面讨论的内容,改进你的页面. 把人送往一个相关而且定向的页面. 你的首页是一种面向目标传播的混合——通常以好的理由来说. 了解了这一点,就要阻止把人们送往那里的欲望,因为首页更好地定向于好奇的浏览类型,而不是人们从一个横幅和AdWords链接的点击进入.

做人四项基本原则

- Alfred.zhang - 新企业家网
①不要盘算太多,要顺其自然,该是你的终会得到. ②压抑自己没必要,奉承巴结也没必要,保持应有的人格力量将赢得更多机会和尊重. ③不要对谁特别好,也不要对谁特别不好,永远不要被少数人所利用. ④相信自己比依赖别人重要,用尽心机不如静心做事. 还想再多看几篇可能感兴趣的文章:. 有时一个人为不花钱得到的东西付出的代价最高.

类设计的5个基本原则

- - CSDN博客编程语言推荐文章
我们常说啥面向对象三大特性:封装,继承,多态.另一种说法是:抽象,继承,动态绑定. 然后就是面向对象五大设计原则,面向对象的设计其实说到底就是类的设计嘛,没有了类就自然不能叫面向对象了.当然了像C#中还有所谓的接口(interface),把它理解成一个特殊的类好了.. 我觉得 面向对象的应用中最难的就是类的设计,怎么设计好一些类没有固定标准,只有一些参考原则.所以设计类不只是技术活,而且是个艺术活..

Android应用性能 分析

- - CSDN博客推荐文章
  其实主要是内存方面,内存管理是个永恒的话题. 1.从工具DDMS中,在Sysinfo的tab栏里面有一个Memory usage的选项,通过USB连接Android设备以后很容易抓到图. 在图中可以看到系统随时可以用的内存是Free和Buffers两项,因为我抓图的系统只有128M的内存,所以看上去这部分可用内存已经很少了.

lucene MoreLikeThis性能分析

- - 七磅-d0evi1
最近使用lucene的MoreLikeThis实现一个小型的推荐系统. 语料由短文本构成,本身也还算比较中小等规模:7000w左右(亿级别)的数据量,3G大小的文件. 对需要的Field建完索引后的索引文件大小在4G左右. 本文只是结合自己的实践列出一些注意事项,以做为参考. 一、MoreLikeThis实现原理.