linux - dd:如何计算最佳 block 大小?

在运行 dd 时如何计算最佳 block 大小?我对其进行了一些研究,但没有发现任何暗示如何实现这一点的信息。

我的印象是更大的 block 大小会导致更快的 dd...这是真的吗?

我即将 dd 两个相同的 500gb Hitachi HDD,在运行 Intel Core i3 和 4GB DDR3 1333mhz RAM 的机器上以 7200rpm 运行,所以我试图找出 block 大小利用。 (我将从闪存驱动器启动 Ubuntu 10.10 x86,并从中运行它。)

最佳答案

最佳 block 大小取决于各种因素,包括操作系统(及其版本)以及所涉及的各种硬件总线和磁盘。一些类 Unix 系统(包括 Linux 和至少一些 BSD 风格)在 struct stat 中定义了 st_blksize 成员,它给出了内核认为的最佳 block 大小:

#include <sys/stat.h>
#include <stdio.h>

int main(void)
{
    struct stat stats;

    if (!stat("/", &stats))
    {
        printf("%u\n", stats.st_blksize);
    }
}

最好的方法可能是进行实验:复制具有各种 block 大小和时间的千兆字节。 (记得在每次运行前清除内核缓冲区缓存:echo 3 >/proc/sys/vm/drop_caches)。

但是,根据经验,我发现足够大的 block 大小可以让 dd 做得很好,例如 64 KiB 和 1 MiB 之间的差异很小,与 4 KiB 和 64 KiB 相比。 (虽然,不可否认,我已经有一段时间没有这样做了。我现在默认使用一个兆字节,或者只是让 dd 选择大小。)

https://stackoverflow.com/questions/6161823/

相关文章:

python - 获取 MAC 地址

python - 减少matplotlib图中的左右边距

python - 尽管我调用了 pyplot.show(),但 matplotlib 没有显示我的情

linux - 如何在命令行中从脚本运行函数?

python - 从 Pandas 日期时间列中分别提取月份和年份

linux - Linux bash 中波浪号的含义(不是主目录)

linux - 附加到进程输出以供查看

python - 如何在 Python 中实现树?

c - 如何在 C 中与 Linux 一起使用共享内存

python - 根据数据类型获取 pandas 数据框列的列表