
Estoy trabajando con una instalación nueva de OpenBSD (5.6 amd64). Estoy intentando crear bibliotecas Boost y algunas compilaciones fallan y cc1plus se queda sin memoria.
Leí en otra parte que aumentar el intercambio puede resolver este problema. Sin embargo, para mí eso no funciona. Actualmente tengo 4 gigas de intercambio configurados. Sin embargo, nada de eso siquiera se está utilizando. Swapctl siempre muestra
total: 8390592 512-blocks allocated, 0 used, 8390592 available
Incluso aunque las compilaciones fallen, esto sigue igual.
Hay algo inusual en mi instalación que debo mencionar. Está instalado en una memoria USB y he utilizado cifrado de disco completo mediante el método softraid0. Entonces, mi /dev/sd1b es mi 4g de intercambio, /dev/sd1a es raid, /dev/sd2 (el raid cifrado) está particionado normalmente por el instalador, excepto que no hay intercambio allí.
Mi pregunta es ¿por qué mi espacio de intercambio no se utiliza en absoluto, incluso cuando el compilador se queda sin memoria?
Respuesta1
Por defecto, OpenBSD no permite que los procesos utilicen memoria infinita. Estos límites están definidos en /etc/login.conf
.
Si alcanza esos límites, obtendrá un error de falta de memoria aunque al sistema operativo en su conjunto todavía le quede suficiente. La mayoría de las veces esto es bueno, ya que un proceso malicioso no podrá absorber toda la memoria y poner al sistema de rodillas. A veces, sin embargo, se interpone en el camino. Afortunadamente puedes cambiarlo.
Respuesta2
También puedes ganar algo de tracción agregándote al staff
grupo. Los límites de memoria para ese grupo parecen estar establecidos de manera más generosa que para otras clases de usuarios.