在性能方面如何解释 dd 命令?

在性能方面如何解释 dd 命令?

我正在尝试比较在 Power PC 中运行的各种内核的性能。这是我的测试之一。

dd if=/dev/zero of=/dev/null bs=1024 count=1000000

我看到它在其中一个内核版本中 -

 8.595918 seconds, 113.6MB/s

在另一个内核版本中,它需要 -

 8.182470 seconds, 119.3MB/s

我的问题是我的测试基本上是从 RAM 读取并写入 /dev/null。我可以从系统角度解释什么?我能解释一下瓶颈是什么?如果数据不充分,我还能做些什么来获得一些有意义的信息。

答案1

5%的差异可以被认为是噪音,换句话说你不能断定两次测试结果之间存在差异。不要忘记,除dd正在运行且偶尔使用 CPU 之外的其他进程,并且两次测试的环境并不相同。

也许测试过程的实时优先级和重复测试几次可以为您提供更好的数据。无论如何,瓶颈是CPU和内存访问。没有 I/O。

答案2

我可以从系统角度解释什么?

您可以理解为,以 1024 字节块为dd单位将数据从 复制/dev/zero/dev/null,速度约为 115 MB/s。其他的就不多了。

每个块dd副本需要进行两次系统调用,一次到read(),一次到write()。这些系统调用会产生开销,这可能会对每次调用 1024 字节产生重大影响。由于块率如此之小,您无法测量系统传输零块的速度。但是您也没有测量原始系统调用开销,因为仍然存在为每个调用处理的 1024 个字节,加上 IO 调用所需的任何必要的簿记。这也不完全像打电话getpid()

相关内容