パフォーマンスに関してddコマンドをどのように解釈しますか?

パフォーマンスに関してddコマンドをどのように解釈しますか?

PowerPCで駆動されるさまざまなコアの性能を比較しようとしています。これは私のテストの一つです。

dd if=/dev/zero of=/dev/null bs=1024 count=1000000

カーネルバージョンの1つで見ました。

 8.595918 seconds, 113.6MB/s

他のカーネルバージョンでは、以下が必要です。

 8.182470 seconds, 119.3MB/s

私の問題は、私のテストがデフォルトでRAMから読み込み/ dev / nullに書き込むことです。システムの観点から何を説明できますか?ボトルネックが何であるかを説明できますか?データが十分でない場合、意味のある情報を取得するにはどうすればよいですか?

答え1

5%の差はノイズと見なすことができます。つまり、2 つのテスト結果に差があると結論付けることはできません。ddCPUを時々実行して使用することに加えて、プロセスもあり、両方のテストのための環境も同じではないことを忘れないでください。

テストプロセスのリアルタイム優先順位を指定してテストを数回繰り返すと、より良いデータが得られます。とにかくボトルネックはCPUとメモリアクセスです。 I/Oがありません。

答え2

システムの観点から何を説明できますか?

約115MB / sの速度で1024バイトのブロックddからデータをコピーすると考えることができます。それほど多くはありません。/dev/zero/dev/null

各ブロックddコピーには2つのシステムコール(1つはto read()、もう1つはto)が必要ですwrite()。これらのシステムコールはオーバーヘッドを引き起こし、コールあたり1024バイトという大きな影響を与える可能性があります。ブロックレートが小さすぎるため、システムがゼロブロックをどれだけ早く送信するかを測定できません。ただし、rawシステムコールのオーバーヘッドも測定しません。はい各呼び出しに対して処理される1024バイトとIO呼び出しに必要なブックが必要です。電話をかけるのと同じではありませんgetpid()

関連情報