linux系統(tǒng)性能優(yōu)化及瓶頸分析_第1頁
linux系統(tǒng)性能優(yōu)化及瓶頸分析_第2頁
linux系統(tǒng)性能優(yōu)化及瓶頸分析_第3頁
linux系統(tǒng)性能優(yōu)化及瓶頸分析_第4頁
linux系統(tǒng)性能優(yōu)化及瓶頸分析_第5頁
已閱讀5頁,還剩37頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、linux系統(tǒng)性能優(yōu)化及瓶頸分析一,用vmstat分析系統(tǒng)I/O情況rootlocalhost # vmstat -n 3       (每個(gè)3秒刷新一次)procs-memory-swap- -io- -system- -cpu-r   b    swpd   free       buff       cache       si   so   bi    bo   in  

2、;    cs        us   sy   id   wa1  0   144 186164 105252 2386848     0    0    18   166  83     2          48   21  31   02  0   144 189620 10525

3、2 2386848     0    0     0   177  1039 1210   34   10  56    00  0   144 214324 105252 2386848     0    0     0    10   1071   670    32   5    63 

4、60;  00  0   144 202212 105252 2386848     0    0     0   189   1035   558   20   3    77    02  0   144 158772 105252 2386848     0    0     0   203  1065 2832

5、    70  14  15    0IO-bi:從塊設(shè)備讀入的數(shù)據(jù)總量(讀磁盤)(KB/S)-bo:寫入到塊設(shè)備的數(shù)據(jù)總量(寫磁盤)(KB/S)隨機(jī)磁盤讀寫的時(shí)候,這2個(gè)值越大(如超出1M),能看到CPU在IO等待的值也會(huì)越大二,用iostat分析I/O子系統(tǒng)情況    如果你的系統(tǒng)沒有iostat,sar,mpstat等命令,安裝sysstat- 7.0.2-1.el5.i386.rpm包,iostat工具將對(duì)系統(tǒng)的磁盤操作活動(dòng)進(jìn)行監(jiān)視。它的特點(diǎn)是匯報(bào)磁盤活動(dòng)統(tǒng)計(jì)情況,同時(shí)也會(huì)匯報(bào)出CPU 使用情況。同vmst

6、at一樣,iostat也有一個(gè)弱點(diǎn),就是它不能對(duì)某個(gè)進(jìn)程進(jìn)行深入分析,僅對(duì)系統(tǒng)的整體情況進(jìn)行分析。iostat的語法如下:程序代碼iostat -c | -d -k -t -V -x device interval count -c為匯報(bào)CPU的使用情況;-d為匯報(bào)磁盤的使用情況;-k表示每秒按kilobytes字節(jié)顯示數(shù)據(jù);-t為打印匯報(bào)的時(shí)間;-v表示打印出版本信息和用法;-x device指定要統(tǒng)計(jì)的設(shè)備名稱,默認(rèn)為所有的設(shè)備;interval指每次統(tǒng)計(jì)間隔的時(shí)間;count指按照這個(gè)時(shí)間間隔統(tǒng)計(jì)的次數(shù)。iostat在內(nèi)核2.4和內(nèi)核2.6中數(shù)據(jù)來源不太一樣,對(duì)于kernel 2.4,

7、iostat 的數(shù)據(jù)的主要來源是 /proc/partitions;在2.6中,數(shù)據(jù)來源主要是/proc/diskstats和/sys/block/sd*/stat這兩個(gè)文件#cat /proc/diskstats | grep sda  8     0  sda   17945521  1547188    466667211  174042714   15853874 42776252   469241932  2406054445  0  13765

8、5809   2580960422   8    1   sda1  936           1876          6                12   8    2   sda2  19489178  466659986 58655070   

9、0;469240224   8    3   sda3  1270         1441          33               264   8    4   sda4  4               8    

10、           0                 0   8    5   sda5  648           1442          0                 0   8  

11、;  6   sda6  648           1442          0                 0第1列 : 磁盤主設(shè)備號(hào)(major)第2列 : 磁盤次設(shè)備號(hào)(minor)第3列 : 磁盤的設(shè)備名(name)第4列 : 讀請(qǐng)求總數(shù)(rio)第5列 : 合并的讀請(qǐng)求總數(shù)(rmerge)第6列 : 讀扇區(qū)總數(shù)(rsect)第7列 :   讀數(shù)據(jù)花費(fèi)的時(shí)間,單

