質問: nvme ssdでddが非常に遅いのはなぜですか? 私は最近 このビデオ を見ました、そしてその中で、著者はddコマンドを使用するときramディスクはhdd/ssdよりはるかに速いと説明しています。これが事実である理由を理解しています。しかし、私が理解していないのは、彼のサンプルコマンドdd if=/dev/zero of=test.iso bs=1m count=8000 16gbのram、12コアのryzen 3600x cpu、最大5gb/sの書き込み速度のnvme ssdを搭載したシステム。ramは常に高速になると思いますが、これは非常に遅いので、ここに何か他のものがあるはずです。彼がddコマンドを使用していた方法ですか?i ddの内部を知らないが、これはシステムがパフォーマンスを制限している状況なのか、それともコマンドが誤って使用されたのか?注:まったく同じコマンドを2回続けて実行した後、2回目の書き込みは1.4gb /秒ではるかに高速でしたが、これで混乱が解消されるわけではありません。
回答: ssdなどのnandフラッシュメディアには最小ブロック消去サイズがあります。つまり、小さいブロックサイズでそれらのデータをddした場合、ssdコントローラーはブロック内の位置に書き込むためにブロックを数回消去する必要があります。最小ブロック消去サイズが4mの場合、1mは、ブロックを必要以上に4回書き換える必要があることを意味します。 ssdは同じ4mブロックを4回消去する必要があります。同じddコマンドを2回目に実行したときに速度が大幅に向上するという事実は、findコマンドを繰り返し実行した場合と同様に、カーネル、ドライバー、コントローラーによるキャッシュと内部最適化によって説明できます。詳細については excellent answer @ greg-kennedyによる 最小消去ブロックサイズを見つけるためのスクリプト を参照してください。これは、最適化のためにddsブロックサイズ値として使用する必要がありますパフォーマンス。場合によっては、デバイスの仕様でも、または/sys/class/mtd/mtdx/erasesize、個々のデバイスによって異なります。