Como posso calcular o tamanho da memória compartilhada disponível para o sistema

Como posso calcular o tamanho da memória compartilhada disponível para o sistema

De acordo comDocumento RHEL, a quantidade total de memória compartilhada disponível no sistema é igual a shmall*PAGE_SIZE.

Depois de concluir a instalação do RHEL 6, o valor shmallpadrão do parâmetro do kernel é 4294967296, o que significa que a quantidade total de páginas de memória compartilhada que podem ser usadas em todo o sistema é 4294967296 e o ​​tamanho da página é 4096 B. Portanto, com base na fórmula, o tamanho da memória compartilhada é

4294967296*4096/1024/1024/1024/1024 = 16 TB

... que é muito maior do que o tamanho da RAM (8 GB) que o sistema operacional possui. Como um sistema operacional pode encontrar 16 TB de memória compartilhada para alocar?

Então, o tamanho é /dev/shmigual ao tamanho da memória compartilhada? Caso contrário, como posso obter o tamanho real da memória compartilhada?

Responder1

Seu cálculo está correto. shmall pode ser definido acima da memória virtual disponível. Se você tentasse usar tudo isso, não falharia por causa de um pequeno valor excedido, mas por outros motivos.

Aliás, também existem comandos para encontrar esses limites de IPC:

ipcs -l
lsipc  # util-linux>=2.27

Observe que mesmo a memória virtual é ilimitada no Linux por padrão, maior que RAM+swap. Ver

https://serverfault.com/questions/606185/how-does-vm-overcommit-memory-work

Como o assassino OOM decide qual processo matar primeiro?

Por outro lado você poderialimitea memória virtual por processo ulimt -vque também não afetaria o kernel /proc/sys/kernel/shmall.

informação relacionada