the*_*ian 3 performance io dd files
我最近看了这个视频,其中作者解释说,在使用命令时,RAM 磁盘比 HDD/SSD 快得多dd
。我明白为什么会这样。然而,我不明白的是,为什么当我在dd if=/dev/zero of=test.iso bs=1M count=8000
具有 16GB RAM、12 核 Ryzen 3600X CPU 和额定 NVMe SSD 的系统上执行他的示例命令时,写入速度为 220MB/s写入速度可达 5GB/s。
我知道 RAM 总是会更快,但这看起来太慢了,肯定还有其他东西在起作用。这是他使用命令的方式吗dd
?我不知道其内部原理,dd
但这是系统限制性能的情况,还是命令被误用了?
注意:连续第二次运行完全相同的命令后,第二次写入速度更快,为 1.4GB/s,但这并不能消除我的困惑。
SSD 等 NAND 闪存介质具有最小块擦除大小,这意味着如果您dd
在较小的块大小上存储数据,SSD 控制器必须多次擦除块才能写入块内的位置。如果最小块擦除大小为 4M,则 1M 意味着该块必须重写 4 次以上。SSD 需要擦除同一个 4M 块 4 次。
事实上,第二次dd
运行相同的命令时它会变得更快,这可以通过内核、驱动程序和控制器的缓存和内部优化来解释,类似于重复命令时看到的情况find
。
我参考@greg-kennedy 的优秀答案以获取更多信息和用于查找最小擦除块大小的脚本,该脚本应用作dd
s 块大小值以获得最佳性能。
有时,您也可以在设备规格中或通过阅读 找到它/sys/class/mtd/mtdx/erasesize
,具体取决于各个设备。