Posted on 2012-06-20 14:42
天才 閱讀(1132)
評論(0) 編輯 收藏
造成服務器過載的根本原因是高優先級處理階段對CPU的不公平搶占。所以,如果限制高優先級處理階段對CPU的占用率,或者限制處理高優先級的CPU個數,都可以減輕或者消除收包活鎖現象。具體的可以采用以下的方法:
方法一、采用輪詢機制
為了減少中斷對系統性能的影響,在負載正常的情況下采用“下半處理”的方法就非常有效,而在高負荷情況下,采用這個方法仍然會造成活鎖現象,這時可以采用輪詢機制。雖然這個方法在負載正常的情況下會造成資源的浪費和響應速度降低,但在網絡數據頻繁到達服務器時就要比中斷驅動技術有效的多。
方法二、減低中斷的頻率
這里主要有兩種方法:批中斷和暫時關閉中斷。批中斷可以在超載時有效的抑制活鎖現象,但對服務器的性能沒有什么根本性的改進;當系統出現接收活鎖跡象時,可以采用暫時關閉中斷的方法來緩和系統的負擔,當系統緩存再次可用時可以再打開中斷,但這種方法在接收緩存不夠大的情況下會造成數據包丟失。
方法三、減少上下文切換
這種方法不管服務器在什么情況下對性能改善都很有效,這時可以采用引入核心級(kerne1—leve1)或硬件級數據流的方法來達到這個目的。核心級數據流是將數據從源通過系統總線進行轉發而不需要使數據經過應用程序進程,這個過程中因為數據在內存中,因此需要CPU操作數據。
硬件級數據流則是將數據從源通過私有數據總線或是雖等DMA通過系統總線進行轉發而不需要使數據經過應用程序進程,這個過程不需要CPU操作數據。這樣在數據傳輸過程中不需要用戶線程的介入,減少了數據被拷貝的次數,減少了上下文切換的開銷。
原文來源:http://www.idcbest.com/server