掌握Linux系統(tǒng)性能指標 學好Linux
操作系統(tǒng)越來越受到計算機用戶的關注。Linux操作系統(tǒng)也是自由軟件和開放源代碼發(fā)展中最著名的例子。在我們介紹Linux系統(tǒng)的各種調優(yōu)參數(shù)和性能監(jiān)測工具之前,需要先討論一些關于Linux系統(tǒng)性能指標。因為Linux是一個開源操作系統(tǒng),所以又大量可用的性能監(jiān)測工具。對這些工具的選擇取決于你的個人喜好和對數(shù)據(jù)細節(jié)的要求。希望你學好Linux系統(tǒng)性能指標。
所有的性能監(jiān)測工具都是按照同樣的規(guī)則來工作的,所以無論你使用哪種監(jiān)測工具都需要理解這些參數(shù)。下面列出了一些重要的參數(shù),有效的理解它們是很有用處的。
(1)處理器參數(shù)
CPU utilization
這是一個很簡單的參數(shù),它直觀的描述了每個CPU的利用率。在xSeries架構中,如果CPU的利用率長時間的超過80%,就可能是出現(xiàn)了處理器的瓶頸。
Runable processes
這個值描述了正在準備被執(zhí)行的進程,在一個持續(xù)時間里這個值不應該超過物理CPU數(shù)量的10倍,否則CPU方面就可能存在瓶頸。
Blocked
描述了那些因為等待I/O操作結束而不能被執(zhí)行的進程,Blocked可能指出你正面臨I/O瓶頸。
User time
描述了處理用戶進程的百分比,包括nice time。如果User time的值很高,說明系統(tǒng)性能用在處理實際的工作。
System time
描述了CPU花費在處理內(nèi)核操作包括IRQ和軟件中斷上面的百分比。如果system time很高說明系統(tǒng)可能存在網(wǎng)絡或者驅動堆棧方面的瓶頸。一個系統(tǒng)通常只花費很少的時間去處理內(nèi)核的操作。
Idle time
描述了CPU空閑的百分比。
Nice time
描述了CPU花費在處理re-nicing進程的百分比。
Context switch
系統(tǒng)中線程之間進行交換的數(shù)量。
Waiting
CPU花費在等待I/O操作上的總時間,與blocked相似,一個系統(tǒng)不應該花費太多的時間在等待I/O操作上,否則你應該進一步檢測I/O子系統(tǒng)是否存在瓶頸。
Interrupts
Interrupts值包括硬Interrupts和軟Interrupts,硬Interrupts會對系統(tǒng)性能帶來更多的不利影響。高的Interrupts值指出系統(tǒng)可能存在一個軟件的瓶頸,可能是內(nèi)核或者驅動程序。注意Interrupts值中包括CPU時鐘導致的中斷(現(xiàn)代的xServer系統(tǒng)每秒1000個Interrupts值)。
(2)內(nèi)存參數(shù)
Free memory
相比其他操作系統(tǒng),Linux空閑內(nèi)存的值不應該做為一個性能參考的重要指標,因為就像我們之前提到過的,Linux內(nèi)核會分配大量沒有被使用的內(nèi)存作為文件系統(tǒng)的緩存,所以這個值通常都比較小。
Swap usage
這個值描述了已經(jīng)被使用的swap空間。Swap usage只表示了Linux管理內(nèi)存的有效性。對識別內(nèi)存瓶頸來說,Swap In/Out才是一個比較又意義的依據(jù),如果Swap In/Out的值長期保持在每秒200到300個頁面通常就表示系統(tǒng)可能存在內(nèi)存的瓶頸。
Buffer and cache
這個值描述了為文件系統(tǒng)和塊設備分配的緩存。注意在Red Hat Enterprise Linux 3和更早一些的版本中,大部分空閑內(nèi)存會被分配作為緩存使用。在Red Hat Enterprise Linux 4以后的版本中,你可以通過修改/proc/sys/vm中的page_cache_tuning來調整空閑內(nèi)存中作為緩存的數(shù)量。
Slabs
描述了內(nèi)核使用的內(nèi)存空間,注意內(nèi)核的頁面是不能被交換到磁盤上的。
Active versus inactive memory
提供了關于系統(tǒng)內(nèi)存的active內(nèi)存信息,Inactive內(nèi)存是被kswapd守護進程交換到磁盤上的空間。
(3)網(wǎng)絡參數(shù)
Packets received and sent
這個參數(shù)表示了一個指定網(wǎng)卡接收和發(fā)送的數(shù)據(jù)包的數(shù)量。
Bytes received and sent
這個參數(shù)表示了一個指定網(wǎng)卡接收和發(fā)送的數(shù)據(jù)包的字節(jié)數(shù)。
Collisions per second
這個值提供了發(fā)生在指定網(wǎng)卡上的網(wǎng)絡沖突的數(shù)量。持續(xù)的出現(xiàn)這個值代表在網(wǎng)絡架構上出現(xiàn)了瓶頸,而不是在服務器端出現(xiàn)的問題。在正常配置的網(wǎng)絡中沖突是非常少見的,除非用戶的網(wǎng)絡環(huán)境都是由hub組成。
Packets dropped
這個值表示了被內(nèi)核丟掉的數(shù)據(jù)包數(shù)量,可能是因為防火墻或者是網(wǎng)絡緩存的缺乏。
Overruns
Overruns表達了超出網(wǎng)絡接口緩存的次數(shù),這個參數(shù)應該和packets dropped值聯(lián)系到一起來判斷是否存在在網(wǎng)絡緩存或者網(wǎng)絡隊列過長方面的瓶頸。
Errors
這個值記錄了標志為失敗的幀的數(shù)量。這個可能由錯誤的網(wǎng)絡配置或者部分網(wǎng)線損壞導致,在銅口千兆以太網(wǎng)環(huán)境中部分網(wǎng)線的損害是影響性能的一個重要因素。
(4)塊設備參數(shù)
Iowait
CPU等待I/O操作所花費的時間。這個值持續(xù)很高通??赡苁荌/O瓶頸所導致的。
Average queue length
I/O請求的數(shù)量,通常一個磁盤隊列值為2到3為最佳情況,更高的值說明系統(tǒng)可能存在I/O瓶頸。
Average wait
響應一個I/O操作的平均時間。Average wait包括實際I/O操作的時間和在I/O隊列里等待的時間。
Transfers per second
描述每秒執(zhí)行多少次I/O操作(包括讀和寫)。Transfers per second的值與kBytes per second結合起來可以幫助你估計系統(tǒng)的平均傳輸塊大小,這個傳輸塊大小通常和磁盤子系統(tǒng)的條帶化大小相符合可以獲得最好的性能。
Blocks read/write per second
這個值表達了每秒讀寫的blocks數(shù)量,在2.6內(nèi)核中blocks是1024bytes,在早些的內(nèi)核版本中blocks可以是不同的大小,從512bytes到4kb。
Kilobytes per second read/write
按照kb為單位表示讀寫塊設備的實際數(shù)據(jù)的數(shù)量。
Linux系統(tǒng)性能指標對你學習Linux一定有所幫助。
【編輯推薦】