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.