`dd if=/dev/zero of=/dev/null` 实际测量的是什么?

`dd if=/dev/zero of=/dev/null` 实际测量的是什么?

我正在做一些硬盘速度基准测试,并决定尝试以下命令来看看会发生什么:

dd if=/dev/zero of=/dev/null

取消后,我得到:

(269 GB, 251 GiB) copied, 107.101 s, 2.5 GB/s

如果我更改字节大小或计数,我会得到不同的结果:

dd if=/dev/zero of=/dev/null bs=4096 count=2000
(8.2 MB, 7.8 MiB) copied, 0.00134319 s, 6.1 GB/s

dd if=/dev/zero of=/dev/null bs=16384 count=2000
(33 MB, 31 MiB) copied, 0.00305674 s, 10.7 GB/s

由于我没有读取或写入任何真实的驱动器,所以我在这里实际测量的是什么? CPU 生成零并将其移入虚拟垃圾桶的速度有多快?对于我来说,这实际上看起来真的很慢。

它会击中 RAM 吗?主板总线起作用吗?

该测试是否有任何实际的基准测试应用(即比较不同代的处理器)?

即使实际磁盘(理论上)速度无限,这里的结果是否是系统所能达到的最快 I/O?

实际测量什么dd if=/dev/zero of=/dev/null

答案1

才不是对您的硬盘驱动器进行基准测试,但仅对 CPU 的 1 个线程进行基准测试(因为该dd命令是单线程进程)

你所做的基本上就是要求你的处理器尽可能快地向黑洞发送尽可能多的零。

如果我在我的机器上做同样的事情,我会得到以下结果:

dd if=/dev/zero of=/dev/null bs=16384 count=2000
2000+0 records in
2000+0 records out
32768000 bytes (33 MB, 31 MiB) copied, 0,018317 s, 1,8 GB/s

简而言之,你的 CPU 比我的好;-)

英特尔(R) 酷睿(TM) i5-2410M CPU @ 2.30GHz

答案2

你问

实际测量什么dd if=/dev/zero of=/dev/null

您正在测量操作系统读取 512 字节零块并丢弃它们的速度。读取如此小的块效率不高,这就是为什么对于较大的块大小可以获得更好的吞吐量。

对于基于 Linux 的系统上的实际使用,您还应该考虑使用-cat来代替dd-cat更容易使用,并且它(非常)很少比优化的慢dd

相关内容