Windows Server 2008 R2網(wǎng)站服務(wù)性能對比
WebBench是針對服務(wù)器作為WebServer時的性能進行測試,我們在被測服務(wù)器上安裝了IIS組件,以提供測試所需的Web服務(wù)。在測試中我們使用了網(wǎng)絡(luò)實驗室中的60臺客戶端,配置了120個測試引擎,分別使用了WebBench5.0內(nèi)置的動態(tài)CGI以及靜態(tài)頁面腳本對服務(wù)器進行了測試。
網(wǎng)絡(luò)實驗室控制臺
靜態(tài)測試是由客戶端讀取預(yù)先放置在服務(wù)器WebServer下的Web頁面(wbtree),這項測試主要考察的是服務(wù)器磁盤系統(tǒng)以及網(wǎng)絡(luò)連接性能。我們使用了實驗室中的56臺客戶端,配合Static_mt.tst多線程靜態(tài)腳本測試向被測服務(wù)器發(fā)送請求。
動態(tài)測試偏重于對服務(wù)器CPU子系統(tǒng)的性能測試,它對于Web服務(wù)器提供了足夠的負載。我們將一個C語言編寫的CGI源文件Simcigi.c編譯為Simcgi.exe,并將其作為動態(tài)測試中的CGI腳本。在測試過程中,每臺安裝了WebBench客戶端軟件的PC,會在300秒的時間內(nèi)持續(xù)向服務(wù)器發(fā)送CGI請求,而控制臺會紀錄并匯總服務(wù)器所響應(yīng)CGI請求的數(shù)據(jù)。CGI測試的成績高低,主要取決于服務(wù)器處理器子系統(tǒng)性能的優(yōu)劣。處理器子系統(tǒng)包括CPU、內(nèi)存以及內(nèi)存控制器,CPU頻率、緩存以及內(nèi)存容量大小和內(nèi)存帶寬,都會影響該項成績。
我們采用了評測中心的一臺DELLPE2900III服務(wù)器,它配置了雙路Intel45nmXeonE5430處理器,頻率為2.66GHz,并能支持SSE4.1指令集。服務(wù)器還使用了Intel5000X芯片組,提供24MB的SnoopFilter緩存,這可以提升高負荷時的內(nèi)存/處理器性能。為了避免磁盤子系統(tǒng)形成瓶頸,我們使用了8塊15000RPM的Cheetah15K.5通過一塊PCIex8接口的LSIMegaRAIDSAS8408E來組建了一個RAID0陣列。它可以提供足夠的帶寬。
***,網(wǎng)絡(luò)子系統(tǒng)使用的是DELLPE2900III板載的兩塊BroadcomBCM5708C千兆網(wǎng)卡,并使用了Broadcom的***驅(qū)動12.26.02并使用BroadcomBACS3.0組建了一個網(wǎng)卡Team。BCM5708C可謂是Broadcom一個里程碑式的千兆網(wǎng)卡產(chǎn)品,支持達8個隊列的RSS接收方縮放隊列,可以將網(wǎng)絡(luò)負載分配到8個處理器核心上并行處理,充分利用多核心處理器并提升網(wǎng)絡(luò)吞吐量。
兩代操作系統(tǒng)攜帶的IIS(InternetInformationServer)版本不同,2008帶的是IIS7.0,而2008R2帶的是IIS7.5。2003攜帶的是IIS6.0。
在結(jié)果上,我們發(fā)現(xiàn)WindowsServer2008R2/IIS7.5的動態(tài)頁面性能要比WindowsServer2008/IIS7.0高一點,***達到了5724Rps,而2008是5181,2008R2的峰值大概高了10%左右。靜態(tài)頁面的性能表現(xiàn)因為結(jié)果很奇怪還在調(diào)試中(可能和驅(qū)動有關(guān))。
從原因上來說,筆者覺得IIS的關(guān)系不是很大,造成提升的因素應(yīng)該和NetBench中一樣,最主要的是兩個方面:系統(tǒng)內(nèi)核和網(wǎng)絡(luò)子系統(tǒng),WindowsServer2003的中斷處理只能在***個物理CPU核心上進行,這個核心很快就成為了具有大量IO(因而具有大量中斷)的服務(wù)器中的瓶頸。而到了WindowsServer2008,中斷處理(ISR和DPC)都可以發(fā)生在多個CPU核心上。而WindowsServer2008R2對DPC的處理又做了改進。關(guān)于內(nèi)核上的改進可以參閱這里:
至于網(wǎng)絡(luò)子系統(tǒng)的改進,每一代Windows都會改進其NDIS(NetworkDriverInterfaceSpecification,即網(wǎng)絡(luò)驅(qū)動接口規(guī)范),WindowsServer2003是5.2,2008是6.10,而2008R2是6.20。相比NDIS5.x/6.0,WindowsServer2008的NDIS6.1對RSS(接收方擴展)和MSI-X(擴展消息告知中斷)的支持更好,并且支持數(shù)據(jù)包的頭和數(shù)據(jù)獨立處理。WindowsServer2008R2的NDIS6.20對RSS作了進一步的改進。不過,我們在2008/2008R2測試下使用的驅(qū)動程序都是基于NDIS6.0架構(gòu),因此最終結(jié)果上來看,兩個操作系統(tǒng)的差別不算太大。