限制 cabal 安装使用的内存?
Limit memory used by cabal install?
我的服务器主机上有 1GB 的内存限制。当我想编译像 git-annex
这样的大程序时,Cabal 会占用大量内存。有没有办法使用某些选项来限制 cabal
或 gcl
来限制内存使用?
我用一些细节更新了问题:我在 Webfaction 主机上 运行 cabal
(1.22.4.0) 和 Ghc
7.10.2 (CentOS 7 - 64bit),可以访问 shell(非 root 访问)。 Webfaction admin/robot 通常容忍由于编译导致的一些突发。但是 Ghc
/ Cabal
需要太多的内存并且为某些包编译花费了太多的时间。所以系统会自动杀死所有进程。
我需要重新编译很多次才能最终获得成功的结果。
我的主要objective是编译以成功结束,无论需要多长时间。
编辑:post 不清楚真正的问题,所以忽略这个答案,因为它是在考虑其他问题的情况下写的,但有一些有用的评论。
我认为如果你从外部将 Cabal 或 GHC 的内存消耗限制在 1GB,你将开始得到很多失败的构建,因为 Linux 内存保护(或任何它所谓的 - 有人,拜托?)。如果你找到一种方法说服 Cabal 本身使用更少的内存,并说服 GHC 也节食,情况可能就不是这样了。
我最近 运行 在一个只有 1GB 交换空间的 1GB 虚拟机上构建 Curry KiCS2 space。 (当然,我的目标不是限制内存消耗,而是让该死的东西完成构建,所以我所做的就是将 VM 内存增加到 4GB 并交换到 8GB,但这显然不是你想要的。)
所以我认为可能没有解决 GHC 在编译期间消耗大量内存的方法。不过,只要确保关闭并行编译即可。并且研究意味着通过编译标志(可能是 GHC 本身的)来减少 GHC 的内存消耗,或者关闭可能消耗大量内存的优化阶段等。
但更聪明的头脑可能会证明我错了。
@reyman64 建议已确认可在具有 2GB 内存的 Xubuntu 18.04 上运行。谢谢!
因此,cabal install -v cabal-install
挂起系统。以下工作正常:
cabal install -v --ghc-options='+RTS -M1G -RTS' cabal-install
我的服务器主机上有 1GB 的内存限制。当我想编译像 git-annex
这样的大程序时,Cabal 会占用大量内存。有没有办法使用某些选项来限制 cabal
或 gcl
来限制内存使用?
我用一些细节更新了问题:我在 Webfaction 主机上 运行 cabal
(1.22.4.0) 和 Ghc
7.10.2 (CentOS 7 - 64bit),可以访问 shell(非 root 访问)。 Webfaction admin/robot 通常容忍由于编译导致的一些突发。但是 Ghc
/ Cabal
需要太多的内存并且为某些包编译花费了太多的时间。所以系统会自动杀死所有进程。
我需要重新编译很多次才能最终获得成功的结果。
我的主要objective是编译以成功结束,无论需要多长时间。
编辑:post 不清楚真正的问题,所以忽略这个答案,因为它是在考虑其他问题的情况下写的,但有一些有用的评论。
我认为如果你从外部将 Cabal 或 GHC 的内存消耗限制在 1GB,你将开始得到很多失败的构建,因为 Linux 内存保护(或任何它所谓的 - 有人,拜托?)。如果你找到一种方法说服 Cabal 本身使用更少的内存,并说服 GHC 也节食,情况可能就不是这样了。
我最近 运行 在一个只有 1GB 交换空间的 1GB 虚拟机上构建 Curry KiCS2 space。 (当然,我的目标不是限制内存消耗,而是让该死的东西完成构建,所以我所做的就是将 VM 内存增加到 4GB 并交换到 8GB,但这显然不是你想要的。)
所以我认为可能没有解决 GHC 在编译期间消耗大量内存的方法。不过,只要确保关闭并行编译即可。并且研究意味着通过编译标志(可能是 GHC 本身的)来减少 GHC 的内存消耗,或者关闭可能消耗大量内存的优化阶段等。
但更聪明的头脑可能会证明我错了。
@reyman64 建议已确认可在具有 2GB 内存的 Xubuntu 18.04 上运行。谢谢!
因此,cabal install -v cabal-install
挂起系统。以下工作正常:
cabal install -v --ghc-options='+RTS -M1G -RTS' cabal-install