dd 在读写时变慢

dd 在读写时变慢

用户@用户笔记本电脑:〜$ sudo dd if = sd_backup of = / dev / sdd bs = 4M conv = noerror,sync

205520896 bytes (206 MB) copied, 28.564 s, 7.2 MB/s
247463936 bytes (247 MB) copied, 57.1285 s, 4.3 MB/s
260046848 bytes (260 MB) copied, 73.2388 s, 3.6 MB/s
289406976 bytes (289 MB) copied, 104.121 s, 2.8 MB/s
301989888 bytes (302 MB) copied, 119.627 s, 2.5 MB/s
318767104 bytes (319 MB) copied, 134.332 s, 2.4 MB/s
331350016 bytes (331 MB) copied, 149.977 s, 2.2 MB/s
343932928 bytes (344 MB) copied, 164.332 s, 2.1 MB/s
360710144 bytes (361 MB) copied, 180.361 s, 2.0 MB/s
432013312 bytes (432 MB) copied, 258.438 s, 1.7 MB/s
444596224 bytes (445 MB) copied, 273.024 s, 1.6 MB/s
616562688 bytes (617 MB) copied, 452.296 s, 1.4 MB/s
641728512 bytes (642 MB) copied, 482.516 s, 1.3 MB/s

为什么复制这个 8GB 文件后 dd 会变慢?我该怎么办?

答案1

首先,它显示的数字是错误的,因为 Linux 缓存了您的写入。此外,磁盘缓存可能会加快读取速度。

过了一会儿,缓存被消耗了(读写都一样),速度就下降了。dd计算总体速度,所以看起来速度在不断下降,而实际上一开始很快,后来就慢了,但平均速度下降得很慢。

如果在完成上一个(或另一个磁盘密集型操作)后等待一段时间dd,缓存将被写出并且它应该再次快速(在开始时)。

答案2

我发现绕过缓存可以dd显著加快速度。例如:

sudo dd if=/dev/sdxx of=whatever.img bs=32K iflag=direct oflag=direct 

在我的系统上,整个传输速度超过 50 MBps,如果不使用标志,directddGB 之后速度就会变慢很多。

我希望这能帮助那些正在寻找此问题的人。

相关内容