web-dev-qa-db-ja.com

大きなファイルの場合、内部ディスク間の転送が遅くなります

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を実行しているので、これはディスクパフォ​​ーマンスの特に有用な測定ではないことを知っていますが、他のテストと一貫したパフォーマンスです。

いくつか質問があります。

  • ファイルが大きくなると、転送速度が低下する原因は何ですか?増えてはいけませんか?
  • この種のセットアップでは、どのくらいの速度が期待できますか?
  • IO(from timereal --sys)を(おそらく)待機するのに費やした時間は、私には疑わしいほど長いようです。
2
Shaddi

小さなファイルはページキャッシュに収まるため、ディスクにデータが保存される前にテストが終了します。 conv = fsyncオプションをddに追加してみてください。

1 GBのファイルの場合、ライトバックのいくつかの副作用が発生し、ディスクが処理できるはずのスループットよりもスループットが低下している可能性があります。 ddオプションiflag = directおよびoflag = directを試して、ページキャッシュをバイパスし、これが結果にどのように影響するかを確認できます。

1
janneb

ファイルキャッシュの効果が見られる場合があります。 iflagまたはoflagをnocacheに設定して再テストできます。これにより、バッファ間の速度ではなく、メディアベースの生の速度が表示されます。

0
Marcin