12、位是ms.(從_make_request到 end_that_request_last)(ruse)第8列 :   寫請(qǐng)求總數(shù)(wio)第9列 :   合并的寫請(qǐng)求總數(shù)(wmerge)第10列 : 寫扇區(qū)總數(shù)(wsect)第11列 : 寫數(shù)據(jù)花費(fèi)的時(shí)間,單位是ms. (從_make_request到 end_that_request_last)(wuse)第12列 : 現(xiàn)在正在進(jìn)行的I/O數(shù)(running),等于I/O隊(duì)列中請(qǐng)求數(shù)第13列 : 系統(tǒng)真正花費(fèi)在I/O上的時(shí)間,除去重復(fù)等待時(shí)間(aveq)第14列 : 系統(tǒng)在I/O上花費(fèi)的時(shí)間(use)。#iostat -x

13、1Linux 2.6.18-53.el5PAE (localhost.localdomain)  03/27/2009avg-cpu:  %user   %nice %system %iowait  %steal   %idle          30.72    0.00    5.00    5.72    0.00   58.56Device:   rrqm/s   wrqm/s

14、   r/s    w/s     rsec/s   wsec/s   avgrq-sz avgqu-sz   await    svctm    %utilsda         0.79       21.81     9.15   8.08   237.99   239.29    27.69    

15、  1.32         76.31    4.07      7.02sdb         0.69      19.13      3.26   2.99   153.08   176.92    52.85       0.43         68.80  

16、;  5.96      3.72sdc         3.47       89.30     10.95  7.30   213.30   772.94    54.04       1.32         72.43    4.18      7.63每項(xiàng)數(shù)據(jù)的含義如下,rrqm/s: &

17、#160;   每秒進(jìn)行 merge 的讀操作數(shù)目。即 rmerge/swrqm/s:     每秒進(jìn)行 merge 的寫操作數(shù)目。即 wmerge/sr/s:       每秒完成的讀 I/O 設(shè)備次數(shù)。即 rio/sw/s:       每秒完成的寫 I/O 設(shè)備次數(shù)。即 wio/srsec/s:     每秒讀扇區(qū)數(shù)。即 rsect/swsec/s:     每秒寫扇區(qū)數(shù)。即 wsect/srkB/s:     每秒讀K字節(jié)數(shù)。是 rsec

18、t/s 的一半,因?yàn)槊可葏^(qū)大小為512字節(jié)。wkB/s:     每秒寫K字節(jié)數(shù)。是 wsect/s 的一半。avgrq-sz:   平均每次設(shè)備I/O操作的數(shù)據(jù)大小 (扇區(qū))。即 (rsect+wsect)/(rio+wio)avgqu-sz:   平均I/O隊(duì)列長(zhǎng)度。即 aveq/1000 (因?yàn)閍veq的單位為毫秒)。await:     平均每次設(shè)備I/O操作的等待時(shí)間 (毫秒)。即 (ruse+wuse)/(rio+wio)svctm:     平均每次設(shè)備I/O操作的服務(wù)時(shí)間 (毫秒)。即 use/(r

19、io+wio)%util:     一秒中有百分之多少的時(shí)間用于 I/O 操作,或者說一秒中有多少時(shí)間I/O隊(duì)列是非空的,即use/1000 (因?yàn)閡se的單位為毫秒),如果 %util 接近 100%,說明產(chǎn)生的I/O請(qǐng)求太多,I/O系統(tǒng)已經(jīng)滿負(fù)荷,該磁盤可能存在瓶頸。svctm 一般要小于 await (因?yàn)橥瑫r(shí)等待的請(qǐng)求的等待時(shí)間被重復(fù)計(jì)算了),svctm 的大小一般和磁盤性能有關(guān),CPU/內(nèi)存的負(fù)荷也會(huì)對(duì)其有影響,請(qǐng)求過多也會(huì)間接導(dǎo)致 svctm 的增加。await 的大小一般取決于服務(wù)時(shí)間(svctm) 以及 I/O 隊(duì)列的長(zhǎng)度和 I/O 請(qǐng)求的發(fā)出模式。如果 s

20、vctm 比較接近 await,說明 I/O 幾乎沒有等待時(shí)間;如果 await 遠(yuǎn)大于 svctm,說明 I/O 隊(duì)列太長(zhǎng),應(yīng)用得到的響應(yīng)時(shí)間變慢,如果響應(yīng)時(shí)間超過了用戶可以容許的范圍,這時(shí)可以考慮更換更快的磁盤,調(diào)整內(nèi)核 elevator 算法,優(yōu)化應(yīng)用,或者升級(jí) CPU。   隊(duì)列長(zhǎng)度(avgqu-sz)也可作為衡量系統(tǒng) I/O 負(fù)荷的指標(biāo),但由于 avgqu-sz 是按照單位時(shí)間的平均值,所以不能反映瞬間的 I/O 洪水。io/s = r/s +w/sawait=(ruse+wuse)/io(每個(gè)請(qǐng)求的等待時(shí)間)await*io/s=每秒內(nèi)的I/O請(qǐng)求總共需要等待的

