Quero configurar o HugePages na minha instância Linux do Amazon Elastic Compute Cloud (Amazon EC2).
Resolução
Observação: é uma prática recomendada configurar o HugePages em um ambiente de teste e tomar o desempenho como referência antes de implantar o HugePages na produção. O tamanho do HugePage só pode ser de 2 MB ou 1 GB em sistemas x86_64. Para obter mais informações sobre o HugePages, consulte Configuring HugePages on Linux (Configurando o HugePages no Linux) no site da Oracle.
Pré-requisitos: para verificar se sua aplicação ou banco de dados oferece suporte ao HugePages, consulte seu fornecedor. Além disso, para descobrir a quantidade de memória disponível, execute o seguinte comando para verificar a memória total da instância do EC2:
free -m
Para configurar o HugePages em sua instância Linux, conclua as seguintes etapas:
-
Execute o comando a seguir para verificar se o seu kernel não está com o HugePages ativado:
sudo cat /proc/sys/vm/nr_hugepages
Se a saída do comando for 0, o HugePages não está ativado.
-
Para calcular o número de HugePages que você precisa, use a seguinte fórmula:<br id=hardline_break/>
Número de HugePages = Memória necessária / Tamanho do HugePage<br id=hardline_break/>
Observação: arredonde o resultado para garantir que você crie páginas suficientes.
-
Execute o comando a seguir para ativar o HugePages e definir o valor do parâmetro do kernel:
sudo sysctl -w vm.nr_hugepages=2048
Observação: substitua 2048 pelo número de HugePages que você calculou.<br id=hardline_break/>
Exemplo de saída:
vm.nr_hugepages = 2048
-
Para verificar se o sistema aloca HugePages após a reinicialização, adicione a seguinte entrada ao arquivo /etc/sysctl.conf:
sudo echo "vm.nr_hugepages=2048" >> /etc/sysctl.conf
Observação: substitua 2048 pelo número de HugePages que você calculou.
-
Para verificar suas alterações, execute o seguinte comando:
sudo cat /etc/sysctl.conf
Na saída do comando, verifique se há um valor para vm.nr_hugepages.<br id=hardline_break/>
Exemplo de saída:
# sudo cat /etc/sysctl.conf
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
vm.zone_reclaim_mode=1
vm.nr_hugepages=2048
-
Reinicialize sua instância.
-
Execute novamente o comando a seguir para verificar o valor e a configuração do HugePages:
sudo cat /proc/sys/vm/nr_hugepages
Se a saída for o número de HugePages que você calculou, então o HugePages está ativado.<br id=hardline_break/>
Exemplo de saída:
# sudo cat /proc/sys/vm/nr_hugepages
2048
-
Para verificar as HugePages disponíveis em /proc/meminfo, execute o seguinte comando:
sudo grep Huge /proc/meminfo
Exemplo de saída:
# sudo grep Huge /proc/meminfo
HugePages_Total: 2048
HugePages_Free: 2048
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
Para obter definições de cada valor do HugePages, consulte HugePages em kernel.org.
Para desativar o HugePages, conclua as seguintes etapas:
-
Execute o seguinte comando para redefinir nr_hugepages para 0:
sudo sysctl -w vm.nr_hugepages=0
-
Remova a seguinte entrada de sysctl.conf:
sudo echo "vm.nr_hugepages=2048" >> /etc/sysctl.conf
-
Reinicialize sua instância.