時々、「dd」の速度を上げるには、適切な「ブロックサイズ」を慎重に選択する必要があると言われています。
ここでも、ServerFaultの上、他の誰かが書いた「という... ...最適なブロックサイズは、ハードウェアに依存している」(イアン)または「...完璧なサイズは、システム・バス、ハードドライブコントローラ、特定のドライブに依存しますそれ自体、およびそれらのそれぞれのドライバー... " (chris-s)
私の気持ちが少し違っていたので(ところで:bsパラメーターを深く調整するのに必要な時間は、時間節約の観点から、受け取ったゲインよりもはるかに長く、デフォルトは合理的だと思っていました)、今日私はちょうど行きましたいくつかの迅速で汚れたベンチマークを通じて。
外部の影響を減らすために、私は読むことにしました:
- 外部MMCカードから
- 内部パーティションから
そして:
- 関連するファイルシステムがアンマウントされている
- 「書き込み速度」に関連する問題を回避するために、出力を/ dev / nullに送信します。
- 少なくともHDDに関係する場合、HDDキャッシングのいくつかの基本的な問題を回避します。
次の表では、「bs」の値が異なる1GBのデータを読み取った結果を報告しました(このメッセージの最後に生の数値があります)。
基本的には次のようになりました:
MMC:bs = 4(yes!4バイト)で、スループットが12MB / sに達しました。bs = 5以上から得た最大14.2 / 14.3までのそれほど遠くない値。
HDD:bs = 10の場合、30 MB / sに達しました。デフォルトのbs = 512で得られた95.3 MBよりも確かに低いですが、...重要です。
また、CPUのsys-timeはbsの値に反比例することは非常に明らかでした(しかし、bsが低いほど、ddによって生成されるsys-callの数が多くなるので、これは妥当と思われます)。
上記のすべてを言った今、質問:誰かがそのようなスループットに関与する主要なコンポーネント/システムとは何か(カーネルハッカー?)を説明できますか、そしてデフォルトよりも高いbsを指定する努力が本当に価値があるかどうか?
MMCケース-生の数字
bs = 1M
root@iMac-Chiara:/tmp# time dd if=/dev/sdc of=/dev/null bs=1M count=1000
1000+0 record dentro
1000+0 record fuori
1048576000 byte (1,0 GB) copiati, 74,1239 s, 14,1 MB/s
real 1m14.126s
user 0m0.008s
sys 0m1.588s
bs = 1k
root@iMac-Chiara:/tmp# time dd if=/dev/sdc of=/dev/null bs=1k count=1000000
1000000+0 record dentro
1000000+0 record fuori
1024000000 byte (1,0 GB) copiati, 72,7795 s, 14,1 MB/s
real 1m12.782s
user 0m0.244s
sys 0m2.092s
bs = 512
root@iMac-Chiara:/tmp# time dd if=/dev/sdc of=/dev/null bs=512 count=2000000
2000000+0 record dentro
2000000+0 record fuori
1024000000 byte (1,0 GB) copiati, 72,867 s, 14,1 MB/s
real 1m12.869s
user 0m0.324s
sys 0m2.620s
bs = 10
root@iMac-Chiara:/tmp# time dd if=/dev/sdc of=/dev/null bs=10 count=100000000
100000000+0 record dentro
100000000+0 record fuori
1000000000 byte (1,0 GB) copiati, 70,1662 s, 14,3 MB/s
real 1m10.169s
user 0m6.272s
sys 0m28.712s
bs = 5
root@iMac-Chiara:/tmp# time dd if=/dev/sdc of=/dev/null bs=5 count=200000000
200000000+0 record dentro
200000000+0 record fuori
1000000000 byte (1,0 GB) copiati, 70,415 s, 14,2 MB/s
real 1m10.417s
user 0m11.604s
sys 0m55.984s
bs = 4
root@iMac-Chiara:/tmp# time dd if=/dev/sdc of=/dev/null bs=4 count=250000000
250000000+0 record dentro
250000000+0 record fuori
1000000000 byte (1,0 GB) copiati, 80,9114 s, 12,4 MB/s
real 1m20.914s
user 0m14.436s
sys 1m6.236s
bs = 2
root@iMac-Chiara:/tmp# time dd if=/dev/sdc of=/dev/null bs=2 count=500000000
500000000+0 record dentro
500000000+0 record fuori
1000000000 byte (1,0 GB) copiati, 161,974 s, 6,2 MB/s
real 2m41.976s
user 0m28.220s
sys 2m13.292s
bs = 1
root@iMac-Chiara:/tmp# time dd if=/dev/sdc of=/dev/null bs=1 count=1000000000
1000000000+0 record dentro
1000000000+0 record fuori
1000000000 byte (1,0 GB) copiati, 325,316 s, 3,1 MB/s
real 5m25.318s
user 0m56.212s
sys 4m28.176s
HDDケース-生番号
bs = 1
root@iMac-Chiara:/tmp# time dd if=/dev/sda3 of=/dev/null bs=1 count=1000000000
1000000000+0 record dentro
1000000000+0 record fuori
1000000000 byte (1,0 GB) copiati, 341,461 s, 2,9 MB/s
real 5m41.463s
user 0m56.000s
sys 4m44.340s
bs = 2
root@iMac-Chiara:/tmp# time dd if=/dev/sda3 of=/dev/null bs=2 count=500000000
500000000+0 record dentro
500000000+0 record fuori
1000000000 byte (1,0 GB) copiati, 164,072 s, 6,1 MB/s
real 2m44.074s
user 0m28.584s
sys 2m14.628s
bs = 4
root@iMac-Chiara:/tmp# time dd if=/dev/sda3 of=/dev/null bs=4 count=250000000
250000000+0 record dentro
250000000+0 record fuori
1000000000 byte (1,0 GB) copiati, 81,471 s, 12,3 MB/s
real 1m21.473s
user 0m14.824s
sys 1m6.416s
bs = 5
root@iMac-Chiara:/tmp# time dd if=/dev/sda3 of=/dev/null bs=5 count=200000000
200000000+0 record dentro
200000000+0 record fuori
1000000000 byte (1,0 GB) copiati, 66,0327 s, 15,1 MB/s
real 1m6.035s
user 0m11.176s
sys 0m54.668s
bs = 10
root@iMac-Chiara:/tmp# time dd if=/dev/sda3 of=/dev/null bs=10 count=100000000
100000000+0 record dentro
100000000+0 record fuori
1000000000 byte (1,0 GB) copiati, 33,4151 s, 29,9 MB/s
real 0m33.417s
user 0m5.692s
sys 0m27.624s
bs = 512(キャッシュを回避するために、読み取りをオフセットします)
root@iMac-Chiara:/tmp# time dd if=/dev/sda3 of=/dev/null bs=512 count=2000000 skip=6000000
2000000+0 record dentro
2000000+0 record fuori
1024000000 byte (1,0 GB) copiati, 10,7437 s, 95,3 MB/s
real 0m10.746s
user 0m0.360s
sys 0m2.428s
bs = 1k(読み取りをオフセットし、キャッシュを回避します)
root@iMac-Chiara:/tmp# time dd if=/dev/sda3 of=/dev/null bs=1k count=1000000 skip=6000000
1000000+0 record dentro
1000000+0 record fuori
1024000000 byte (1,0 GB) copiati, 10,6561 s, 96,1 MB/s
real 0m10.658s
user 0m0.164s
sys 0m1.772s
bs = 1k(読み取りをオフセットし、キャッシュを回避します)
root@iMac-Chiara:/tmp# time dd if=/dev/sda3 of=/dev/null bs=1M count=1000 skip=7000
1000+0 record dentro
1000+0 record fuori
1048576000 byte (1,0 GB) copiati, 10,7391 s, 97,6 MB/s
real 0m10.792s
user 0m0.008s
sys 0m1.144s
bs
速さの代わりに、単一の質問で15ダースのコードブロックに対してプロットサイズ。スペースが少なくてすみ、読みやすさが無限に速くなります。絵は本当にある thoursand言葉に値します。
bs=8k count=512K
か、bs=1M count=4K
私は2 65536過去の権力覚えていない
bs=auto
機能を備えてdd
いることです。