21、msavgqu-sz=await*(r/s+w/s)/1000(隊(duì)列長(zhǎng)度)以下數(shù)據(jù)其實(shí)與/proc/diskstats中除設(shè)備號(hào)與設(shè)備名外的其它數(shù)據(jù)是一一對(duì)應(yīng)關(guān)系,只是統(tǒng)計(jì)的方法略有差別而已。#cat /sys/block/sda/stat17949157  1547772 466744707 174070520 15855905 42781288 469298468 2406092114        2 137680700 2581025934三,sar -b 監(jiān)控I/O#sar -b 1 10Linux 2.6.18-53.el5PAE

22、(localhost.localdomain)  03/29/200912:19:40 AM       tps      rtps       wtps      bread/s    bwrtn/s12:19:42 AM     21.48      9.40     12.08    187.92    429.5312:19:43

23、 AM     14.00     14.00      0.00    840.00      0.0012:19:44 AM     10.29      8.82      1.47    235.29    217.6512:19:45 AM     12.87     10.89    

24、 1.98    752.48    142.5712:19:46 AM     19.82     12.61      7.21    425.23    381.9812:19:47 AM     19.00     19.00      0.00    512.00      0.0012:19:49 AM &

25、#160;    9.29      9.29      0.00    262.86      0.0012:19:50 AM     16.00      5.00     11.00    144.00    536.0012:19:51 AM     17.65      8.82   &#

26、160;  8.82    211.76    235.2912:19:52 AM     41.41     29.29     12.12    614.14    363.64Average:           17.75     12.30      5.45    397.19    231.99

27、-tps:每秒鐘對(duì)磁盤發(fā)送transfer的總數(shù),一個(gè)transfer就是一個(gè)I/O,多個(gè)邏輯請(qǐng)求組合成一個(gè)對(duì)磁盤的I/O請(qǐng)求,一個(gè)transfer的大小不確定。-rtps:每秒鐘的物理讀的總數(shù)-wtps:每秒鐘的物理寫的總數(shù)-bread/s:每秒鐘從磁盤讀取的數(shù)據(jù)總數(shù)-bwrtn/s:每秒鐘寫入磁盤的數(shù)據(jù)的總數(shù)四,sar -d 1 10Linux 2.6.18-53.el5PAE (localhost.localdomain)  03/29/200912:38:56 AM       DEV       tps  

28、;rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util12:38:57 AM     dev8-0     15.00    232.00      0.00     15.47      0.01             0

29、.87      0.87      1.3012:38:57 AM   dev8-16      6.00     80.00    320.00     66.67      0.05             8.67      8.67      5.2012:38:57 AM &#

30、160; dev8-32     10.00    224.00      0.00     22.40      0.09             9.20      9.20      9.20              tps:每秒鐘對(duì)磁盤發(fā)送transfer的總數(shù),一個(gè)transf

31、er就是一個(gè)I/O,多個(gè)邏輯請(qǐng)求組合成一個(gè)對(duì)磁盤的I/O請(qǐng)求,一個(gè)transfer的大小不確定              rd_sec/s                     每秒鐘讀取的扇區(qū)數(shù),每個(gè)扇區(qū)512 bytes.              wr_sec/s          

32、0;          每秒鐘寫入的扇區(qū)數(shù),每個(gè)扇區(qū)512 bytes.              avgrq-sz                     對(duì)磁盤請(qǐng)求的扇區(qū)的平均大小。              avgqu-sz         

33、           對(duì)磁盤請(qǐng)求的平均隊(duì)列長(zhǎng)度.              await                     請(qǐng)求響應(yīng)的平均時(shí)間(毫秒).包括在請(qǐng)求隊(duì)列中的時(shí)間和響應(yīng)消耗時(shí)間              svctm        &#

34、160;            對(duì)IO請(qǐng)求的服務(wù)時(shí)間.              %util                     I/O請(qǐng)求占用的CPU時(shí)間百分比。Linux命令-分析內(nèi)存的瓶頸為了提高磁盤存取效率, Linux做了一些精心的設(shè)計(jì), 除了對(duì)dentry進(jìn)行緩存(用于VFS,加速文件路徑名到inode的轉(zhuǎn)換), 還采取了兩種主要Cache方

