Use ipcs -l
para verificar os limites realmente em vigor e ipcs -a
e ipcs -m
para ver o que está em uso, para que você possa comparar a saída. Observe a coluna nattch
: há segmentos sem processos anexados que não foram removidos quando os processos foram encerrados (o que normalmente significa que o programa travou)? ipcrm
pode eliminá-los, embora se for uma máquina de teste, a reinicialização será mais rápida (e garantirá que suas alterações nos limites sejam removidas).
Seus parâmetros do kernel parecem estranhos. Em particular, shmall
é uma contagem de páginas, não de bytes, e 4kB é o tamanho de página padrão (execute getconf PAGESIZE
para verificar o que você está usando). Quantos terabytes de RAM você tem?
Agora, você diz que obtém cerca de 32771 segmentos de memória compartilhada, que também é cerca de 32768 (ou 2 a 15), o que sugere que um int de 16 bits com sinal é o fator limitante. E qual kernel você está executando (pois isso terá seus próprios limites)? Os dois podem estar relacionados.