在Linux启动之前为Linux中的程序预分配内存

时间:2010-05-04 22:17:39

标签: linux memory scientific-computing

我有一个程序,使用cholesky分解反复解决大型线性方程组。表征是我有时需要存储可以超过大约20 GB内存的完整因子分解。因子分解发生在我调用的库中。此外,这个矩阵和由此产生的因子分解也经常发生变化,因此内存需求也会发生变化。

我不是唯一使用此计算节点的人。因此,有没有办法在Linux下启动程序并预先为进程分配空闲内存?

类似于:$: prealloc -m 25G ./program

2 个答案:

答案 0 :(得分:0)

我会伸出脖子说我不认为在Linux下有这样的方式。我认为Linux的哲学(以及我曾经使用或听过的所有其他多任务操作)都是为程序员(和程序)提供一种错觉,即他们拥有整个计算机的内存来玩并且使程序员确实很难干扰o / s。

相反,我认为您应该计划修改您的程序以获取它在启动时(或可能)需要的内存,即,以您选择的语言自己进行内存管理。考虑到对图书馆的打电话,这对我来说有多容易,我不知道。

答案 1 :(得分:0)

我从来没有听说过这样的方式。通常,如果一个程序继续并且占用了所有可用内存,那么节点上的其他用户将会很糟糕。这不是好习惯。

但是除了意见之外,我可能会以这样一种方式编写我的程序,它就像一个小环境,能够在没有结束的情况下进行多次运行。它会在启动时分配大量内存,然后等待用户命令(通过最小的shell)并使用分配的内存池进行请求运行。它会保留在池中,直到用户请求终止。

当然,这要求您在节点上进行交互式会话,这可能是您没有的。