![RAMFS 似乎比预期慢 — 瓶颈是什么?](https://linux22.com/image/16980/RAMFS%20%E4%BC%BC%E4%B9%8E%E6%AF%94%E9%A2%84%E6%9C%9F%E6%85%A2%20%E2%80%94%20%E7%93%B6%E9%A2%88%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F.png)
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
绝对不是一个测试内存带宽的好工具。
必须有一些特定的工具躺在周围为了那个原因。