
Estou trabalhando com uma nova instalação do OpenBSD (5.6 amd64). Estou tentando construir bibliotecas Boost e algumas compilações estão falhando com erros de falta de memória do cc1plus.
Li em outro lugar que aumentar a troca pode resolver esse problema. No entanto, para mim isso não está funcionando. Atualmente tenho 4 giga de swap configurados. No entanto, nada disso está sendo usado. Swapctl sempre mostra
total: 8390592 512-blocks allocated, 0 used, 8390592 available
Mesmo quando as compilações falham, isso permanece o mesmo.
Há algo incomum na minha instalação que devo mencionar. Ele está instalado em um pendrive e usei criptografia completa de disco por meio do método softraid0. Portanto, meu /dev/sd1b é meu 4g de swap, /dev/sd1a é raid, /dev/sd2 (o raid criptografado) é particionado normalmente pelo instalador, exceto que não há swap.
Minha pergunta é por que meu espaço de troca não está sendo usado, mesmo quando o compilador fica sem memória?
Responder1
Por padrão, o OpenBSD não permite que processos usem memória infinita. Esses limites são definidos em /etc/login.conf
.
Se você atingir esses limites, receberá um erro de falta de memória, mesmo que o sistema operacional como um todo ainda tenha bastante memória restante. Na maioria das vezes isso é bom, já que um processo invasor não será capaz de sugar toda a memória e deixar o sistema de joelhos. Às vezes, porém, isso atrapalha. Felizmente você pode mudar isso.
Responder2
Você também pode ganhar alguma força adicionando-se ao staff
grupo. Os limites de memória para esse grupo parecem ser definidos de forma mais generosa do que para outras classes de usuários.