Início > Oracle, SO > Implementando HugePages

Implementando HugePages

Bom hoje eu vou falar como implementar o HugePages: é um recurso de acordo com a versão do kernel linux essencial para performance, esta funcionalidade é bastante útil quando trabalhamos com servidores com grande quantidade de memória, algumas vantagens abaixo retirados e traduzidos do site da Oracle support:

– Larger Page Size and Less # of Pages – O tamanho da página padrão é 4k, o HugePages permite que o sistema operacional trabalhe com páginas de até 2048K. O SO pode trabalhar menos páginas.
– No Page Table Lookups – Quando é implementado hugepages não é realizado substituição de páginas, então não é necessário pesquisar a tabela de página.
– Better Overall Memory Performance – Em sistemas de memória virtual (qualquer sistema operacional moderno) cada operação de memória é, na verdade duas operações de memória abstratas. Com hugepages, uma vez que há menor número de páginas para trabalhar, o gargalo disponível no acesso à tabela de página é evitada.
– No Swapping – Elimina swap no sistema operacional.
– No ‘kswapd’ Operations – Com a implementação de hugepages o processo kswapd não é envolvido, diminuindo utilização de recurso de CPU. [Slow Performance with High CPU Usage on 64-bit Linux with Large SGA – ID 361670.1]

Para implementar HugePages na versão 11g é necessário desabilitar a funcionalidade de gerenciamento automático de memória(Automatic Memory Management (AMM)), que torna a alocação de memória SGA dinâmica, segue nota da Oracle: HugePages and Oracle Database 11g Automatic Memory Management (AMM) on Linux [ID 749851.1]

– HugePages on Oracle Linux 64-bit [ID 361468.1]

Segue o Blog do Burleson informando step by step da implementação do Huge Pages também:
http://www.dba-oracle.com/t_linux_hugepages.htm

Bom então vamos lá, eu vou implementar em minha Vmware:

– Vamos verificar a versão do kernel assim como sua compatibilidade

A versão do Kernel é 2.6 conforme visto no uname -a

[root@hodb001vtr ~]# cat /proc/meminfo |grep Huge
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
[root@hodb001vtr ~]#

Verificado que a instancia não está setado o gerenciamento automatico de memória(desabilitado o memory_target), segue:

SQL> show parameter memory

NAME TYPE VALUE
———————————— ———– ——————————
hi_shared_memory_address integer 0
shared_memory_address integer 0

SQL> show parameter sga

NAME TYPE VALUE
———————————— ———– ——————————
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 360M
sga_target big integer 360M
SQL>

– Para implementar HugePages no Linux, a Oracle recomenda que o valor de memlock do limits.conf seja maior que o tamanho da SGA, para uma SGA de 360MB apenas fiz 360 X 1024 para tranformar o em Kb, segue:

[root@hodb001vtr ~]# cat /etc/security/limits.conf |grep memlock
# – memlock – max locked-in-memory address space (KB)
oracle hard memlock 400000
oracle soft memlock 400000
[root@hodb001vtr ~]#

– A Oracle oferece 1 script que calcula o valor do hugepages conforme nota [401749.1]

[oracle@hodb001vtr ~]$ ./hugepages_settings.sh

This script is provided by Doc ID 401749.1 from My Oracle Support
(http://support.oracle.com) where it is intended to compute values for
the recommended HugePages/HugeTLB configuration for the current shared
memory segments. Before proceeding with the execution please make sure
that:
* Oracle Database instance(s) are up and running
* Oracle Database 11g Automatic Memory Management (AMM) is not setup
(See Doc ID 749851.1)
* The shared memory segments can be listed by command:
# ipcs -m

Press Enter to proceed…

Recommended setting: vm.nr_hugepages = 194
[oracle@hodb001vtr ~]$

– Vamos alterar o parametro do Kernel, segue os 2 modos:

echo 194 > /proc/sys/vm/nr_hugepages
Ou
sysctl -w vm.nr_hugepages=194

Depois recompilar

sysctl -p

– Reiniciar o Banco de Dados e checkar a funcionalidade do HugePages

[root@hodb001vtr ~]# cat /proc/meminfo |grep Huge
HugePages_Total: 194
HugePages_Free: 190 <– Free pages are less than total pages
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
[root@hodb001vtr ~]#

Caso não esteja efetive é necessário 1 reboot do servidor. Bom é isso.
Abraço!

Categorias:Oracle, SO
  1. Nenhum comentário ainda.
  1. No trackbacks yet.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: