Linux - por que o kernel.shmall é tão baixo por padrão?

5

Eu executo o DB2 no Linux, onde tenho que alocar a grande maioria da memória na máquina para compartilhar segmentos de memória.

Esta página é típica das informações que encontrei sobre shmall / shmmax: link

Meu sistema está funcionando bem agora, mas estou me perguntando se há uma razão histórica ou filosófica por que a memória compartilhada é tão baixa por padrão. Em outras palavras, por que não deixar o shmall usar a memória física máxima da máquina?

Ou, em outras palavras, por que um administrador típico precisa ser "protegido de si mesmo" se um aplicativo usar muita memória compartilhada e precisar alterar essas configurações? A única coisa em que consigo pensar é que isso me permite definir um limite superior para a quantidade de memória que o DB2 pode usar, mas esse é um caso especial.

    
por twblamer 07.04.2011 / 21:57

1 resposta

4

A memória compartilhada nem sempre é um recurso protegido. Como tal, muitos usuários podem alocar memória compartilhada. Também não é retornado automaticamente ao pool de memória quando o processo alocado morre. Isso pode resultar em alocações de memória compartilhada que foram alocadas, mas não usadas. Isso resulta em um vazamento de memória que pode não ser óbvio.

Mantendo baixos os limites de memória compartilhada, a maioria dos processos que usam memória compartilhada (em pequenas quantidades) podem ser executados. No entanto, o dano potencial é limitado. Os únicos sistemas que tenho usos que exigem grandes quantidades de memória compartilhada são os servidores de banco de dados. Estes geralmente são administrados por administradores de sistema que estão cientes dos requisitos. Caso contrário, o DBA geralmente está ciente do requisito e pode solicitar alterações de configuração apropriadas. As instruções de instalação do banco de dados geralmente especificam como calcular e definir os limites apropriados.

Eu tive bancos de dados mortos e deixei grandes quantidades de memória compartilhada alocadas, mas não utilizadas. Isso criou problemas para os usuários do sistema e impediu o reinício do banco de dados. Felizmente, há ferramentas que permitiram que a memória fosse localizada e liberada.

    
por 07.04.2011 / 22:54