• Nenhum resultado encontrado

Regenerar a configuração GRUB2 usando o arquivo padrão editado: a Se seu sistema utiliza firmware BIOS, execute o seguinte comando:

No documento Red Hat Enterprise Linux 8 (páginas 195-200)

Pré-requisitos

CAPÍTULO 23. CONFIGURAÇÃO DE PÁGINAS ENORMES

2. Regenerar a configuração GRUB2 usando o arquivo padrão editado: a Se seu sistema utiliza firmware BIOS, execute o seguinte comando:

# grub2-mkconfig -o /boot/grub2/grub.cfg

b. Se seu sistema utiliza a estrutura UEFI, execute o seguinte comando: # grub2-mkconfig -o /boot/efi/efi/EFI/redhat/grub.cfg

3. Crie um novo arquivo chamado hugetlb-gigantic-pages.service no diretório /usr/lib/systemd/system/ e adicione o seguinte conteúdo:

[Unit]

Description=HugeTLB Gigantic Pages Reservation DefaultDependencies=no Before=dev-hugepages.mount ConditionPathExists=/sys/devices/system/node ConditionKernelCommandLine=hugepagesz=1G [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/lib/systemd/hugetlb-reserve-pages.sh [Install] WantedBy=sysinit.target

4. Crie um novo arquivo chamado hugetlb-reserve-pages.sh no diretório /usr/lib/systemd/ e adicione o seguinte conteúdo:

Ao adicionar o seguinte conteúdo, substitua number_of_pages pelo número de páginas de 1GB que você deseja reservar, e node pelo nome do nó no qual reservar estas páginas.

#!/bin/sh

nodes_path=/sys/devices/system/node/ if [ ! -d $nodes_path ]; then

echo "ERROR: $nodes_path does not exist" exit 1 fi reserve_pages() { echo $1 > $nodes_path/$2/hugepages/hugepages-1048576kB/nr_hugepages }

reserve_pages number_of_pages node

Por exemplo, para reservar duas páginas de 1GB em node0 e uma página de 1GB em node1, substituir o number_of_pages por 2 para node0 e 1 para node1:

reserve_pages 2 node0 reserve_pages 1 node1 5. Criar um roteiro executável:

# chmod x /usr/lib/systemd/hugetlb-reserve-pages.sh 6. Habilitar a reserva antecipada da bota:

NOTA

Você pode tentar reservar mais páginas de 1GB em tempo de execução,

escrevendo para nr_hugepages a qualquer momento. Entretanto, tais reservas podem falhar devido à fragmentação da memória. A maneira mais confiável de reservar páginas de 1GB é usando este script hugetlb-reserve-pages.sh, que roda cedo durante a inicialização.

Reservar páginas enormes estáticas pode efetivamente reduzir a quantidade de memória disponível para o sistema e impedi-lo de utilizar adequadamente toda a sua capacidade de memória. Embora um pool de páginas enormes reservadas possa ser benéfico para aplicações que o utilizam, um pool de páginas enormes reservadas ou não utilizadas eventualmente será prejudicial ao desempenho geral do sistema. Ao definir um grande pool de páginas reservadas, certifique-se de que o sistema possa utilizar adequadamente toda a sua capacidade de memória.

Recursos adicionais

Para mais informações, consulte a documentação pertinente do kernel, que está instalada no arquivo /usr/share/doc/kernel-doc-kernel_version/Documentation/vm/hugetlbpage.txt. Para mais informações, consulte a página de manual systemd.service.

23.5. CONFIGURAÇÃO DO HUGETLB EM TEMPO DE EXECUÇÃO

Este procedimento descreve como adicionar vinte 2048 kB páginas enormes a node2.

Procedimento

1. Exibir as estatísticas da memória: # numastat -cm | egrep 'Node|Huge'

Node 0 Node 1 Node 2 Node 3 Total add AnonHugePages 0 2 0 8 10

HugePages_Total 0 0 0 0 0 HugePages_Free 0 0 0 0 0 HugePages_Surp 0 0 0 0 0

2. Adicione o número de páginas enormes de um tamanho especificado ao nó:

# echo 20 > /sys/devices/system/node/node2/hugepages/hugepages-2048kB/nr_hugepages Para reservar páginas com base em suas exigências, substitua:

20 com o número de páginas enormes que você deseja reservar, 2048kB com o tamanho das enormes páginas,

node2 com o nó no qual você deseja reservar as páginas.

Etapas de verificação

Certifique-se de que o número de páginas enormes seja adicionado:

# numastat -cm | egrep 'Node|Huge'

Node 0 Node 1 Node 2 Node 3 Total AnonHugePages 0 2 0 8 10 HugePages_Total 0 0 40 0 40 HugePages_Free 0 0 40 0 40 HugePages_Surp 0 0 0 0 0 Recursos adicionais

Para mais informações, consulte a página de manual numastat.

23.6. POSSIBILITANDO ABRAÇOS TRANSPARENTES

O THP é habilitado por default no Red Hat Enterprise Linux 8. No entanto, você pode habilitar ou desabilitar o THP. Este procedimento descreve como habilitar o THP.

Procedimento

1. Verifique o status atual do THP:

# cat /sys/kernel/mm/transparent_hugepage/enabled 2. Habilite o THP:

# echo sempre > /sys/kernel/mm/transparent_hugepage/enabled

3. Para evitar que as aplicações destinem mais recursos de memória do que o necessário, desabilite as enormes páginas transparentes em todo o sistema e habilite-as apenas para as aplicações que o solicitem explicitamente através do site madvise:

# echo madvise > /sys/kernel/mm/transparent_hugepage/enabled

NOTA

S vezes, fornecer baixa latência para alocações de curta duração tem maior prioridade do que obter imediatamente o melhor desempenho com alocações de longa duração. Nesses casos, você pode desativar a compactação direta, deixando o THP ativado. A compactação direta é uma compactação síncrona de memória durante a enorme alocação de páginas. A desativação da compactação direta não oferece garantia de economia de memória, mas pode diminuir o risco de latências mais altas durante falhas freqüentes de página. Observe que se a carga de trabalho se beneficia significativamente do THP, o desempenho diminui. Desativar a compactação direta:

# echo madvise > /sys/kernel/mm/transparent_hugepage/defrag Recursos adicionais

Para mais informações, consulte a página de manual madvise.

O THP é habilitado por default no Red Hat Enterprise Linux 8. No entanto, você pode habilitar ou desabilitar o THP. Este procedimento descreve como desabilitar o THP.

Procedimento

1. Verifique o status atual do THP:

# cat /sys/kernel/mm/transparent_hugepage/enabled 2. Desativar o THP:

# echo nunca > /sys/kernel/mm/transparent_hugepage/enabled

23.8. IMPACTO DO TAMANHO DA PÁGINA NO TAMANHO DO BUFFER

DA TRADUÇÃO

A leitura de mapeamentos de endereços da tabela de páginas é demorada e barata, por isso as CPUs são construídas com um cache para endereços recém-utilizados, chamado de "Translation Lookaside Buffer" (TLB). Entretanto, a TLB padrão só pode armazenar em cache um certo número de

mapeamentos de endereços.

Se um mapeamento de endereço solicitado não estiver na TLB, chamado de TLB miss, o sistema ainda precisa ler a tabela de páginas para determinar o mapeamento de endereço físico para virtual. Devido à relação entre os requisitos de memória da aplicação e o tamanho das páginas usadas para o

mapeamento de endereços em cache, as aplicações com requisitos de memória grandes têm mais probabilidade de sofrer degradação de desempenho por falhas na TLB do que as aplicações com requisitos mínimos de memória. Portanto, é importante evitar falhas de TLB sempre que possível. Tanto as características HugeTLB como as Transparent Huge Page permitem que as aplicações utilizem páginas maiores do que 4 KB. Isto permite que endereços armazenados na TLB referenciem mais memória, o que reduz as falhas na TLB e melhora o desempenho da aplicação.

No documento Red Hat Enterprise Linux 8 (páginas 195-200)