
Я работаю с новой установкой OpenBSD (5.6 amd64). Я пытаюсь собрать библиотеки Boost, и довольно много компиляций завершаются с ошибками cc1plus, связанными с нехваткой памяти.
Я где-то читал, что увеличение swap может решить эту проблему. Однако для меня это не работает. В настоящее время у меня установлено 4 гига подкачки. Однако ни одна из них даже не используется. Swapctl всегда показывает
total: 8390592 512-blocks allocated, 0 used, 8390592 available
Даже если компиляция не удалась, ситуация остается прежней.
Я должен упомянуть кое-что необычное в моей установке. Она установлена на USB-флешку, и я использовал полное шифрование диска с помощью метода softraid0. Итак, мой /dev/sd1b — это мои 4g подкачки, /dev/sd1a — это raid, /dev/sd2 (зашифрованный raid) размечен установщиком как обычно, за исключением отсутствия подкачки.
У меня вопрос: почему пространство подкачки вообще не используется, даже когда компилятору не хватает памяти?
решение1
По умолчанию OpenBSD не позволяет процессам использовать бесконечную память. Эти ограничения определены в /etc/login.conf
.
Если вы достигнете этих пределов, вы получите ошибку нехватки памяти, хотя в ОС в целом ее еще много осталось. В большинстве случаев это хорошо, так как один вредоносный процесс не сможет поглотить всю память и поставить систему на колени. Иногда, однако, это мешает. К счастью, вы можете это изменить.
решение2
Вы также можете получить некоторую тягу, добавив себя в staff
группу. Лимиты памяти для этой группы, похоже, установлены более щедро, чем для других классов пользователей.