私はいくつかのテストを行い、いくつかの結果を得ました。テストは 100Mbps および 1Gbps NIC で実行されました。ソース マシンは Win2K3 サーバー (SATA) で、ターゲット マシンは Win2k3 サーバー (RAID 5) です。
私は3つのテストを実行しました:
1) Network Reader -> このプログラムは、ネットワーク経由でファイルを読み取るだけです。このプログラムの目的は、最大 n/w 読み取り速度を見つけることです。CreateFile と ReadFile を使用して、バッファリングされていない読み取りを実行しています。
2) Disk Writer -> このプログラムは、データを書き込むことによって RAID 5 の速度をベンチマークします。NON BUFFERED 書き込みは、CreateFile と WriteFile を使用して実行されます。
3) Blitz Copy -> このプログラムはファイルコピーエンジンです。ネットワーク経由でファイルをコピーします。このプログラムのロジックについては、最初の質問で説明しました。NO_BUFFERING Reads & Writes で同期 I/O を使用しています。使用される API は、CreateFile、ReadFile、および WriteFile です。
以下に結果を示します。
ネットワークリーダー:-
100Mbps NIC
チャンク サイズ 8 KB で 768 MB を読み取るのに 148344 ミリ秒かかりました。
チャンク サイズ 64 KB で 768 MB を読み取るのに 89359 ミリ秒かかりました
チャンク サイズ 128 KB で 768 MB を読み取るのに 82625 ミリ秒かかりました
チャンク サイズ 256 KB で 768 MB を読み取るのに 79594 ミリ秒かかりました
チャンク サイズ 512 KB で 768 MB を読み取るのに 78687 ミリ秒かかりました
チャンク サイズ 1024 KB で 768 MB を読み取るのに 79078 ミリ秒かかりました
チャンク サイズ 2048 KB で 768 MB を読み取るのに 78594 ミリ秒かかりました
チャンク サイズ 4096 KB で 768 MB を読み取るのに 78406 ミリ秒かかりました
チャンク サイズ 8192 KB で 768 MB を読み取るのに 78281 ミリ秒かかりました
1Gbps NIC
チャンク サイズ 8 KB で 5120 MB (5 GB) を読み取るのに 206203 ミリ秒かかりました
チャンク サイズ 64 KB で 5120 MB を読み取るのに 77860 ミリ秒かかりました
チャンク サイズ 128 KB で 5120 MB を読み取るのに 74531 ミリ秒かかりました
チャンク サイズ 256 KB で 5120 MB を読み取るのに 68656 ミリ秒かかりました
チャンク サイズ 512 KB で 5120 MB を読み取るのに 64922 ミリ秒かかりました
チャンク サイズ 1024 KB で 5120 MB を読み取るのに 66312 ミリ秒かかりました
チャンク サイズ 2048 KB で 5120 MB を読み取るのに 68688 ミリ秒かかりました
チャンク サイズ 4096 KB で 5120 MB を読み取るのに 64922 ミリ秒かかりました
チャンク サイズ 8192 KB で 5120 MB を読み取るのに 66047 ミリ秒かかりました
ディスクライター:-
NO_BUFFERING と WRITE_THROUGH を使用して RAID 5 で実行される書き込み
チャンク サイズ 4MB の 2048MB (2GB) のデータの書き込みには 68328ms かかりました。
チャンク サイズ 8MB の 2048MB のデータの書き込みには 55985ms かかりました。
チャンク サイズ 16MB で 2048MB のデータを書き込むには 49569ms かかりました。
チャンク サイズ 32MB の 2048MB のデータの書き込みには 47281ms かかりました。
NO_BUFFERING のみを使用して RAID 5 で実行される書き込み
チャンク サイズ 4MB の 2048MB (2GB) のデータを書き込むには、57484ms かかりました。
チャンク サイズ 8MB の 2048MB のデータの書き込みには 52594ms かかりました。
チャンク サイズ 16MB で 2048MB のデータを書き込むには 49125ms かかりました。
チャンク サイズ 32MB の 2048MB のデータの書き込みには 46360ms かかりました。
チャンク サイズが減少するにつれて、書き込みパフォーマンスは直線的に低下します。また、WRITE_THROUGH フラグによってパフォーマンスが低下します
ブリッツコピー:-
1 Gbps NIC、NO_BUFFERING で 60 GB のファイルをコピー
コピーの完了にかかった時間: 2236735 ミリ秒。つまり、37.2 分です。速度は〜97 GB /あたりです。
100 Mbps NIC、NO_BUFFERING で 60 GB のファイルをコピー
コピーの完了にかかった時間: 7337219 ミリ秒。つまり、122分です。速度は~30GB/あたり。
NO_BUFFERING で Async-IO を使用する Jeffrey Ritcher による 10-FileCopy プログラムを使用してみました。でも、結果はイマイチでした。その理由は、チャンクサイズが 256 KB である可能性があると思います... RAID 5 での 256 KB の書き込みは非常に遅いです。
ロボコピーとの比較:
100 Mbps NIC : Blitz Copy と robocopy は、1 時間あたり ~30 GB で実行されます。
1 GBps NIC : Blitz Copy は 1 時間あたり最大 97 GB で、robocopy は 1 時間あたり最大 50 GB です。