dd块大小优化?

时间:2010-05-07 08:57:43

标签: linux dd

很长一段时间以来,我一直认为bs的{​​{1}}和count参数仅仅是为了方便人们;因为dd只是将它们相乘并使用字节值。一个月前,当我为母亲安装Ubuntu时,我缩小了右边的分区(不要这样做,需要年龄 )并看到{{1}计算'最佳块大小'。

我的问题:适用于dd适用的最佳“块大小”的相同想法是否适用?如果是这样,是否存在最强烈适用的特定情况?我怎样才能使用块大小?

1 个答案:

答案 0 :(得分:3)

关于最佳“块大小”的相同想法是否适用于dd apply?

我是这么认为的。考虑一个4kb的缓冲区。如果文件系统也有4k块(在较新的闪存盘上很常见),它可以通过简单的mmap操作填充。如果一个流填充缓冲区,然后必须写入缓冲区,则阻止输入流直到刷新缓冲区。这是使用多个缓冲区的原因。另一方面,我假设在写入输出之前必须首先填充单个缓冲区。因此,即使已经有一些数据可用,缓冲区也必须保留在内存中。如果你使用1Gig缓冲区(或块大小),这也不是唯一的。

我刚看了一下gparted中的缓冲区大小,看起来它们只是在128kb和256kb之间切换(可能更复杂),看起来他们想要制作大多数系统中的大多数缓存。如果磁盘高速缓存为2MB,那么以该大小的块传输数据可能是有意义的,如果没有使用mmap的io,这些块甚至可能适合CPU高速缓存。

如果是这样,是否存在最强烈适用的特定情况?

如果可以按块读取和写入数据,则传输大量数据的所有操作。

如何使用块大小对我有利?

通过测试哪一个是你禁食来计算它。就这么简单并且给出上面的解释,你可能会有一个良好的开端,大约256k作为块大小。或者向dd:)添加autobufsize选项。