35、式:Buffer Cache和Page Cache.前者針對(duì)磁盤塊的讀寫,后者針對(duì)文件inode的讀寫.這些Cache有效縮短了I/O系統(tǒng)調(diào)用(比如 read,write,getdents)的時(shí)間.        內(nèi)存活動(dòng)基本上可以用3個(gè)數(shù)字來量化:活動(dòng)虛擬內(nèi)存總量,交換(swapping)率和調(diào)頁(paging)率.其中第一個(gè)數(shù)字表明內(nèi)存的總需求 量,后兩個(gè)數(shù)字表示那些內(nèi)存中有多少比例正處在使用之中.目標(biāo)是減少內(nèi)存活動(dòng)或增加內(nèi)存量,直到調(diào)頁率保持在一個(gè)可以接受的水平上為止.        活動(dòng)虛擬內(nèi)存的總量(VM

36、)=實(shí)際內(nèi)存大小(size of real memory)(物理內(nèi)存)+使用的交換空間大小(amount of swap space used)        當(dāng)程序運(yùn)行需要的內(nèi)存大于物理內(nèi)存時(shí),UNIX系統(tǒng)采用了調(diào)頁機(jī)制,即系統(tǒng)copy一些內(nèi)存中的頁面到磁盤上,騰出來空間供進(jìn)程使用。大多數(shù)系統(tǒng)可以忍受偶爾的調(diào)頁,但是頻繁的調(diào)頁會(huì)使系統(tǒng)性能急劇下降。UNIX內(nèi)存管理:UNIX系統(tǒng)通過2種方法進(jìn)行內(nèi)存管理,“調(diào)頁算法”,“交換技術(shù)”。調(diào)頁算法是將內(nèi)存中最近不常使用的頁面換到磁盤上,把常使用的頁面(活動(dòng)頁面)保留在內(nèi)存中供進(jìn)程使用。交換技術(shù)是系統(tǒng)將整個(gè)進(jìn)程,

37、而不是部分頁面,全部換到磁盤上。正常情況下,系統(tǒng)會(huì)發(fā)生一些交換過程。當(dāng)內(nèi)存嚴(yán)重不足時(shí),系統(tǒng)會(huì)頻繁使用調(diào)頁和交換,這增加了磁盤I/O的負(fù)載。進(jìn)一步降低了系統(tǒng)對(duì)作業(yè)的執(zhí)行速度,即系統(tǒng)I/O資源問題又會(huì)影響到內(nèi)存資源的分配。Unix的虛擬內(nèi)存Unix的虛擬內(nèi)存是一個(gè)十分復(fù)雜的子系統(tǒng),它實(shí)現(xiàn)了進(jìn)程間代碼與數(shù)據(jù)共享機(jī)制的透明性,并能夠分配比系統(tǒng)現(xiàn)有物理內(nèi)存更多的內(nèi)存,某些操作系統(tǒng)的虛存甚至能通過提供緩存功能影響到文件系統(tǒng)的性能,各種風(fēng)格的UNIX的虛存的實(shí)現(xiàn)方式區(qū)別很大,但都離不開下面的4個(gè)概念。1:實(shí)際內(nèi)存實(shí)際內(nèi)存是指一個(gè)系統(tǒng)中實(shí)際存在的物理內(nèi)存,稱為RAM。實(shí)際內(nèi)存是存儲(chǔ)臨時(shí)數(shù)據(jù)最快最有效的方式,因

38、此必須盡可能地分配給應(yīng)用程序,現(xiàn)在的RAM的形式有多種:SIMM、DIMM、Rambus、DDR等,很多RAM都可以使用糾錯(cuò)機(jī)制(ECC)。2:交換空間交換空間是專門用于臨時(shí)存儲(chǔ)內(nèi)存的一塊磁盤空間,通常在頁面調(diào)度和交換進(jìn)程數(shù)據(jù)時(shí)使用,通常推薦交換空間的大小應(yīng)該是物理內(nèi)存的二到四倍。3:頁面調(diào)度頁面調(diào)度是指從磁盤向內(nèi)存?zhèn)鬏敂?shù)據(jù),以及相反的過程,這個(gè)過程之所以被稱為頁面調(diào)度,是因?yàn)閁nix內(nèi)存被平均劃分成大小相等的頁面;通常頁面大小為 4KB和8KB(在Solaris中可以用pagesize命令查看)。當(dāng)可執(zhí)行程序開始運(yùn)行時(shí),它的映象會(huì)一頁一頁地從磁盤中換入,與此類似,當(dāng)某些內(nèi) 存在一段時(shí)間內(nèi)空閑

39、,就可以把它們換出到交換空間中,這樣就可以把空閑的RAM交給其他需要它的程序使用。4:交換頁面調(diào)度通常容易和交換的概念混淆,頁面調(diào)度是指把一個(gè)進(jìn)程所占內(nèi)存的空閑部分傳輸?shù)酱疟P上,而交換是指當(dāng)系統(tǒng)中實(shí)際的內(nèi)存已不夠滿足新的分配需求時(shí),把整個(gè)進(jìn)程傳輸?shù)酱疟P上,交換活動(dòng)通常意味著內(nèi)存不足。rootlocalhost # vmstat -n 3       (每個(gè)3秒刷新一次)procs-memory-swap-io- -system- -cpu-r   b    swpd   free       b

