RWテストを実行するときにddコマンドが実際にどのように見えるかについての例

RWテストを実行するときにddコマンドが実際にどのように見えるかについての例

私は次の2つのテストを行っています。

#1
dd if=/dev/zero of=./testfile1 bs=512M count=1 conv=fsync

そして

#2
dd if=/dev/zero of=./testfile2 bs=1M count=512 conv=fsync

何を言うべきですか...:

#1はコピー(書き込み実行)を意味します。1大きなファイルサイズ512Mそして

#2は多くの小さなファイルをコピーすることを意味します。(512ファイル)各ファイルのサイズは100万

答え1

いいえ、そう言うことはできません。ddコピーされるのはファイルではなく単一のファイルの内容であり、これらの操作は非常に異なり、パフォーマンスの点では比較できません。

答え2

いいえ。

#1は、ファイルを1つの大きな塊にコピーすることを意味します。

#2は、ファイルを複数の小さな塊にコピーすることを意味します。

パフォーマンスに3つの影響があると思います。

#1 ファイルを読み取れるように、オペレーティング・システムに 512M のメモリーを確保してもらいます。これにより作業が遅くなります。 (/ dev / zeroを使用してください。可能OSが実際に割り当てる必要のない需要ゼロページを生成することを許可すると、後で速度が遅くなる可能性があります。

#1 常にオペレーティングシステムに512Mの出力ディスクを事前に割り当てる必要があることを伝えます(書き込みは一度だけ行うため)。オペレーティングシステムとファイルシステムが大規模な割り当てを実行できる場合は、作業が速くなる可能性があります。良い実装は、オペレーティングddシステムがこれを知ることができると仮定し、書き込みを実行する前にオペレーティングシステムに通知することができます。ファイルシステムが大規模な割り当てが可能であると仮定すると、#1の速度が少し速くなる可能性があります。生デバイスに書き込む場合は適用されません。

#2は512の読み取り要求と512の書き込み要求を発行しました。カーネルのオン/オフ、パラメータの確認に時間がかかります。これに対する影響を確認するには、バッファサイズをさらに小さくします(おそらく4kまたは16k - しかし、小さすぎると他の重大なパフォーマンスの影響を受け始めます)。

答え3

いいえ、そう言うことはできません。 ddはファイルをコピーせずに個々のファイルの内容をコピーします。

  1. testfile1512MBという大容量ファイルを作成しています。このファイルのデータは/dev/zero(提供されたnullバイト)から生成されます。

  2. ddコマンドはddという単一のファイルを生成しtestfile2、コマンドが繰り返されるたびにそれを上書きします。このbs=1M count=512オプションは、コマンドがデータを1MBチャンクで作成し、このプロセスを512回繰り返すことを指定します。コマンドが実行されるたびに、新しい一連のヌルバイト(0)が作成され、/dev/zeroそれをファイルに書き込んでその内容を効果的に上書きします。

目的conv=fsyncは、データの整合性と耐久性を確保することです。これにより、データが記憶媒体に完全に書き込まれることが保証され、停電やシステムのクラッシュが発生した場合のデータ損失や破損のリスクが軽減されます。同期操作は、コマンドの実行が完了する前に保留中のすべての書き込みがストレージ装置にコミットされるようにします。

インクルードを使用すると、コマンドが完了するまで書き込んだconv=fsyncデータがディスクに確実に保存されます。ddこれは、データが正常に記録され、後続の操作に使用可能であることを確認する場合に重要です。

関連情報