dd if=/dev/zero of=/tmp/test.log count=100000000

dd if=/dev/zero of=/tmp/test.log count=100000000

without bs为什么使用 dd命令检查时磁盘写入差异如此之大with bs

dd if=/dev/zero of=/tmp/test.log count=100000000

100000000+0 records in
100000000+0 records out
51200000000 bytes (51 GB) copied, 289.564 s, 177 MB/s

dd if=/dev/zero of=/tmp/test1.log bs=1G count=50 oflag=dsync

50+0 records in
50+0 records out
53687091200 bytes (54 GB) copied, 150.427 s, 357 MB/s

dd if=/dev/zero of=/tmp/test2.log count=100000000

100000000+0 records in
100000000+0 records out
51200000000 bytes (51 GB) copied, 288.614 s, 177 MB/s

dd if = /dev/zero of = /tmp/test3.log bs = 1G count = 50 oflag = direct

50+0 records in
50+0 records out
53687091200 bytes (54 GB) copied, 109.774 s, 489 MB/s

我搜索了整个网页,但没有找到具体的例子,不过有一篇很好的文章这里但几乎没有什么好的警告。

答案1

如果没有该bs参数,dd则将使用设备的标准块大小,通常是 512 字节。这意味着

  • 每 512 字节的有效负载都会产生一个请求的开销。
  • 如果 512 的块大小不是您的设备的最佳块大小(例如,具有 512 仿真或 SSD 的 4K 扇区),则您会使设备远离其最佳工作点。

根据您的硬件,使用较小的块大小可能会获得更好的数字,bs因为它适合设备缓存。例如,对于具有 1GB 缓存的 RAID 控制器,您可能想尝试 10MB 块大小。

相关内容