1.6GhzデュアルコアCPU、4GB RAM、および2x250GB 7200 SATAドライブ(3.0Gb/sと新規インストールから新しくフォーマットされたものの両方)を搭載したマシンでUbuntu Server 11.04(AMD64)を実行しています。 2つのドライブ間で比較的小さなファイル(〜100MB)を転送すると、300〜350MB /秒の範囲で予想よりも(優れた)転送速度が得られます。ただし、500MBのファイルを転送すると約50MB /秒になり、1GBのファイルを転送すると約25MB /秒になります。
この動作を示す、私が実行したいくつかのテストを次に示します。
/disk1 $ dd if=/dev/zero of=output-small.dat bs=1M count=128
bytes (134 MB) copied, 0.388619 s, 345 MB/s
/disk1 $ dd if=/dev/zero of=output-med.dat bs=1M count=500
524288000 bytes (524 MB) copied, 20.0151 s, 26.2 MB/s
/disk1 $ dd if=/dev/zero of=output-large.dat bs=1M count=1000
1048576000 bytes (1.0 GB) copied, 45.7304 s, 22.9 MB/s
/disk2 $ dd if=/dev/zero of=output-small.dat bs=1M count=128
134217728 bytes (134 MB) copied, 0.372266 s, 361 MB/s
/disk2 $ dd if=/dev/zero of=output-med.dat bs=1M count=500
524288000 bytes (524 MB) copied, 10.0856 s, 52.0 MB/s
/disk2 $ dd if=/dev/zero of=output-large.dat bs=1M count=1000
1048576000 bytes (1.0 GB) copied, 37.1851 s, 28.2 MB/s
$ time cp /disk1/output-small.dat /disk2/test-small.dat
real 0m0.532s
user 0m0.000s
sys 0m0.410s
$ time cp output-med.dat /playpen/test-med.dat
real 0m30.879s
user 0m0.010s
sys 0m3.740s
$ time cp /disk1/output-large.dat /disk2/test-large.dat
real 0m26.643s
user 0m0.010s
sys 0m3.390s
最後に、コマンドを実行するとpv < /disk1/output-large.dat > /disk2/test.dat
、最初は優れた転送速度が見られますが、その後、速度は1〜10MB /秒の範囲に低下し、定期的に(はるかに)速くジャンプします。私はpvを実行しているので、これはディスクパフォーマンスの特に有用な測定ではないことを知っていますが、他のテストと一貫したパフォーマンスです。
いくつか質問があります。
time
、real
--sys
)を(おそらく)待機するのに費やした時間は、私には疑わしいほど長いようです。小さなファイルはページキャッシュに収まるため、ディスクにデータが保存される前にテストが終了します。 conv = fsyncオプションをddに追加してみてください。
1 GBのファイルの場合、ライトバックのいくつかの副作用が発生し、ディスクが処理できるはずのスループットよりもスループットが低下している可能性があります。 ddオプションiflag = directおよびoflag = directを試して、ページキャッシュをバイパスし、これが結果にどのように影響するかを確認できます。
ファイルキャッシュの効果が見られる場合があります。 iflagまたはoflagをnocacheに設定して再テストできます。これにより、バッファ間の速度ではなく、メディアベースの生の速度が表示されます。