为什么 dd 在块大小非常小和非常大的情况下复制速度会变慢?

为什么 dd 在块大小非常小和非常大的情况下复制速度会变慢?

我意识到,如果我使用非常小的块大小,dd复制速度会更慢,但如果我使用非常大的块大小,复制速度也会很慢。我发现 1M 是最佳的。

为什么是这样?

答案1

您的问题的答案取决于您使用的设备类型,以及文件系统的设置(如果您正在写入文件,而不是设备/分区本身)。

闪存

闪存(USB 驱动器和 SSD)具有硬件扇区,如果不更改整个扇区就无法修改这些扇区,因此更改一个位会导致读取整个扇区、更改该位并再次重写该扇区。如果您必须对扇区中的每个位都执行此操作,这可能比一次写入一个扇区花费更长的时间(实际上,这可能有点不同,因为设备有自己的缓冲区来收集数据,然后才实际写入扇区)。

硬盘驱动器

使用硬盘时,最佳的块大小取决于硬件和软件中使用的实际缓冲区大小。但就我的想法而言,gparted 使用的块大小在硬盘上并不像在闪存设备上那么重要。

我不是存储设备和文件系统驱动程序以及不同 unix 内核中的驱动程序如何工作的专家,所以如果我说错了,请纠正我。

答案2

可能与您正在复制/写入的磁盘上的块大小有关。块大小/缓冲区大小/预读设置都会产生影响,尤其是对顺序读取/写入。如果您使用较小的块大小,驱动器每次访问将只读取 x 量的数据,然后再将其传递给下一个进程。使 x 更大 x->X 允许在一次读取中提取更多数据。您看到的“最佳点”可能最适合您的硬件和操作系统。

相关内容