相关疑难解决方法(0)

“dd”中的“bs”选项真的能提高速度吗?

时不时地,我被告知要提高“dd”的速度,我应该仔细选择合适的“块大小”。

即使在这里,在 ServerFault 上,其他人也写道...最佳块大小取决于硬件...(iain)或“ ...完美的大小将取决于您的系统总线、硬盘驱动器控制器、特定驱动器本身,以及每个驱动程序......(克里斯 - s)

由于我的感觉有点不同(顺便说一句:我认为深度调整 bs 参数所需的时间远高于获得的增益,在节省时间方面,并且默认是合理的),今天我刚去了通过一些快速而肮脏的基准测试。

为了降低外部影响,我决定阅读:

  • 从外部 MMC 卡
  • 从内部分区

和:

  • 已卸载相关文件系统
  • 将输出发送到 /dev/null 以避免与“写入速度”相关的问题;
  • 避免 HDD 缓存的一些基本问题,至少在涉及 HDD 时。

在下表中,我报告了我的发现,读取了具有不同“bs”值的 1GB 数据(您可以在此消息的末尾找到原始数字):

在此处输入图片说明

基本上得出的结论是:

  • MMC:使用 bs=4(是的!4 字节),我达到了 12MB/s 的吞吐量。我从 bs=5 及以上得到的最大 14.2/14.3 的值并不那么遥远;

  • 硬盘:bs=10 我达到了 30 MB/s。肯定低于默认 bs=512 获得的 95.3 MB,但......也很重要。

此外,很明显,CPU 系统时间与 bs 值成反比(但这听起来很合理,因为 bs 越低,dd 生成的系统调用数量就越高)。

说了以上所有,现在的问题是:有人可以解释(内核黑客?)这种吞吐量所涉及的主要组件/系统是什么,以及是否真的值得努力指定高于默认值的 bs?


MMC 案例 - 原始数字

bs=1M

root@iMac-Chiara:/tmp# time dd if=/dev/sdc of=/dev/null bs=1M count=1000
1000+0 …
Run Code Online (Sandbox Code Playgroud)

linux kernel dd disk-image

77
推荐指数
2
解决办法
14万
查看次数

如何确定 dd 命令的最佳字节大小

我知道做一个dd if=/dev/hda of=/dev/hdb深硬盘复制。我听说人们可以通过使用该bs选项增加一次读取和写入的字节数(默认值:512)来加快进程。

我的问题是:

什么决定了从硬盘驱动器复制的理想字节大小?

为什么这决定了理想的字节大小?

linux optimization hard-drive clone

24
推荐指数
1
解决办法
3万
查看次数

标签 统计

linux ×2

clone ×1

dd ×1

disk-image ×1

hard-drive ×1

kernel ×1

optimization ×1