上面羅列了windows與linux系統下的性能計數器,分析一個操作系統的性能,應該查看哪些指標。那么操作系統的載體是系統硬件。那么硬件的性能直接影響著操作系統的性能。下面就簡單分析一下系統的硬件。CPU、內存、磁盤。
CPU分析
CPU的性能對于計算機整體的性能起著主導作用。對于早期對計算機甚至直呼其CPU的型號,如 386 、486、奔三,奔四。
那么我們CPU性能最直接的評估就是查看其CPU工作頻率,就是CPU的時鐘頻率,單位為是Hz。隨著CPU的發展,主頻由MHz現在的GHz
(1GHz=1000MHz=1000000KHz=1000000000Hz)
處理器除了主頻指標外,還有另外兩個密切相關的概念:倍頻與外頻。外頻是cpu的基準頻率,單位是MHz。外頻是CPU與主板之間同步運行的速度,而且目前的絕大部分計算機系統中外頻與是內存與主板之間的同步運行速度,在這種方式下,可以理解為CPU的外頻直接與內存相連通。實現兩都的同步運行狀態;倍頻即主頻與外頻之間的倍數。
主頻 = 外頻 * 倍數
如何真對CPU進行分析?
1)查看System\%Total Processor Time 性能計數器的計數值。
該計數值用于體現服務器整體的處理利用率,對于多處理器來講,該數值體現的是所有CPU的平均利用率。如果該數值大于持續大于90% ,表示CPU有可能存在平靜。
2)查看每個CPU的Processor\%User Time
Processor\%User Time是指系統的非核心消耗的CPU時間,如果該值較大,可以考慮通過算法優化來降低該值。如果該服務器是數據庫服務器,Processor\%User Time值大的原因很可能是數據庫的排序或是函數操作消耗了過多的CPU時間,此時可以考慮對數據庫進行優化。
3)查看Processor\%Processor Time 和 System\Processor Queue Length
查看System\Processor Queue Length 計算器,當該計數器的值大于CPU數量的總數加1時,說明CPU產生了賭塞。但產生賭塞時,Processor\%Processor Time的值不一定很大,此時就必須查看CPU賭塞的原因。
4)查看%DPC Time
%DPC Time 是另一個需要關注的內容,該計數值越低越好。在多CPU系統中,如果該值大于50% 并且Processor\%Processor Time值非常高,則考慮加一個網卡來提高性能。
磁盤I/O分析
硬盤應該是計算機硬件中發展最慢的設備,很多常見瓶頸都是由于硬盤的讀/寫速度慢導致的。提高硬盤讀/寫性能無非是提高轉速、提高單碟容量,增加緩存和更新接口,因為傳統的硬盤是物理旋轉讀寫數據,所以轉速的提高相當困難;而提高單碟容量也存在一寫的技術瓶頸,1TB的單碟的容量想要突破還也需要時間。
對于傳統的溫氏硬盤到現在速度也只能達到120MB/s的讀取速度,這個速度還真對大文件的讀寫,而對于服務器大量4KB的小文件讀/寫速度,會驚人的下跌至1MB不到,而對應的IOPS(每秒磁盤的讀/寫次數)會低得可憐,大量的數據都在排隊從硬盤上讀取到內存中,再利用內存的超大帶寬完成操作。這也是為什么內存大的系統比較快的原因。但內存的速度雖然比硬盤快得多,也有其致命的缺點,一旦斷電,內存中的數據將全部丟失。
IOPS(Input/Output Per Second)每秒磁盤的輸入/輸出量(或讀/寫次數),是衡量磁盤性能的主要指標之一。IOPS是指單位時間內系統能處理的I/O請求數量,一般以每秒處理的I/O請求數量為單位。
另一個重要指標是數據吞吐量(Throughput),指單位時間內可以成功傳輸的數據數量。對于大量順序讀/寫應用,則更關注吞吐量指標。
傳統的溫氏硬盤完成一個I/O請求所花費的時間包括 尋道時間、旋轉延遲和數據傳輸時間三部分。
* 尋道時間,是指將讀寫磁頭移動至正確的磁道上所需要的時間。目前磁盤的平均尋道時間一般在3~15ms
* 旋轉延遲,是指盤片旋轉將請求數據所在扇區移至讀/寫磁頭下方所需要的時間。7200轉速的磁盤,平均旋轉言辭大于為60 * 1000/7200/2=4.17ms
* 數據傳輸時間,是指完成傳輸所請求的數據所需要的時間。目前SATA II 可達到300MB/s的接口數據傳輸速率。數據傳輸時間通常遠小于前兩部分時間。
如何分析磁盤I/O
1)與 Processor/Privileged Time 合并進行分析。
如果在Physical Disk 計算器,只有%Disk Time 值較大,其它值都比較適中,則硬盤可能會是瓶頸。若幾個值都比較大,且數值持續超過80% ,內里可能是內存泄漏。
2)根據Disk sec/Transfer 進行分析
一般來說,定義Transfer 數值小于15毫秒為優秀,介于15~20毫秒之間為良好,30~60毫秒之間為可以接受,超過60毫秒則需要考慮更換硬盤或硬盤的RAID方式。(注意:各種不同的RAID其計算方式也不完全相同)
固態硬盤SSD是一種電子裝置,避免了傳統硬盤在尋道和旋轉上的時間花費,存儲單元尋址開銷大大降低,因些IOPS可以非常高。
內存分析
為什么固態硬盤的無法做到內存的存取速度呢?這是因為ROM固態硬盤和RAM內存的實現原理不同導致的。
內存的發展速度已經達到了第五代DDR內存(一般用于顯卡上),而我們通常主板上的使用的都是第三代DDR內存,內存的主要性指標是在讀寫/帶寬上,而影響帶寬上的指標主要是內存通道及內存頻率。
現在常見的內存一般型號為DDR3 1333MHz ,我們可以通過更換更高頻率或更低時序的方式來提升內存的帶寬。(內存時序是描述內存條性能的一種參數)
內存頻率比較好理解,現在“發燒”級別的內存頻率可以做到2400MHz,相對于1333MHz的默認頻率幾乎有了一倍的提升,這種頻率的提升,可以換來帶寬從16GB到24GB的提升,如果再能降低時序,那么結果會進一步提升。(關于內存時序概念請參考其它文獻)。
另外一個提升策略就是通道,簡單來說就是讓多根內存并行和內存控制器進行交互,從而成倍地提升吞吐能力。對于內存比較了解的朋友,雙通道、三通道甚至四通道這些名詞應該不會陌生。
內存分析指標
1)查看Memory\Available Mbytes指標。
這個計數器是描述系統可用內存的直接指標,在對系統進行操作系統級別的內存分析時,首先通過這個指標建立一個初步的印象,了解性能測試過程中系統是否仍然有足夠的內存可用。
如果這個指標的數據比較小,系統可能出現了內存方面的問題。
2)Pages/sec 、 Pages Read/sec 和Page Faults/sec指標
操作系統經常會利用磁盤交換的方式提高系統可用的內存量或內存的使用效率。這三個指標直接反映了操作系統進行磁盤交換的頻度。
如果Pages/sec 的計數器持續高于幾百,很可能會有內存方面的問題產生,但Pages/sec的值很大不一定表明內存有問題,而可能是運行使用內存映射文件的程序所導致。Page Faults/sec 值表示每秒發生頁面失效的次數,頁面失效次數越多,說明操作系統向內存讀取的次數越多。些時還需要查看Pages Read/sec 的計數值,該計數器的閥值為5,如果計數值超過5,則可以判斷內存存在問題。
3)根據Physical Disk計數器的值分析性能瓶頸
Physical Disk 計數器的分析包括對Pages Read/sec和 %Disk Time及Average Disk Queue Length 的分析。如果Pages Read/sec 很低,同時%Disk Time和Average Disk Queue Length 的值很高,則可能有磁盤瓶頸。但是,如果隊列長度增加的同時 Page Read/sec 并未降低,則是由于內存不足。