Ограничить память, используемую установкой cabal?

Я ограничен памятью 1 ГБ на моем сервере. Когда я хочу скомпилировать какую-то большую программу, например git-annex, Cabal ест массу памяти. Есть ли способ ограничить cabal или gcl, используя некоторую опцию для ограничения использования памяти?

Я обновил вопрос с некоторыми подробностями: я запускаю cabal (1.22.4.0) и Ghc 7.10.2 на хосте Webfaction (CentOS 7 - 64 бит), имея доступ к оболочке (без доступа root). Администратор/робот Webfaction обычно переносит некоторый пакет из-за компиляции. Но Ghc/cabal нужно слишком много памяти и тратить слишком много минут на определенную компиляцию пакета. Таким образом, система автоматически убивает все процессы.

Мне нужно многократно перезапускать компиляцию, чтобы, наконец, получить успешный результат.

Моя основная цель заключается в том, что компиляция заканчивается успехом, как бы долго она ни занималась.

Ответы

Ответ 1

РЕДАКТИРОВАТЬ: сообщение неясно об истинной проблеме, поэтому игнорируйте этот ответ, поскольку он был написан с чем-то другим, но имеет некоторые полезные комментарии.

Я думаю, что если вы нарушаете потребление памяти в Cabal или GHC до 1 ГБ, вы начнете получать много неудачных сборок из-за ранних завершений с помощью защиты памяти Linux (или как бы там ни называлось - кто-нибудь, пожалуйста?). Возможно, это не так, если вы найдете способ убедить Cabal в том, чтобы использовать меньше памяти, и убедить GHC пойти на диету тоже.

Я столкнулся с этим совсем недавно, создав Curry KiCS2 на виртуальной машине емкостью 1 Гб с 1 Гб места подкачки. (Конечно, моя цель состояла не в том, чтобы ограничить потребление памяти, а вместо этого получить чертову вещь, чтобы закончить строительство, поэтому все, что я сделал, это увеличение памяти VM до 4 ГБ и свопинг до 8 ГБ, но это явно не то, что вам нужно.)

Итак, я думаю, что, вероятно, нет никакого обходного пути для GHC, потребляющего много памяти во время компиляции. Просто убедитесь, что параллельная компиляция отключена. И исследование означает сокращение потребления памяти GHC, флагов компиляции (самого GHC, возможно) или отключения фаз оптимизации, которые могут потреблять много памяти и т.д.

Более яркий ум может доказать, что я не прав.