【发布时间】:2015-08-14 11:38:05
【问题描述】:
我一直在具有高内存(128GB RAM)的机器上运行内存密集型 C++ linux 应用程序。该应用程序预先保留了大约 20GB 的内存,以供以后用作缓冲区。我希望将此应用程序移植到某种 SBC,例如 Raspberry Pi,我几乎没有内存可使用(与通常情况相比)。我的想法是使用 HDD(可能是 SDD)而不是 RAM 来分配 20GB 内存。有没有更有效的方法来做到这一点?另外,在这种方法中,我的实现应该是什么:只是二进制文件还是其他什么?
编辑:我可以减少内存分配,比如 2GB。不过,我在 RPi 中没有那种可用的内存。由于整个项目是将其移植到 SBC,因此我只需要使用硬盘空间来解决它。
【问题讨论】:
-
一般来说:辅助内存永远不如主内存快。
-
创建交换文件不是更简单的解决方案吗?这样,您根本不必更改我们的应用程序。
-
@MatthiasDiener :使用交换文件并分配 20GB 缓冲区会导致系统和所有其他进程也进行交换。这可能会几乎冻结系统,这是一个坏主意。 OP的想法更好
-
您可以(应该)将程序为缓冲区预留的内存量减少到 Pi 中可行的内存量。或者,正如其他人建议的那样,您可以用更适合小型机器的东西替换整个机制。
-
如果您有可能插入硬盘,您可以使用硬件 ram 磁盘。