我做了一些測試並得到了一些結果。 測試是在100Mbps的& 1Gbps網卡上進行的。源機器是Win2K3服務器(SATA),目標機器是Win2k3服務器(RAID 5)。
我跑了3次試驗:
1)網絡讀者 - >這個程序在網絡上只是讀取文件。該程序的目的是找到最大n/w讀取速度。我正在執行使用CreateFile的非緩衝讀取& ReadFile。
2)Disk Writer - >該程序通過寫入數據來衡量RAID 5的速度。非緩衝寫入使用CreateFile & WriteFile執行。
3)Blitz複製 - >該程序是文件複製引擎。它通過網絡複製文件。在最初的問題中討論了這個程序的邏輯。我正在使用帶NO_BUFFERING的同步I/O讀取&寫入。使用的API是CreateFile,ReadFile & WriteFile。
下面是結果:
網絡的讀者: -
百兆網卡
花了148344毫秒讀取768 MB與塊大小8 KB。
注意到89359毫秒讀取768 MB與塊大小64 KB
注意到82625毫秒讀取768 MB與塊大小128 KB
注意到79594毫秒讀取768 MB與塊大小256 KB
花了78687毫秒讀取768 MB與塊大小512 KB
花了79078毫秒讀取768 MB與塊大小爲1024 KB
花了78594毫秒讀取768 MB與塊大小2048 KB
花了78406毫秒讀取768 MB與塊大小4096 KB
花了78281毫秒讀取768 MB與塊大小8192 KB
1 Gbps的NIC
注意到206203毫秒讀取5120 MB(5GB)與塊大小8 KB
注意到77860毫秒讀取5120 MB與塊大小64 KB
花費74531毫秒讀取5120 MB的塊大小128 KB
花費68656 ms讀取塊大小爲256 KB的5120 MB
花了64922毫秒讀取5120 MB與塊大小爲512 KB
花了66312毫秒讀取5120 MB與塊大小爲1024 KB
花了68688毫秒讀取5120 MB與塊大小2048 KB
花了64922毫秒讀取5120 MB與塊大小4096 KB
花了66047毫秒讀取5120 MB與塊大小8192 KB
DISK編劇: - 隨着NO_BUFFERING & WRITE_THROUGH
寫作2048MB對RAID 5進行
寫(2GB)大小爲4MB的數據佔用了68328ms。
寫入塊大小爲8MB的2048MB數據花了55985ms。
寫入塊大小爲16MB的2048MB數據需要49569ms。
寫入塊大小爲32MB的2048MB數據需要47281ms。
寫在RAID 5進行與僅塊大小爲4MB NO_BUFFERING
數據寫入2048MB(2GB)把57484ms。與塊大小8MB的數據
寫作2048MB了52594ms。
寫入塊大小爲16MB的2048MB數據花費了49125ms。
寫入塊大小爲32MB的2048MB數據需要46360ms。
隨着塊大小的減小,寫入性能線性下降。而WRITE_THROUGH標誌引入了一些性能命中
BLITZ COPY: -
1 Gbps的NIC,複製60 GB的文件與NO_BUFFERING
拍攝時間才能完成副本:2236735毫秒。即37.2分鐘。 速度約爲97 GB /每個。
百兆網卡,複製60 GB的文件與NO_BUFFERING
拍攝時間才能完成副本:7337219毫秒。即,122分鐘。 速度約爲30 GB /每個。
我嘗試使用Jeffrey Ritcher的10-FileCopy程序,它使用Async-IO和NO_BUFFERING。但是,結果很差。我想原因可能是塊大小爲256 KB ...在RAID 5上寫入256 KB的速度非常慢。
比較ROBOCOPY:
百兆網卡:閃電戰複製和ROBOCOPY執行@〜每小時30 GB。
1 GBps網卡:閃電覆制每小時@ @ 97 GB,而robocopy @〜每小時50 GB。
您可能想要發佈一些代碼,將其轉化爲編程問題;否則,它很可能會移到serverfault.com。 – RickNZ 2010-01-08 05:51:56
等待,每秒44MB?這不是你現在應該爲單個磁盤獲得的持續吞吐量嗎? – 2010-01-08 05:56:17
@Pascal:RAID 5沒有針對寫入速度進行優化。我很驚訝你甚至可以達到44MB/s。我預計會降低。 – jalf 2010-01-08 22:52:10