40、uff       cache       si   so    bi    bo   in      cs        us   sy   id   wa1  0   144 186164 105252 2386848    0    0     18   166  83 &

41、#160;   2          48   21  31  02  0   144 189620 105252 2386848    0    0      0   177  1039 1210   34   10  56   00  0   144 214324 105252 2386848    0  

42、;  0      0    10   1071   670    32   5    63   00  0   144 202212 105252 2386848    0    0      0   189   1035   558   20   3    77   02  

43、0   144 158772 105252 2386848    0    0      0   203  1065 2832    70  14  15   0MEMORY-swap:切換到交換內(nèi)存上的內(nèi)存(默認(rèn)以KB為單位)如果SWAP的值不為0,或者還比較大,比如超過100M了,但是SI,SO的值長(zhǎng)期為0,這種情況我們可以不用擔(dān)心,不會(huì)影響系統(tǒng)性能。-free:空閑的物理內(nèi)存- buff:作為buffer cache的內(nèi)存,對(duì)塊設(shè)備的讀寫進(jìn)

44、行緩沖-cache:作為page cache的內(nèi)存,文件系統(tǒng)的cache如果cache的值大的時(shí)候,說明cache處的文件數(shù)多,如果頻繁訪問到的文件都能被cache處,那么磁盤的讀IO bi會(huì)非常小。SWAP-si:交換內(nèi)存使用,由磁盤調(diào)入內(nèi)存-so:交換內(nèi)存使用,由內(nèi)存調(diào)入磁盤內(nèi)存夠用的時(shí)候,這2個(gè)值都是0,如果這2個(gè)值長(zhǎng)期大于0時(shí),系統(tǒng)性能會(huì)受到影響,磁盤IO和CPU資源都會(huì)被消耗。我發(fā)現(xiàn)有些朋友看到空閑內(nèi)存(FREE)很少的或接近于0時(shí),就認(rèn)為內(nèi)存不夠用了,實(shí)際上不能光看這一點(diǎn),Linux是搶占內(nèi)存式的OS,還要結(jié)合si,so,如果free很少,但是si,so也很少(大多時(shí)候是0),那么

45、不用擔(dān)心,系統(tǒng)性能這時(shí)不會(huì)受到影響的。Linux命令-分析CPU的瓶頸衡量CPU性能的指標(biāo):1,用戶使用CPU的情況;CPU運(yùn)行常規(guī)用戶進(jìn)程CPU運(yùn)行niced processCPU運(yùn)行實(shí)時(shí)進(jìn)程2,系統(tǒng)使用CPU情況;用于I/O管理:中斷和驅(qū)動(dòng)用于內(nèi)存管理:頁面交換用戶進(jìn)程管理:進(jìn)程開始和上下文切換3,WIO:用于進(jìn)程等待磁盤I/O而使CPU處于空閑狀態(tài)的比率。4,CPU的空閑率,除了上面的WIO以外的空閑時(shí)間5,CPU用于上下文交換的比率6,nice7,real-time8,運(yùn)行進(jìn)程隊(duì)列的長(zhǎng)度9,平均負(fù)載Linux中常用的監(jiān)控CPU整體性能的工具有:? mpstat: mpstat 不但能查

46、看所有CPU的平均信息,還能查看指定CPU的信息。? vmstat:只能查看所有CPU的平均信息;查看cpu隊(duì)列信息;? iostat: 只能查看所有CPU的平均信息。? sar: 與mpstat 一樣,不但能查看CPU的平均信息,還能查看指定CPU的信息。? top:顯示的信息同ps接近,但是top可以了解到CPU消耗,可以根據(jù)用戶指定的時(shí)間來更新顯示。下面一一介紹:一,vmstatrootlocalhost #vmstat -n 3       (每個(gè)3秒刷新一次)procs-memory-swap- -io- -system- -cpu-r b  

47、 swpd   free       buff       cache       si   so    bi    bo   in      cs        us   sy   id  wa10    144 186164 105252 2386848    0    0

48、    18   166  83     2          48   21  31  020    144 189620 105252 2386848    0    0      0   177  1039 1210   34   10  56  000    144 214324

49、105252 2386848    0    0      0    10   1071   670    32   5    63  000    144 202212 105252 2386848    0    0      0   189   1035   558    20 &#

