`dd if=/dev/zero of=/dev/null`は実際に何を測定しますか?

`dd if=/dev/zero of=/dev/null`は実際に何を測定しますか?

私はハードドライブのスピードベンチマークを実行しており、何が起こっているのかを確認するために次のコマンドを試すことにしました。

dd if=/dev/zero of=/dev/null

キャンセル後、次のようになります。

(269 GB, 251 GiB) copied, 107.101 s, 2.5 GB/s

バイトサイズまたは数を変更すると、他の結果が表示されます。

dd if=/dev/zero of=/dev/null bs=4096 count=2000
(8.2 MB, 7.8 MiB) copied, 0.00134319 s, 6.1 GB/s

dd if=/dev/zero of=/dev/null bs=16384 count=2000
(33 MB, 31 MiB) copied, 0.00305674 s, 10.7 GB/s

実際のドライブを読み書きしないので、ここで実際に何を測定していますか? CPUはどのくらい速くゼロを生成して仮想ゴミ箱に移動しますか?これは実際に私にとって非常に遅いようです。

RAMに触れますか?マザーボードバスは動作しますか?

このテストには実用的なベンチマークアプリケーションがあります(たとえば、複数世代のプロセッサの比較)。

物理ディスクが(理論的に)無限に高速ですが、ここでの結果はシステムが達成できる最速のI / Oですか?

実際に測定されるものは何ですかdd if=/dev/zero of=/dev/null

答え1

これ確かにハードドライブをベンチマークしますが、CPUスレッドは1つだけを使用します(ddコマンドはシングルスレッドプロセスであるため)。

あなたがやっていることは、基本的にプロセッサにできるだけ早くブラックホールにできるだけ多くのゼロを送信するように要求することです。

マイコンピュータで同じ操作を実行すると、次の結果が表示されます。

dd if=/dev/zero of=/dev/null bs=16384 count=2000
2000+0 records in
2000+0 records out
32768000 bytes (33 MB, 31 MiB) copied, 0,018317 s, 1,8 GB/s

簡単に言えば、あなたのCPUは私のものよりも優れています;-)

Intel(R)コア(TM) i5-2410M CPU @ 2.30GHz

答え2

頼む

実際に測定されるものは何ですかdd if=/dev/zero of=/dev/null

オペレーティングシステムが512バイトの0ブロックを読み書きする速度を測定します。このような小さなブロックを読むことは効率的ではないので、より大きなブロックサイズに対してより良いスループットを得ることができる。

Linuxベースのシステムで実際に使用するには、代わりにcat使用するのがddはるかcatに簡単で、最適化されたものよりも遅くなることはほとんどありません。dd

関連情報