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

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

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

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

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

1 ответ

Предложение @reyman64 подтверждено для работы на Xubuntu 18.04 с оперативной памятью 2 ГБ. Благодарность! Так,cabal install -v cabal-installзависает система. Следующее работает нормально:

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

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

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

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

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

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

Другие вопросы по тегам