50、160; 3    77  020    144 158772 105252 2386848    0    0      0   203  1065 2832    70  14  15  0紅色內(nèi)容標(biāo)示CPU相關(guān)的參數(shù)PROC(ESSES)-r:如果在processes中運(yùn)行的序列(process r)是連續(xù)的大于在系統(tǒng)中的CPU的個(gè)數(shù)表示系統(tǒng)現(xiàn)在運(yùn)行比較慢,有多數(shù)的進(jìn)程等待CPU.如果r的輸出數(shù)大于系

51、統(tǒng)中可用CPU個(gè)數(shù)的4倍的話,則系統(tǒng)面臨著CPU短缺的問題,或者是CPU的速率過低,系統(tǒng)中有多數(shù)的進(jìn)程在等待CPU,造成系統(tǒng)中進(jìn)程運(yùn)行過慢.SYSTEM-in:每秒產(chǎn)生的中斷次數(shù)-cs:每秒產(chǎn)生的上下文切換次數(shù)上面2個(gè)值越大,會(huì)看到由內(nèi)核消耗的CPU時(shí)間會(huì)越大CPU-us:用戶進(jìn)程消耗的CPU時(shí)間百分us的值比較高時(shí),說明用戶進(jìn)程消耗的CPU時(shí)間多,但是如果長(zhǎng)期超50%的使用,那么我們就該考慮優(yōu)化程序算法或者進(jìn)行加速(比如PHP/PERL)-sy:內(nèi)核進(jìn)程消耗的CPU時(shí)間百分比(sy的值高時(shí),說明系統(tǒng)內(nèi)核消耗的CPU資源多,這并不是良性表現(xiàn),我們應(yīng)該檢查原因)-wa:IO等待消耗的CPU時(shí)間百

52、分比wa的值高時(shí),說明IO等待比較嚴(yán)重,這可能由于磁盤大量作隨機(jī)訪問造成,也有可能磁盤出現(xiàn)瓶頸(塊操作)。-id:CPU處于空閑狀態(tài)時(shí)間百分比,如果空閑時(shí)間(cpu id)持續(xù)為0并且系統(tǒng)時(shí)間(cpu sy)是用戶時(shí)間的兩倍(cpu us) 系統(tǒng)則面臨著CPU資源的短缺.解決辦法:當(dāng)發(fā)生以上問題的時(shí)候請(qǐng)先調(diào)整應(yīng)用程序?qū)PU的占用情況.使得應(yīng)用程序能夠更有效的使用CPU.同時(shí)可以考慮增加更多的CPU.  關(guān)于CPU的使用情 況還可以結(jié)合mpstat,  ps aux top  prstat ?a等等一些相應(yīng)的命令來綜合考慮關(guān)于具體的CPU的使用情況,和那些進(jìn)程在占

53、用大量的CPU時(shí)間.一般情況下,應(yīng)用程序的問題會(huì)比較大一些.比如一些 SQL語句不合理等等都會(huì)造成這樣的現(xiàn)象.二,sarsar options -A -o file t n在命令行中,n 和t 兩個(gè)參數(shù)組合起來定義采樣間隔和次數(shù),t為采樣間隔,是必須有的參數(shù),n為采樣次數(shù),是可選的,默認(rèn)值是1,-o file表示將命令結(jié)果以二進(jìn)制格式存放在文件中,file 在此處不是關(guān)鍵字,是文件名。options 為命令行選項(xiàng),sar命令的選項(xiàng)很多,下面只列出常用選項(xiàng):-A:所有報(bào)告的總和。-u:CPU利用率-v:進(jìn)程、I節(jié)點(diǎn)、文件和鎖表狀態(tài)。-d:硬盤使用報(bào)告。-r:內(nèi)存和交換空間的使用統(tǒng)計(jì)。-g:串口I

54、/O的情況。-b:緩沖區(qū)使用情況。-a:文件讀寫情況。-c:系統(tǒng)調(diào)用情況。-q:報(bào)告隊(duì)列長(zhǎng)度和系統(tǒng)平均負(fù)載-R:進(jìn)程的活動(dòng)情況。-y:終端設(shè)備活動(dòng)情況。-w:系統(tǒng)交換活動(dòng)。-x pid | SELF | ALL :報(bào)告指定進(jìn)程ID的統(tǒng)計(jì)信息,SELF關(guān)鍵字是sar進(jìn)程本身的統(tǒng)計(jì),ALL關(guān)鍵字是所有系統(tǒng)進(jìn)程的統(tǒng)計(jì)。用sar進(jìn)行CPU利用率的分析#sar -u 2 10Linux 2.6.18-53.el5PAE (localhost.localdomain)  03/28/200907:40:17 PM       CPU     %u

55、ser     %nice   %system   %iowait    %steal     %idle07:40:19 PM       all         12.44      0.00         6.97          1.74         0.00  

