C ++读/写 - RamDisk与RAM

时间:2014-06-02 10:09:51

标签: c++ performance memory memory-management ramdisk

我正在使用Ubuntu 32 BIT。 - 我的应用程序需要将传入的数据存储在RAM中(因为我需要对传入的数据进行大量搜索并对其进行计算)。 - 我需要保存数据X秒=>所以我需要分配12GB的内存。 (客户要求) - 我正在使用Ubuntu 32 BIT(并且不想使用Ubuntu 64 BIT) - 所以我使用Ram Disk来保存数据并将其保存到searach上。 (所以我可以在32位BIT系统上使用12GB的Ram)

当我使用2GB分配的内存(而不是12GB)测试应用程序时,我发现使用RAM时CPU的性能优于使用RAM DISK时,我只是将数据写入数据库(15%VS 17%) CPU使用率)  但是当我测试查询时(如果我正在使用RAM磁盘读取大量数据/文件),我看到了一个巨大的不同(20%对80%的CPU使用率)。

我不明白为什么有大量的DIFF? RAM和RAM DISK都可以在RAM上运行吗?不?我能做些什么来获得更好的表现吗?

1 个答案:

答案 0 :(得分:2)

我可以想到有两个原因可以解释为什么RAM磁盘速度较慢。

  1. 使用RAMDisk我们可能会使用RAM作为文件媒体,但我们仍然需要使用文件系统。这涉及系统调用以使用其他形式的间接或复制来访问数据。直接访问内存就是这样。

  2. 内存访问往往很快,因为我们经常可以在处理器缓存中找到我们要查找的内容。这使我们无法直接从较慢的RAM中读取数据。如果没有其他原因,使用RAMDisk可能无法在相同程度上使用处理器缓存,它需要系统调用。