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

4

De acordo com o documento original , a quantidade total de memória compartilhada disponível no sistema é igual a shmall * PAGE_SIZE . Depois de concluir a instalação do RHEL6, o valor do parâmetro do kernel shmall é 4294967296, o que significa que a quantidade total de páginas de memória compartilhada que podem ser usadas no sistema é 4294967296 e o tamanho da página é 4096B. Então, com base na fórmula, o tamanho da memória compartilhada é

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

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

Então, o tamanho de /dev/shm é realmente igual ao tamanho da memória compartilhada? Se não, como posso obter o tamanho real da memória compartilhada?

    
por user4535727 02.11.2016 / 09:52

1 resposta

0

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

link

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.

    
por 02.11.2016 / 11:25