圖2: 對于傳統(tǒng)的TPC1基準中規(guī)定的平均響應(yīng)時間小于100ms這個指標,Linux (XFS)比Windows 2003 Server (NTFS)的測試結(jié)果更優(yōu),前者可以實現(xiàn)更多的I/O請求次數(shù)。測試基于oblLoad v.1.0基準?!?BR>
通常情況下,在Linux和Windows下的兩條數(shù)據(jù)傳輸率測試曲線在讀數(shù)據(jù)塊大小達到64KB時匯合。我們的測試中,兩種操作系統(tǒng)下使用的都是LSI Logic Ultra320 SCSI控制器,當讀入的數(shù)據(jù)塊的大小為16KB時,Windows環(huán)境下的I/O傳輸量開始超過Linux。當讀入數(shù)據(jù)塊大小為64KB時,Windows 2003 Server下的數(shù)據(jù)傳輸量比Linux超出33%。重要的是,大多數(shù)程序使用的是8KB的數(shù)據(jù)塊的讀入尺寸。通常在Windows環(huán)境下,僅在使用諸如備份軟件或者內(nèi)部的數(shù)據(jù)庫時,才使用大的數(shù)據(jù)塊尺寸?!?BR> Windows環(huán)境下的性能更優(yōu)的原因歸功于Windows進行file I/O的工作。不同于Linux的捆綁請求的做法,Windows能夠響應(yīng)所有的請求,之后異步地等待它們所請求數(shù)據(jù)的返回。
這個概念可以通過oblDisk基準測試得到模擬,該軟件把文件分區(qū),使用單獨的線程來并行地讀入每個區(qū)的數(shù)據(jù)。當使用了4個線程時,Windows下的數(shù)據(jù)傳輸量一直等到數(shù)據(jù)塊大小超過32KB時,才超過Linux。
對于15K的Maxtor硬盤來說,一個重要的指標是其快速的3.2ms的尋道時間。在我們的oblLoad I/O 負載基準測試中,有這樣出色的結(jié)果,這個指標起了關(guān)鍵作用?!?BR> 通常這種測試是在事務(wù)處理環(huán)境中測量實現(xiàn)數(shù)據(jù)庫模式的I/O的請求的次數(shù)的,這對Linux來說并不適合,因為以往的Linux內(nèi)核并不專門支持異步I/O,而Windows則支持?!?BR>
在oblLoad基準測試中,后臺線程處理時發(fā)送的是自己的單獨的8KB大小的數(shù)據(jù)塊請求,這個方法模擬了存取關(guān)系數(shù)據(jù)庫的模式。這個過程持續(xù)到平均存取時間超過100ms,100ms是TPC1基準測試的門檻。oblLoad的測試結(jié)果可以表示為每秒總共的I/O次數(shù)同總共I/O相關(guān)進程的數(shù)量之間的關(guān)系,或者表示為響應(yīng)時間同每秒處理的I/O次數(shù)之間的關(guān)系。
隨著更多I/O處理線程的加入,系統(tǒng)完成更多I/O請求的能力取決于數(shù)據(jù)緩存大小和線程負載平衡能力?!?BR> 對于LSI Logic控制器,在SLES上,我們能夠發(fā)送出250個模擬用戶在線時的2,000多個IOPS,這個數(shù)字是我們的Ultra160 SCSI參考子系統(tǒng)的兩倍多。令人驚奇地是,這個數(shù)字也比Windows 2003每秒能夠處理的I/O次數(shù)多。盡管如此,Windows 2003 Server在這些測試中的結(jié)果更勝一籌,在Windows 2003中,我們測試結(jié)果表明:在少于8ms內(nèi),Windows可以處理更多的I/O次數(shù)。對于8ms的響應(yīng)時間, Windows 2003每秒處理的I/O次數(shù)要比Linux多40%。