2012年11月8日星期四

木桶原理與瓶頸

木桶原理與瓶頸
  木桶原理又稱"短板理論",其檜木桶核心思想是:一只木桶盛水的多少,並不取決於桶壁上最高的那塊木塊,而是取決於桶壁上最短的那塊。
  將這個理論應用到系統性能優化上,可以這麼理解,即使系統擁有充足的內存資源和CPU資源,但是如果磁盤I/O性能低下,那麼系統的總體性能是取決於當前最慢的磁盤I/O速能量屋度,而不是當前最優越的CPU或者內存。在這種情況下,如果需要進一步提升系統性能,優化內存或者CPU資源是毫無用處的。只有提高磁盤I/O性能才能對系統的整體性能進行優化。而此時,磁盤I/O就是系統的性能瓶頸。
  注意:根據木桶原理,系統的最終性能取決於系統中性能表現最差的組件。因此,為了提升系統整體性能,必須對系統中表現最差的組件進行優化,而不是對系統中表現良好的組件進行優化。
  根據應用的特點不同,任何計算機資源都有可能成為系統瓶頸。其中,最有可能成為系統瓶頸的計算資源如下。
  磁盤I/O:由於磁盤I/O讀寫的蒸足桶速度要比內存慢很多,程序在運行過程中,如果需要等待磁盤I/O完成,那麼低效的I/O操作會拖累整三溫暖烤箱個系統。
  網絡操作:對網絡數據進行讀寫的情況與磁盤I/O類似。由於網絡環境的不確定性,尤其是對互聯網上數據的讀寫,網絡操作的速度可能比本地磁盤I/O更慢。因此,如不加特殊處理,也極可能成為系統瓶頸。
  CPU:對計算資源要求較高的應用,由於其長時間、不間斷地大量占用CPU資源,那麼對CPU的爭奪將導致性能問題。如科學計算、3D渲染等對CPU需求旺盛的應用。
  異常:對Java應用來說,異常的捕獲和處理是非常消耗資源的。如果程序高頻蒸腳桶率地進行異常處理,則整體性能便會有明顯下降。
  數據庫:大部分應用程序都離不開數據庫,而海量數據的讀寫操作可能是相當費時的。而應用程序可能需要等待數據庫操作完成或者返回請求的結果集,那麼緩慢的同步操作將成為系統瓶頸。
  鎖競爭:對高並發程序來說,如果存在激烈的鎖競爭,無疑是對性能極大的打擊。鎖競爭將會明顯增加線程上下文切換的開銷。而且,這些開銷都是與應用需求無關的系統開銷,白白占用寶貴的CPU資源,卻不帶來任何好處。
  內存:一般來說,只要應用程序設計合理,內存在讀寫速度上不太可能成為性能瓶頸。除非應用程序進行了高頻率的內存交換和掃描,但這些情況比較少見。使 內存制約系統性能的最可能的情況是內存大小不足。與磁盤相比,內存的大小似乎小的可憐,這意味著應用軟件只能盡可能將常用的核心數據讀入內存,這在一定程 度上降低了系統性能。

没有评论:

发表评论