56、      78.8607:40:21 PM       all         26.75      0.00        12.50         16.00       0.00        44.7507:40:23 PM       all     &#

57、160;   16.96      0.00         7.98          0.00         0.00        75.0607:40:25 PM       all         22.50      0.00       

58、60; 7.00          3.25         0.00        67.2507:40:27 PM       all         7.25        0.00         2.75          2.50    

59、     0.00        87.5007:40:29 PM       all         20.05      0.00         8.56          2.93         0.00        68.4607:40:31 PM 

60、60;     all         13.97      0.00         6.23          3.49         0.00        76.3107:40:33 PM       all         8.25    

61、;    0.00         0.75          3.50         0.00        87.5007:40:35 PM       all         13.25      0.00         5.75    

62、     4.00         0.00        77.0007:40:37 PM       all         10.03      0.00         0.50          2.51         0.00   &#

63、160;    86.97Average:             all         15.15      0.00         5.91          3.99         0.00        74.95在顯示內(nèi)容包括:%user:CPU處在用戶模式下的時(shí)

64、間百分比。        %nice:CPU處在帶NICE值的用戶模式下的時(shí)間百分比。%system:CPU處在系統(tǒng)模式下的時(shí)間百分比。%iowait:CPU等待輸入輸出完成時(shí)間的百分比。        %steal:管理程序維護(hù)另一個(gè)虛擬處理器時(shí),虛擬CPU的無意識(shí)等待時(shí)間百分比。%idle:CPU空閑時(shí)間百分比。        在所有的顯示中,我們應(yīng)主要注意%iowait和%idle,%iowait的值過高,表示硬盤存在I/O瓶頸,%idle值高,表示CPU較空 閑,如果

65、%idle值高但系統(tǒng)響應(yīng)慢時(shí),有可能是CPU等待分配內(nèi)存,此時(shí)應(yīng)加大內(nèi)存容量。%idle值如果持續(xù)低于10,那么系統(tǒng)的CPU處理能力相對(duì) 較低,表明系統(tǒng)中最需要解決的資源是CPU。用sar進(jìn)行運(yùn)行進(jìn)程隊(duì)列長(zhǎng)度分析:#sar -q 2 10Linux 2.6.18-53.el5PAE (localhost.localdomain)  03/28/200907:58:14 PM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-1507:58:16 PM      

66、   0         493          0.64        0.56        0.4907:58:18 PM         1         491          0.64        0.56   

67、0;    0.4907:58:20 PM         1         488          0.59        0.55        0.4907:58:22 PM         0         487         &#

68、160;0.59        0.55        0.4907:58:24 PM         0         485          0.59        0.55        0.4907:58:26 PM         1   

69、60;     483          0.78        0.59        0.5007:58:28 PM         0         481          0.78        0.59        0.50

70、07:58:30 PM         1         480          0.72        0.58        0.5007:58:32 PM         0         477          0.72   

71、0;    0.58        0.5007:58:34 PM         0         474          0.72        0.58        0.50Average:               0    

72、;     484          0.68        0.57        0.49runq-sz 準(zhǔn)備運(yùn)行的進(jìn)程運(yùn)行隊(duì)列。plist-sz  進(jìn)程隊(duì)列里的進(jìn)程和線程的數(shù)量ldavg-1  前一分鐘的系統(tǒng)平均負(fù)載(load average)ldavg-5  前五分鐘的系統(tǒng)平均負(fù)載(load average)ldavg-15  前15分鐘的系統(tǒng)平均負(fù)載(load average)順便說一下load

73、avarage的含義load average可以理解為size=+0每秒鐘CPU等待運(yùn)行的進(jìn)程個(gè)數(shù).在Linux系統(tǒng)中,sar -q、uptime、w、top等命令都會(huì)有系統(tǒng)平均負(fù)載load average的輸出,那么什么是系統(tǒng)平均負(fù)載呢?系統(tǒng)平均負(fù)載被定義為在特定時(shí)間間隔內(nèi)運(yùn)行隊(duì)列中的平均任務(wù)數(shù)。如果一個(gè)進(jìn)程滿足以下條件則其就會(huì)位于運(yùn)行隊(duì)列中:- 它沒有在等待I/O操作的結(jié)果- 它沒有主動(dòng)進(jìn)入等待狀態(tài)(也就是沒有調(diào)用'wait')- 沒有被停止(例如:等待終止)例如:# uptime20:55:40 up 24 days,  3:06,  1 user,

