天天看點

Linux性能分析和調整的基本原則

Linux性能分析和調整的基本原則

優化linux系統需要考慮多方面的因素,因為各個因素之間互相關聯,是以遇到性能問題以及性能的調節需要綜合考慮,基本要素考慮與分析:  

1,那些措施能确實×××能?

1)確定系統有足夠的記憶體。

2)使用叢集;

3)對磁盤進行優化(包括檔案系統),提高I/O吞吐量;

4)網絡帶寬;

2,影響系統性能的一般因素:

1)CPU

2)記憶體

3)磁盤I/O寬帶

www.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

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:       

平均負載:

系統平均負載被定義為在特定時間間隔内運作隊列中的平均程序數,一般來說隻要每個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分鐘内運作隊列中的平均程序數量.

IXDBA.NET社群論壇

[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     

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

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

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

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     13867    

148584

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參數也能說明問題。

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

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

本文來自:http://www.cnblogs.com/shineshqw/articles/1816197.html