¿Cómo puedo calcular el tamaño de la memoria compartida disponible para el sistema?

¿Cómo puedo calcular el tamaño de la memoria compartida disponible para el sistema?

De acuerdo con ladocumento RHEL, la cantidad total de memoria compartida disponible en el sistema es igual a shmall*PAGE_SIZE.

Después de completar la instalación de RHEL 6, el valor shmallpredeterminado del parámetro del kernel es 4294967296, lo que significa que la cantidad total de páginas de memoria compartida que se pueden usar en todo el sistema es 4294967296 y el tamaño de la página es 4096 B. Entonces, según en la fórmula, el tamaño de la memoria compartida es

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

... que es mucho más que el tamaño de RAM (8 GB) que tiene el sistema operativo. ¿Cómo puede un sistema operativo encontrar 16 TB de memoria compartida para asignar?

Entonces, ¿el tamaño de es /dev/shmigual al tamaño de la memoria compartida? Si no, ¿cómo puedo obtener el tamaño real de la memoria compartida?

Respuesta1

Tu cálculo es correcto. shmall se puede configurar por encima de la memoria virtual disponible. Si intentara usarlo todo, entonces no fallaría porque se exceda el tamaño pequeño, sino por otras razones.

Por cierto, también hay comandos para encontrar estos límites de IPC:

ipcs -l
lsipc  # util-linux>=2.27

Tenga en cuenta que incluso la memoria virtual es ilimitada en Linux de forma predeterminada, mayor que RAM+swap. Ver

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

¿Cómo decide el asesino OOM qué proceso matar primero?

Por otro lado podríaslímitela memoria virtual por proceso utilizada ulimt -v, que tampoco afectaría al kernel /proc/sys/kernel/shmall.

información relacionada