RAMFS 似乎比预期慢 — 瓶颈是什么?

RAMFS 似乎比预期慢 — 瓶颈是什么?

RAMFS 不使用交换(TMPFS 使用)。所以我挂载FS

cd /mnt/; mkdir SOMETHING; mount -t ramfs -o size=1500m ramfs /mnt/SOMETHING; cd /mnt/SOMETHING

我生成一个测试文件:

dd if=/dev/zero of=testfile_500MB bs=524288000 count=1

我cp测试文件(从内存到内存)

time cp testfile_500MB testfile_500MB_cptestfile

real    0m0.599s
user    0m0.008s
sys     0m0.592s

我的 PC 中有一个 DDR2-1066 模块。瓶颈是什么?根据这篇维基百科文章:

http://en.wikipedia.org/wiki/List_of_device_bandwidths

它需要的速度超过 10 GB/秒!速度不会超过 10 GB/秒

0.599 秒内 500 MB = 835 MB/秒。很慢。

CPU是瓶颈吗?或者是什么? :O(E7300 @ 2.66GHz)

更新:用“时间”测量“cp”是一件好事吗?

答案1

您的测试可能不够长,无法平均运行的开销cp,所以我不知道这是否是一个好的测试。您可能想尝试类似的事情bonnie++

不过,你给出的数字在我看来并不算不合理。如果 memtest86+ 可信的话,大多数双通道 RAM 系统对主内存的传输速度为 2-3GB/s。单通道(如只有一根 RAM)的速度会更低(但不一定是一半)。减去一些可以理解的开销,略低于 1GB/s 的速度听起来是合理的。

答案2

使用cp,数据将经过多个缓冲区(用户端和内核端),因此所需的内存带宽可以乘以一个很大的因子。也许 ramfs 内部也会增加一些开销。所以,cp绝对不是一个测试内存带宽的好工具。

必须有一些特定的工具躺在周围为了那个原因。

答案3

事实上它比你想象的还要慢。如果您以这种方式创建文件,它应该是默认情况下,文件系统挂载为异步I/O

当然,众所周知,cp 复制大文件的速度相当慢(有多种方法可以解决这个问题 - 最常见的是跨管道使用 cpio)。

您想测量什么速度?如果您想测量内存 I/O,请使用内存测试。如果您想要实际测量 ramfs 性能,请使用菲奥

相关内容