2012年2月9日 星期四

Linux系統性能指標介紹


在我們介紹Linux系統的各種調優參數和性能監測工具之前,需要先討論一些關於性能調優的參數。因為Linux是一個開源作業系統,所以又大量可用的性能監測工具。對這些工具的選擇取決於你的個人喜好和對資料細節的要求。所有的性能監測工具都是按照同樣的規則來工作的,所以無論你使用哪種監測工具都需要理解這些參數。下面列出了一些重要的參數,有效的理解它們是很有用處的。
1)處理器參數
CPU utilization
這是一個很簡單的參數,它直觀的描述了每個CPU的利用率。在xSeries架構中,如果CPU的利用率長時間的超過80%,就可能是出現了處理器的瓶頸。

Runable processes
這個值描述了正在準備被執行的進程,在一個持續時間裡這個值不應該超過物理CPU數量的10倍,否則CPU方面就可能存在瓶頸。

Blocked
描述了那些因為等待I/O操作結束而不能被執行的進程,Blocked可能指出你正面臨I/O瓶頸。

User time
描述了處理使用者進程的百分比,包括nice time。如果User time的值很高,說明系統性能用在處理實際的工作。

System time
描述了CPU花費在處理內核操作包括IRQ和軟體插斷上面的百分比。如果system time很高說明系統可能存在網路或者驅動堆疊方面的瓶頸。一個系統通常只花費很少的時間去處理內核的操作。

Idle time
描述了CPU空閒的百分比。

Nice time
描述了CPU花費在處理re-nicing進程的百分比。

Context switch
系統中執行緒之間進行交換的數量。

Waiting
CPU花費在等待I/O操作上的總時間,與blocked相似,一個系統不應該花費太多的時間在等待I/O操作上,否則你應該進一步檢測I/O子系統是否存在瓶頸。

Interrupts
Interrupts 值包括硬Interrupts和軟Interrupts,硬Interrupts會對系統性能帶來更多的不利影響。高的Interrupts值指出系統可能存在一個軟體的瓶頸,可能是內核或者驅動程式。注意Interrupts值中包括CPU時鐘導致的中斷(現代的xServer系統每秒1000 Interrupts值)。
2記憶體參數
Free memory
相比其他作業系統,Linux空閒記憶體的值不應該做為一個性能參考的重要指標,因為就像我們之前提到過的,Linux內核會分配大量沒有被使用的記憶體作為檔案系統的緩存,所以這個值通常都比較小。

Swap usage
這個值描述了已經被使用的swap空間。Swap usage只表示了Linux管理記憶體的有效性。對識別記憶體瓶頸來說,Swap In/Out才是一個比較又意義的依據,如果Swap In/Out的值長期保持在每秒200300個頁面通常就表示系統可能存在記憶體的瓶頸。

Buffer and cache
這個值描述了為檔案系統和塊設備分配的緩存。注意在Red Hat Enterprise Linux 3和更早一些的版本中,大部分空閒記憶體會被分配作為緩存使用。在Red Hat Enterprise Linux 4以後的版本中,你可以通過修改/proc/sys/vm中的page_cache_tuning來調整空閒記憶體中作為緩存的數量。

Slabs
描述了內核使用的記憶體空間,注意內核的頁面是不能被交換到磁片上的。

Active versus inactive memory
提供了關於系統記憶體的active記憶體資訊,Inactive記憶體是被kswapd守護進程交換到磁片上的空間。
3)網路參數
Packets received and sent
這個參數表示了一個指定網卡接收和發送的資料包的數量。

Bytes received and sent
這個參數表示了一個指定網卡接收和發送的資料包的位元組數。

Collisions per second
這個值提供了發生在指定網卡上的網路衝突的數量。持續的出現這個值代表在網路架構上出現了瓶頸,而不是在伺服器端出現的問題。在正常配置的網路中衝突是非常少見的,除非使用者的網路環境都是由hub組成。

Packets dropped
這個值表示了被內核丟掉的資料包數量,可能是因為防火牆或者是網路緩存的缺乏。

Overruns
Overruns表達了超出網路介面緩存的次數,這個參數應該和packets dropped值聯繫到一起來判斷是否存在在網路緩存或者網路佇列過長方面的瓶頸。

Errors
這個值記錄了標誌為失敗的幀的數量。這個可能由錯誤的網路配置或者部分網線損壞導致,在銅口千兆乙太網環境中部分網線的損害是影響性能的一個重要因素。
4)塊設備參數
Iowait
CPU等待I/O操作所花費的時間。這個值持續很高通常可能是I/O瓶頸所導致的。

Average queue length
I/O請求的數量,通常一個磁片佇列值為23為最佳情況,更高的值說明系統可能存在I/O瓶頸。

Average wait
響應一個I/O操作的平均時間。Average wait包括實際I/O操作的時間和在I/O佇列裡等待的時間。

Transfers per second
描述每秒執行多少次I/O操作(包括讀和寫)。Transfers per second的值與kBytes per second結合起來可以?明你估計系統的平均傳輸塊大小,這個傳輸塊大小通常和磁片子系統的條帶化大小相符合可以獲得最好的性能。

Blocks read/write per second
這個值表達了每秒讀寫的blocks數量,在2.6內核中blocks1024bytes,在早些的內核版本中blocks可以是不同的大小,從512bytes4kb

Kilobytes per second read/write
按照kb為單位表示讀寫塊設備的實際資料的數量。

沒有留言: