【发布时间】:2014-06-02 10:09:50
【问题描述】:
我使用的是 Ubuntu 32 位。 - 我的应用程序需要将传入数据存储在 RAM 中(因为我需要对传入数据进行大量搜索并计算某些东西)。 - 我需要将数据保存 X 秒 => 所以我需要分配 12GB 的内存。 (客户要求) - 我正在使用 Ubuntu 32 位(并且不想使用 Ubuntu 64 位) - 所以我使用 Ram Disk 来保存传入的数据并对其进行搜索。 (所以我可以在 32 位系统上使用 12GB 的内存)
当我使用 2GB 分配的内存(而不是 12GB)测试应用程序时,我发现使用 RAM 时 CPU 的性能比我仅将数据写入数据库时使用 RAM DISK 时更好(15% VS 17% CPU使用率) 但是当我测试查询时(如果我使用 RAM 磁盘读取大量数据/或文件),我看到了巨大的不同(20% 与 80% 的 CPU 使用率)。
我不明白为什么会有很大的差异? RAM 和 RAM DISK 都在 RAM 上工作?不 ?我可以做些什么来获得更好的性能?
【问题讨论】:
-
Ramdisk 是一种将数据存储在 RAM 中的虚拟 HDD。你认为它会给你带来 12GB 的空间吗?
-
您可以制作一个 12 GB 的文件并使用 mmap() 来写入/读取它的片段。您必须在其上编写一个聪明的对象/内存管理器以实现透明使用。
-
您可能刚刚发现,操作系统比您更善于弄清楚如何有效地使用 RAM。这是意料之中的,这是他们的工作。
标签: c++ performance memory memory-management ramdisk