if=/dev/zeroを使う

if=/dev/zeroを使う

アリックスボード私はインストールしましたDebian4アリックス(押出)。しばらく使ってみた結果、このボードの書き込み性能がかなり低いことがわかりました。

次のテストを実行しました。

dd count=100 bs=1M if=/dev/urandom of=/var/www/cgrid/test

これにより、次のような結果が出ました。

100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 328.903 s, 319 kB/s

これは、オペレーティングシステムがインストールされているコンパクトフラッシュカードまたはフラッシュドライブでテストを実行したときに得られる速度と同じです。 Linuxデスクトップコンピュータでフラッシュドライブのパフォーマンスをテストしたところ、同じテストで約15.3MB / sが得られました。

アリックスボードの読み取り速度は約9MB / sです。 (使用テストhdparm -t

私が受けている遅い書き込み速度がオペレーティングシステムの結果であるか(コンパクトフラッシュカードから直接実行されず、仮想ディスクで実行されるため)、または組み込みのハードウェアソリューションが非常に遅いかどうか疑問に思います。

答え1

私はこのマザーボードがハードウェアの観点からデスクトップよりも遅いと確信しています。しかし、ウランダムは状況をさらに悪化させる。

このマザーボードは、2〜3GHzデスクトップCPUの代わりに500MHz CPUを使用します。これにより、if=/dev/urandomシステムがどれだけ早く処理できるかをテストすることがより重要になりますurandom。 I/OではなくCPU性能を比較しています。

また、マザーボードに256M RAMしかない場合、100M RAMディスクファイルを作成すると、オペレーティングシステムがスワップを開始できます。これが発生すると、テスト結果に大きな影響を与えます。たぶん5000万のファイルでテストできます。

if=/dev/zeroを使う

を使用しないでくださいif=/dev/urandom。このテストのコストは非常に高いです。代わりにif=/dev/zero

テスト1 - ディスクへの100M書き込み

以下は、やはり100Mを使う仮想マシンでのテスト結果です。

if=/dev/zero

john@U64D211:~$ time dd count=100 bs=1M if=/dev/zero of=test
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 0.493612 s, 212 MB/s

real    0m0.540s
user    0m0.020s
sys 0m0.516s

if=/dev/urandom

john@U64D211:~$ rm test
john@U64D211:~$ time dd count=100 bs=1M if=/dev/urandom of=test
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 10.8723 s, 9.6 MB/s

real    0m10.909s
user    0m0.004s
sys 0m10.893s
john@U64D211:~$ 

テスト2 - / dev / nullに100Mを書き込む

urandomがどれくらい高価であるかを示すために、ディスクに何も書き込まれないように/ dev / nullに書きます。

if=/dev/zero

john@U64D211:~$ time dd count=100 bs=1M if=/dev/zero of=/dev/null
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 0.0240906 s, 4.4 GB/s

real    0m0.061s
user    0m0.012s
sys 0m0.052s

if=/dev/urandom

john@U64D211:~$ time dd count=100 bs=1M if=/dev/urandom of=/dev/null
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 10.4979 s, 10.0 MB/s

real    0m10.555s
user    0m0.024s
sys 0m10.513s

したがって、 を書くとき、/dev/nullほぼ99%の時間がurandomシステムコールにかかります。

PS1:VMには4Gメモリがあります。

PS2:ファイルキャッシュはテスト結果にある程度影響を与える可能性がありますが、オプション間の違いが大きすぎてifキャッシュ要素を無視してもかまいません。とにかく、効果は両方のケースで機能するはずです。

PS3:平均的なテスト結果はありません。しかし、何度も実行してみましたが、結果は非常に似ていました。

関連情報