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