我的服务器托管限制了1GB内存。当我想编译像git-annex
这样的大型程序时,Cabal会占用大量内存。有没有办法限制cabal
或gcl
使用某些选项限制内存使用?
我用一些细节更新了问题:我在Webfaction托管(CentOS 7 - 64位)上运行cabal
(1.22.4.0)和Ghc
7.10.2,可以访问shell (非root访问权限)。 Webfaction admin / robot通常会因编译而容忍一些爆发。但是Ghc
/ Cabal
需要太多内存并且花费太多时间来进行某些包编译。因此系统会自动杀死所有进程。
我需要多次重新启动编译才能最终获得成功的结果。
我的主要目标是,无论需要多长时间,编译都会以成功结束。
答案 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