74、 load average: 8.13, 5.90, 4.94命令輸出的最后內(nèi)容表示在過去的1、5、15分鐘內(nèi)運(yùn)行隊(duì)列中的平均進(jìn)程數(shù)量。一般來說只要每個(gè)CPU的當(dāng)前活動(dòng)進(jìn)程數(shù)不大于3那么系統(tǒng)的性能就是良好的,如果每個(gè)CPU的任務(wù)數(shù)大于5,那么就表示這臺(tái)機(jī)器的性能有嚴(yán)重問題。對(duì) 于上面的例子來說,假設(shè)系統(tǒng)有兩個(gè)CPU,那么其每個(gè)CPU的當(dāng)前任務(wù)數(shù)為:8.13/2=4.065。這表示該系統(tǒng)的性能是可以接受的。三,iostat#iostat -c 2 10Linux 2.6.18-53.el5PAE (localhost.localdomain)  03/28/2009avg-c

75、pu:  %user   %nice %system %iowait  %steal   %idle                    30.10    0.00          4.89         5.63    0.00   59.38avg-cpu:  %user   %nice

76、%system %iowait  %steal   %idle                    8.46       0.00          1.74         0.25    0.00   89.55avg-cpu:  %user   %nice %system %iowait  

77、%steal   %idle                    22.06     0.00          11.28       1.25    0.00   65.41四,mpstatmpstat是 Multiprocessor Statistics的縮寫,是實(shí)時(shí)系統(tǒng)監(jiān)控工具。其報(bào)告與CPU的一些統(tǒng)計(jì)信息,這些信息存放在/proc/stat文件中

78、。在多CPUs系統(tǒng)里,其不 但能查看所有CPU的平均狀況信息,而且能夠查看特定CPU的信息。下面只介紹 mpstat與CPU相關(guān)的參數(shù),mpstat的語法如下:mpstat -P |ALL internal count參數(shù)的含義如下:參數(shù) 解釋-P |ALL 表示監(jiān)控哪個(gè)CPU, cpu在0,cpu個(gè)數(shù)-1中取值internal 相鄰的兩次采樣的間隔時(shí)間count 采樣的次數(shù),count只能和delay一起使用當(dāng)沒有參數(shù)時(shí),mpstat則顯示系統(tǒng)啟動(dòng)以后所有信息的平均值。有interval時(shí),第一行的信息自系統(tǒng)啟動(dòng)以來的平均信息。從第二行開始,輸出為前一個(gè)interval時(shí)間段的平均信息。與C

79、PU有關(guān)的輸出的含義如下:參數(shù) 解釋 從/proc/stat獲得數(shù)據(jù)CPU 處理器IDuser 在internal時(shí)間段里,用戶態(tài)的CPU時(shí)間(%) ,不包含 nice值為負(fù) 進(jìn)程 ?usr/?total*100nice 在internal時(shí)間段里,nice值為負(fù)進(jìn)程的CPU時(shí)間(%) ?nice/?total*100system 在internal時(shí)間段里,核心時(shí)間(%) ?system/?total*100iowait 在internal時(shí)間段里,硬盤IO等待時(shí)間(%) ?iowait/?total*100irq 在internal時(shí)間段里,軟中斷時(shí)間(%) ?irq/?total*100

80、soft 在internal時(shí)間段里,軟中斷時(shí)間(%) ?softirq/?total*100idle 在internal時(shí)間段里,CPU除去等待磁盤IO操作外的因?yàn)槿魏卧蚨臻e的時(shí)間閑置時(shí)間 (%) ?idle/?total*100intr/s 在internal時(shí)間段里,每秒CPU接收的中斷的次數(shù) ?intr/?total*100CPU總的工作時(shí)間=total_cur=user+system+nice+idle+iowait+irq+softirqtotal_pre=pre_user+ pre_system+ pre_nice+ pre_idle+ pre_iowait+ pre_irq

81、+ pre_softirq?user=user_cur ? user_pre?total=total_cur-total_pre其中_cur 表示當(dāng)前值,_pre表示interval時(shí)間前的值。上表中的所有值可取到兩位小數(shù)點(diǎn)。#mpstat -P ALL 2 10Linux 2.6.18-53.el5PAE (localhost.localdomain)  03/28/200910:07:57 PM  CPU   %user   %nice    %sys %iowait    %irq   %soft

82、 %steal   %idle    intr/s10:07:59 PM  all   20.75    0.00   10.50    1.50    0.25    0.25    0.00   66.75   1294.5010:07:59 PM    0   16.00    0.00    9.00    1

83、.50    0.00    0.00    0.00   73.50   1000.5010:07:59 PM    1   25.76    0.00   12.12    1.52    0.00    0.51    0.00   60.10    294.00 閱讀全文 如何優(yōu)化linux系01)不用root ,添加普通用戶,通過sudo授權(quán)管理。02)更改默認(rèn)的遠(yuǎn)程連接SSH服務(wù)端口及禁止root用戶遠(yuǎn)程連接。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論