运行时如何计算最佳块大小dd
?我对此进行了一些研究,但没有发现任何建议如何实现这一点。
我的印象是更大的块大小会导致更快dd
... 这是真的?
我正要dd
两个相同的 500gb Hitachi HDD,在运行 Intel Core i3 和 4GB DDR3 1333mhz RAM 的盒子上以 7200rpm 运行,所以我试图找出要使用的块大小。 (我将从闪存驱动器启动 Ubuntu 10.10 x86,并从中运行它。)
最佳块大小取决于各种因素,包括操作系统(及其版本)以及涉及的各种硬件总线和磁盘。一些类 Unix 系统(包括 Linux 和至少某些 BSD 版本)定义了st_blksize
成员在struct stat
这给出了内核认为的最佳块大小:
#include <sys/stat.h>
#include <stdio.h>
int main(void)
{
struct stat stats;
if (!stat("/", &stats))
{
printf("%u\n", stats.st_blksize);
}
}
最好的方法可能是尝试:用不同的块大小和时间复制一千兆字节。 (请记住在每次运行之前清除内核缓冲区缓存:echo 3 > /proc/sys/vm/drop_caches
).
然而,根据经验,我发现足够大的块大小可以让dd
做得很好,并且与 4 KiB 和 64 KiB 相比,64 KiB 和 1 MiB 之间的差异很小。 (不过,不可否认,自从我这样做以来已经有一段时间了。我现在默认使用兆字节,或者只是让dd
选择尺寸。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)