Seu cálculo está correto. O shmall pode ser definido mais alto que a memória virtual disponível. Se você tentasse usar tudo isso, não falharia porque o shmall foi excedido, mas por outras razões.
BTW também existem comandos para encontrar esses limites de IPC:
ipcs -l
lsipc # util-linux>=2.27
Note que mesmo a memória virtual é ilimitada no Linux por padrão, maior que a RAM + swap. Veja
Como o assassino da OOM decide qual processo matar primeiro?
Por outro lado, você poderia limitar a memória virtual por processo usando ulimt -v
, o que não afetaria o /proc/sys/kernel/shmall
nem do kernel.