Páginas

12 de mar. de 2014

Otimizando Oracle Database com HugePages

 
Olá pessoal,

     No artigo de hoje vou comentar sobre um recurso chamado HugePages, que permite, de um modo geral, alocar maior quantidade de dados em páginas de dados do Sistema Operacional (SO), economizar CPU (ao ler mais dados por páginas), e desse modo, otimizar o desempenho de um Banco de Dados Oracle, em SO Linux. É importante ressaltar que HugePages não funciona em SO Windows, mas é possível habilitar por lá um recurso similar de Large Pages.
 
     HugePages é um recurso que pode ser utilizado em Linux de 32 ou 64 bits, a partir do kernel versão 2.6, e a sua configuração permite que o SO suporte páginas de dados com tamanhos maiores (de 2 MB à 256 MB, dependendo da versão do kernel e arquitetura do hardware) que o  tamanho padrão de 4 KB. O uso dessas páginas de dados maiores permite otimizar a performance geral de um BD Oracle reduzindo a quantidade de recursos (principalmente CPU) que ele utiliza para acessar a SGA. Ao habilitar HugePages, as páginas de dados (maiores) da SGA são alocadas sempre na RAM (sem utilizar memória virtual) durante o startup do BD. Para isso, é necessário que o tamanho da SGA seja menor ou igual o tamanho total da RAM disponível no momento do startup, caso contrário, ocorrerá uma falha na inicialização do BD.

     Em SOs Linux x86 e x86-64, o tamanho das páginas de dados com HugePages habilitado, é de 2MB, ou seja, ela é 512 vezes maior do que o tamanho padrão de 4 KB. O fato de ter páginas de dados bem maiores permite que mais dados sejam alocados na mesma unidade de armazenamento lógico e que menos páginas de dados sejam criadas e gerenciadas pelo SO, portanto, é exatamente isso que permite reduzir o uso de CPU e melhorar a performance das pesquisas de dados em buffer (Translation Lookaside Buffer).

     Em 2012, ao migrar os BDs Oracle da empresa em que trabalho da versão 10G, para um novo servidor, com a versão 11G, eu já aproveitei e habilitei HugePages. Não consegui medir o ganho de performance porque eu não fiz isso de forma isolada, porém ao efetuar algumas pesquisas na Internet, encontrei um artigo (ver referências) de outro Oracle ACE chamado Marcin Przepiorowski, onde ele demonstra ter conseguido obter um ganho de 6% no I/O Lógico (LIO) ao habilitar HugePages em uma instância Oracle com 60 GB de SGA, executando queries em pequenas tabelas.

     Um ponto muito importante é que HugePages não é compatível com Automatic Memory Management (AMM), um novo método de gerenciamento de memória indicado como padrão no Oracle Database 11G. Se você quer habilitar HugePages, você tem que usar Automatic Shared Memory Management (ASMM).
     
     Para configurar HugePages no SO e permitir que a SGA do seu BD Oracle utilize este recurso, siga o roteiro oficial da Oracle, conforme instruções do link Configuring HugePages on Linux.


Por hoje é só!

[]s


Referências:
     - Overview of HugePages, by Oracle Corporation
     - Oracle and HugePagesby Marcin Przepiorowski
   

6 comentários:

  1. Grande Fábio..Otimo post. Ja vinha estudando sobre HugePages e Oracle e sua implementação.

    Parabéns pelo artigo.Muito esclarecedor também.

    ResponderExcluir
  2. Bom dia Fabio, gostaria de saber se existe algum recurso parecido com este de HugePages para o SO Windows? Obrigado!

    ResponderExcluir
    Respostas
    1. Leandro, existe sim. Consulte o link: http://www.ora00600.com/wordpress/scripts/databaseconfig/large-pages-oracle/

      []s

      Excluir
    2. Estarei olhando. Muito obrigado!

      Excluir
  3. Muito bom o artigo, Fabio!

    ResponderExcluir