我正在运行使用非常大的(45Gb)训练集的word2phrase.c。我的电脑有16Gb的物理内存和4Gb的交换空间。我已经把它培训了一夜(第二时间tbh),我早上回来看看它被“杀死”,没有进一步的解释。当我的RAM耗尽时,我坐下来看着它死去。Linux C应用程序内存不足
我在/etc/sysctl.conf
vm.oom-kill = 0
vm.overcommit_memory = 2
实际的源代码中设置不显示写入文件中的数据,而是保存在内存中,这是创造的问题。
- 用于杀死OOM的总内存(RAM + SWAP)是多少?例如,如果我将我的SWAP增加到32Gb,这个停止是否会发生?
- 我可以强制此过程使用SWAP而不是物理RAM,但性能会降低吗?
如果100%的准确性不重要,那么你不能将你的设置分成10个块并手动编译结果? –
@GradyPlayer我可能不得不这样做,如果增加SWAP不能解决这个问题。 不幸的是,这需要我做在线培训,这可能是不可能的(我不知道网络模型的工作原理)。 –
@Alex - 如果内存不断分配并释放,则会出现潜在问题。虚拟页面最终会出现无法使用的空白。像Microsoft的.net框架这样的环境偶尔会暂停一个进程并重新打包内存页面以避免这个问题。我不知道Linux的等价物是什么,这可能不是word2phrase内存不足的原因。 – rcgldr