扼殺伺服器效能的10條戒律(轉,接前文)

來源:互聯網
上載者:User
伺服器|效能 應該分配和釋放多個對象

你應該盡量避免過量分配記憶體,因為記憶體配置可能是代價高昂的。釋放記憶體塊可能更昂貴,因為大多數分配算符總是企圖串連臨近的已釋放的記憶體塊成為更大的塊。直到Windows NT? 4.0 service pack 4.0,在多執行緒中,系統堆通常都運行得很糟。堆被一個全域鎖保護,並且在多處理器系統上是不可擴充的。

不應該考慮使用處理器快取

大多數人都知道由虛擬記憶體子系統導致的hard 頁錯誤代價很高,最好避免。但是許多人認為其他記憶體存取方法沒有什麼區別。自從80486以後,這一觀點就不對了。現代的CPUs比RAM要快得多,RAM至少需要兩級記憶體緩衝 ,高速L1 緩衝能儲存8KB資料和8KB指令,而較慢的L2 緩衝能儲存幾百KB的資料和代碼,這些資料和代碼混合在一起。L1 緩衝中記憶體地區的一個引用需要一個刻度,L2 緩衝的引用需要4到7個刻度,而主記憶體的引用需要許多個處理器刻度。後一數字不久將會超過100個刻度。在許多方面,緩衝像一個小型的,高速的,虛擬記憶體系統。

至於和緩衝有關的基本記憶體單元不是位元組而是緩衝列。Pentium 緩衝列有32個位元組寬。Alpha 緩衝列有64個位元組寬。這意味著在L1 緩衝中只有512個slot給代碼和資料。如果多個資料一起使用(時間位置)而並不儲存在一起(空間位置),效能會很差。數組的空間位置很好,而相互串連的列表和其他基於指標的資料結構的位置往往很差。

把資料打包到同一個緩衝列中通常會有利於提高效能,但是它也會破壞多處理器系統的效能。記憶體子系統很難協調處理器間的緩衝。如果一個被所有處理器使用的唯讀資料,和一個由一個處理器使用並頻繁更新的資料共用一個緩衝 列,那麼緩衝將會花費很長時間更新這個緩衝列的拷貝。這個Ping-Pong高速遊戲通常被稱為"緩衝 sloshing"。如果唯讀資料在一個不同的緩衝 列中,就可以避免sloshing。

對代碼進行空間最佳化比進行速度最佳化效率更高。代碼越少,代碼所佔的頁也越少,這樣需要的回合設定和產生的頁錯誤也會更少,同時佔據的緩衝 列也會更少。然而,某些核心函數應該進行速度最佳化。可以利用profiler去識別這些函數。

決不要緩衝頻繁使用的資料。

軟體緩衝可以被各種應用程式使用。當一個計算代價很高時,你會儲存結果的一個拷貝。這是一個典型的時空折中方法:犧牲一些儲存空間以節省時間。如果做得好,這種方法可能非常有效。

你必須正確地進行緩衝。如果緩衝了錯誤資料,就會浪費儲存空間。如果緩衝得太多,其他動作可以使用的記憶體將會很少。如果緩衝得太少,效率又會很低,因為你必須重新計算被緩衝 遺漏的資料。如果將時間敏感性資料緩衝得時間過長,這些資料將會過時。一般,伺服器更關心的是速度而不是空間,所以他們要比案頭系統進行更多的緩衝。一定要定期去除不用的緩衝,否則將會有回合設定問題。

應該建立多個線程,越多越好。

調整伺服器中起作用的線程數目是很重要的。如果線程是I/O-bound的,將會花費很多時間用來等待I/O的完成-一個被阻塞的線程就是一個不做任何有用工作的線程。加入額外的線程可以增加通量,但是加入過多的線程將會降低伺服器的效能,因為上下文交換將會成為一個重大的overhead。上下文交換速度應該低的原因有三個:上下文交換是單純的overhead,對應用程式的工作沒有任何益處;上下文交換用盡了寶貴的刻度;最糟的是,上下文交換將處理器的緩衝填滿了沒用的資料,替換這些資料是代價高昂的。

有很多事情是依靠你的線程化結構的。每個用戶端一個線程是絕對不合適的。因為對於大量使用者端,它的擴充性不好。上下文交換變得難以忍受,Windows NT用盡了資源。線程池模型會工作得更好,在這種方法中一個工人線程池將處理一條請求列,因為Windows 2000提供了相應的APIs,如QueueUserWorkItem。



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。