限制cabal安装使用的内存?

时间:2015-11-05 13:55:08

标签: haskell ghc cabal cabal-install memory-consumption

我的服务器托管限制了1GB内存。当我想编译像git-annex这样的大型程序时,Cabal会占用大量内存。有没有办法限制cabalgcl使用某些选项限制内存使用?

我用一些细节更新了问题:我在Webfaction托管(CentOS 7 - 64位)上运行cabal(1.22.4.0)和Ghc 7.10.2,可以访问shell (非root访问权限)。 Webfaction admin / robot通常会因编译而容忍一些爆发。但是Ghc / Cabal需要太多内存并且花费太多时间来进行某些包编译。因此系统会自动杀死所有进程。

我需要多次重新启动编译才能最终获得成功的结果。

我的主要目标是,无论需要多长时间,编译都会以成功结束。

2 个答案:

答案 0 :(得分:2)

编辑:这篇文章不清楚真正的问题,所以请忽略这个答案,因为它是用其他东西写的,但有一些有用的评论。

我认为如果你从外部将Cabal或GHC的内存消耗限制在1GB,那么由于Linux内存保护(或者其他所谓的某人,请问?)的早期终止,你将开始获得大量失败的版本。如果你找到一种方法来说服Cabal本身使用更少的记忆,并说服GHC也节食,情况可能并非如此。

我刚刚在1GB虚拟机上构建了Curry KiCS2,只有1GB的交换空间。 (当然,我的目标不是限制内存消耗,而是完成构建,但我所做的只是将VM内存增加到4GB并换成8GB,但这显然不是你想要的。)

所以我认为GHC在编译期间消耗大量内存可能没有解决方法。只是确保关闭并行编译。研究意味着通过编译标志(可能是GHC本身)来减少GHC的内存消耗,或者关闭可能消耗大量内存的优化阶段等。

更聪明的头脑可能会证明我错了。

答案 1 :(得分:2)

@ reyman64建议已确认可在具有2GB内存的Xubuntu 18.04上使用。谢谢! 因此,cabal install -v cabal-install挂起系统。以下工作正常:

cabal install -v --ghc-options='+RTS -M1G -RTS' cabal-install