Oracle: O servidor está fazendo SWAP? O que pode ser?
- Siltech Consult
- 8 de out. de 2019
- 3 min de leitura
Em ambiente Linux com mais de 12G de memória RAM é recomendável o uso de HugePages. Isso é porque habilitando hugepages ocorre a redução da quantidade de páginas que o kernel deve gerenciar deixando o sistema mais eficiente. Se o hugepages não for habilitado, geralmente é muito comum problemas como ‘evictions’ em instance ou nós.
IMPORTANTE: HUGE PAGES não é compatível com AMM (Automatic Memory Management). Deve-se desabilitar o AMM quando for fazer uso de HugePages.
O que são HugePages ?
Huge pages é um recurso integrado ao Kernel do Linux à partir da versão 2.6. Ele basicamente oferece uma alternativa ao uso dás páginas de 4k (se for IA as páginas são de 16k), oferecendo assim um recurso chamado `big pages`.
Existem vantagens em usar HugePages ?
Sim. Primeiramente pois o HugePages não faz swap. Como estas páginas ficam constantemente em memória, diminui-se o uso deste recurso (page-in/page-out). Além disso, devido à forma como o mesmo trabalha, existe uma grande redução do `Overhead` dos `page tables`. No modo tradicional trabalha-se com páginas de 4k. Neste modo as páginas são de 2m ou seja, uma redução de 512 vezes da quantidade de páginas necessárias para gerenciar a mesma quantidade de memória. Outra vantagen é que o processo kswapd não é usado com hugepages, uma vez que, existe um número menor de páginas para serem gerenciadas. Com isso o uso de CPU é reduzido drásticamente.
Existem desvantagens ?
Desde que bem configurado não. O problema é configurar incorretamente, então neste caso, em lugar de resolver problemas, você acabará criando.
Existe alguma incompatibilidade ?
Conforme já mencionado o uso de hugepages com o AMM não é suportado. À partir da versão 11.2.0.2 existe um novo parametro inclusive (use_large_pages) que deve ser usado quando for configurar o ambiente para hugepages. Este parametro não está documentado ainda no Oracle Documentation, porém, possui 3 valores possíveis: True (que é o default) que tenta subir o banco com hugepages se o mesmo estiver disponível, caso contrário sobe o banco com small pages, Only (só subirá o banco se o hugespages estiver setado para toda a RAM) e False (nunca usará hugepages).
Além disso o kernel tem que ser acima do 2.6.
Como Configurar ?
1) Configurar o memlock no /etc/security/limits.conf com um valor um pouco menos que o total de RAM. Por exemplo, se a máquina tiver 64G de RAM então o memlock deve estar assim:
Não há problemas em deixar este valor acima do valor da SGA. OBS: O Oracle Exadata já vem com este parametro habilitado por default.
2) Faça conexão novamente com o usuário Oracle para ter certeza de que o memlock está habilitado para o mesmo:
3) Se estiver usando o recurso AMM (Automatic Memory Management) que na versão 11g é o default inclusive, desabilite-o. O HugePages não é compatível com esta feature. Aproveite e altere também o use_large_pages para true ou only (veja nota acima);
4) Certifique-se de que todos os seus bancos neste servidor estejam ONLINE então execute o script abaixo para calcular o valor recomendado para vm.nr_hugepages:
5) Edite o /etc/sysctl.conf e adicione o hugepages:
Este parametro só ficará ativo após o reboot do servidor;
6) Para todas as instances e dê restart no servidor;
Como estes parametros foram ajustados de acordo com o ambiente atual, devem ser recalculados sempre que houver alteração na memória RAM, mudança em qualquer instance que estiver instalada principalmente se a for troca da instance, ou mesmo alteração de parametros da SGA.
Além disso, deve-se ser revisado também estes parametros caso se tenha problemas com performance do equipamento, uso de swap excessivo, problemas nas instances no startup ou mesmo falhas de serviços do sistema. Como verificar se o hugespages está configurado ?
Dê um cat em /proc/meminfo e procure pelas seguintes informações:
Dúvidas? silverio@siltechconsult.com.br

Comentários