これらの2つのddコマンドの違いは何ですか?


23

同じ値に乗算する限り、値ddが異なる2つのコマンドの違いは何ですか?例えば:bscount

  1. dd if=/dev/random of=aa bs=1G count=2
  2. dd if=/dev/random of=aa bs=2G count=1

4
両方のコマンドには時間がかかります。乱数が必要な場合はurandomを使用してください。何かの高速入力が必要な場合はゼロを使用します
ニルス

回答:


26

最終結果に関する限り、彼らは同じことをします。違いは、ddデータの処理方法にあります。実際、両方の例はその点で非常に極端です。bsパラメーターはdd、出力する前にメモリにバッファリングするデータの量を示します。

したがって、本質的に、最初のコマンドは1GBの2つのチャンクで2GBを読み取ろとし、後者は1回で2GB全体を読み取ってからファイルに出力しようとaaます。


17

結果は同じになりますが、最初の場合ddは2つの1GBブロックを書き込み、2 番目の場合は2GBブロックを書き込みます。違いはdd、コピーしたブロックをメモリに保持することです。最初のケースでは1GBのRAM、2番目のケースでは2GBが必要です。

私の意見では、そのような大きなブロックを使用する必要はありません。いくつかのテストを行うことができますが、私の場合、はるかに小さいブロック(<1MB)でより高速になります


9

最初のものは1Gのメモリを占有し、入力ファイルからのデータでそれを満たし、2回出力します。

2番目のものは2Gのメモリを占有し、入力ファイルからのデータでそれを埋めて出力します。


2

使用されるブロックサイズは、ソースデバイスとターゲットデバイスの最適な速度設定と一致する必要があります。

LVデバイスをコピーしようとすると、違いが最もよくわかります。非常に小さなBSサイズを使用すると、不要な読み取りプロセスが中断されます。非常に大きなBSサイズを使用すると、書き込み中に長い待機時間が発生します。

標準LVは通常4 MBのチャンクで構成されるため、物理ディスクアクセスにも適したサイズです。これらにはbs = 4Mを使用します。

16Kまたは256Mを試してみてください-違いに注意してください-そしてコピー中にディスクインジケータを見てください...


小さいまたは大きいブロックサイズのペナルティは、カーネルによって実行されるキャッシュによって多少相殺されます。ミニベンチマークについてはこちらをご覧ください。
ジル「SO-悪であるのをやめる」

@Gilles私のテストの数字は覚えていませんが、あなたの数字よりもはるかに劇的でした。テストで使用した物理的なハードディスクセットアップはどれですか?私のものは、128 KBの5つのディスク(SAS 15k)でストライプ化されたハードウェアRAID 5上にありました。ストライプサイズ。
ニルス

SATAディスク、RAIDなし、そうでなければアイドル状態のマシン。正確な仕様を覚えていません。
ジル 'SO-悪であるのをやめる'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.