Todos os produtos
Search
Central de documentação

Alibaba Cloud Linux:Tune performance with THP in Alibaba Cloud Linux

Última atualização: Jun 29, 2026

As Transparent Huge Pages (THP) consolidam páginas de 4 KB em páginas de 2 MB para reduzir a pressão sobre a TLB e melhorar a eficiência do acesso à memória. Este tópico aborda as opções de configuração de THP, definições de desfragmentação e recomendações de ajuste para o Alibaba Cloud Linux.

Configurações de THP

No Alibaba Cloud Linux 2, o kernel 4.19.81-17.2 e versões anteriores definiam transparent_hugepage/enabled como madvise (THP seletivo). A partir do kernel 4.19.91-18, o padrão mudou para always visando compatibilidade com Red Hat Enterprise Linux 7, CentOS 7 e Amazon Linux 2. A configuração always ativa o THP em todo o sistema.

Configuração global

Configure o THP por meio de /sys/kernel/mm/transparent_hugepage/enabled:

  • always

    O THP está ativado globalmente.

  • never

    O THP está desativado globalmente.

  • madvise

    O THP é ativado apenas para regiões de memória marcadas com MADV_HUGEPAGE via madvise().

    Nota

    A flag MADV_HUGEPAGE sinaliza ao kernel que uma aplicação pretende usar huge pages para uma região de memória específica.

Configuração de desfragmentação

Além das configurações globais de THP, dois mecanismos de desfragmentação também se aplicam:

  • Desfragmentação de THP: mescla pequenas páginas dispersas em huge pages para reduzir a fragmentação da memória.

  • Desfragmentação khugepaged: o daemon khugepaged verifica periodicamente a memória e mescla pequenas páginas dispersas em huge pages contíguas.

O daemon khugepaged mescla páginas proativamente em segundo plano. A configuração defrag do THP controla a estratégia de desfragmentação no momento da alocação.

Desfragmentação de THP

Controla o comportamento da memória durante falhas de página (Direct Reclaim, Background Reclaim, Direct Compaction, Background Compaction). Configure escrevendo em /sys/kernel/mm/transparent_hugepage/defrag:

  • always

    O sistema pausa o processo solicitante e executa Direct Reclaim e Direct Compaction síncronos. Se houver memória contígua suficiente disponível, a THP será alocada.

  • defer

    Retorna para uma página de 4 KB e aciona o kswapd (Background Reclaim) e o kcompactd (Background Compaction). Posteriormente, o khugepaged mescla as páginas de 4 KB em uma THP de 2 MB quando houver memória contígua disponível.

  • madvise

    Para regiões de memória marcadas com MADV_HUGEPAGE via madvise(), comporta-se como always. Todas as outras regiões retornam para páginas de 4 KB.

    Nota

    No Alibaba Cloud Linux 2 com versão de kernel 4.19.81-17.2 e posterior, o padrão do sistema para esta configuração é madvise.

  • defer+madvise

    Para regiões MADV_HUGEPAGE (via madvise()), comporta-se como always. Para todas as outras regiões, comporta-se como defer.

  • never

    Desativa a desfragmentação no momento da alocação.

Desfragmentação khugepaged

Principais configurações do khugepaged:

  • Ativar ou desativar o recurso

    Arquivo de configuração: /sys/kernel/mm/transparent_hugepage/khugepaged/defrag. Opções:

    • 0

      Desativa a desfragmentação do khugepaged.

    • 1

      Quando definido como 1, o daemon khugepaged mescla periodicamente páginas de 4 KB dispersas em THPs de 2 MB durante períodos de ociosidade.

      Nota
      • No Alibaba Cloud Linux 2 com versão de kernel 4.19.91-18 e posterior, o padrão do sistema é 1.

      • Esta operação adquire locks no caminho de memória. Se o khugepaged executar varreduras em momentos inadequados, isso pode degradar o desempenho da aplicação.

  • Intervalo de nova tentativa

    Tempo que o khugepaged aguarda antes de tentar novamente após uma falha na alocação de THP. Padrão: 60000 ms (60 segundos). Arquivo de configuração: /sys/kernel/mm/transparent_hugepage/khugepaged/alloc_sleep_millisecs.

  • Intervalo de varredura

    Tempo entre as ativações do khugepaged. Padrão: 10000 ms (10 segundos). Arquivo de configuração: /sys/kernel/mm/transparent_hugepage/khugepaged/scan_sleep_millisecs.

  • Número de páginas a verificar

    Páginas verificadas por ativação do khugepaged. Padrão: 4096. Arquivo de configuração: /sys/kernel/mm/transparent_hugepage/khugepaged/pages_to_scan.

Recomendações de configuração de THP

Impacto do uso de THP

O THP melhora o desempenho aumentando as taxas de acerto da TLB e reduzindo a sobrecarga de PTE, sem exigir alterações no código da aplicação. No entanto, quando a alocação de THP falha, os mecanismos de recuperação acionados podem degradar o desempenho. A configuração padrão não atende a todas as cargas de trabalho. Por exemplo:

  • Com a desfragmentação de THP definida como always, o sistema executa Direct Reclaim ou Direct Compaction síncronos sob pressão de memória, causando picos de latência.

  • Com o khugepaged ativado (1), o daemon adquire locks no caminho de memória durante a consolidação, o que pode degradar aplicações sensíveis à memória se for acionado no momento errado.

  • Com o THP ativado, mas ambos os recursos de desfragmentação desativados, a memória esgota as páginas livres mais rapidamente do que com páginas de 4 KB, acionando recuperação e compactação antecipadamente.

Recomendações de configuração

O impacto do THP no desempenho depende da sua carga de trabalho. Ajuste a configuração com base nos requisitos da sua aplicação.

Importante

Faça backup dos seus arquivos de configuração ou Crie um snapshot para um disco antes de fazer alterações.

  • Para equilibrar desempenho e estabilidade, considere a configuração experimental defer+madvise. Isso permite que kswapd, kcompactd e khugepaged lidem com a compactação em segundo plano sem bloquear aplicações.

    sudo bash -c "echo 'defer+madvise' > /sys/kernel/mm/transparent_hugepage/defrag"
  • Se o uso de CPU do khugepaged estiver alto (próximo de 100%), aumente seu intervalo de varredura. Por exemplo, defina-o para 30 segundos:

    sudo sh -c 'echo 30000 > /sys/kernel/mm/transparent_hugepage/khugepaged/scan_sleep_millisecs'

    Alternativamente, desative o khugepaged:

    sudo sh -c 'echo 0 > /sys/kernel/mm/transparent_hugepage/khugepaged/defrag'
  • Para cargas de trabalho onde a estabilidade é mais importante que o throughput — como bancos de dados de alto volume, serviços sensíveis à latência ou alocações frequentes de curta duração — desative o THP. Para desativar em tempo de execução:

    sudo sh -c 'echo "never" > /sys/kernel/mm/transparent_hugepage/enabled'
    Nota

    Essa alteração aplica-se apenas à sessão atual e é revertida na reinicialização. Para desativar o THP permanentemente, adicione um parâmetro de inicialização do kernel:

    sudo grubby --args="transparent_hugepage=never" --update-kernel="/boot/vmlinuz-$(uname -r)"
    sudo reboot

Verificar o uso de THP

Verifique o uso de THP no nível do sistema ou do processo.

  • Nível do sistema

    Os parâmetros de THP afetam todos os processos. Verifique o uso de THP em todo o sistema:

    cat /proc/meminfo | grep AnonHugePages

    Exemplo de saída:

    AnonHugePages:    614400 kB
    Nota

    Um valor diferente de zero indica que THPs estão em uso no sistema.

  • Nível do processo: as aplicações usam madvise() com MADV_HUGEPAGE para controlar o THP em suas próprias regiões de memória sem afetar outros processos. Verifique o uso de THP para um processo específico:

    sudo cat /proc/<PID>/smaps | grep AnonHugePages
    Nota

    Substitua <PID> pelo ID real do processo.

    Exemplo de saída:

    AnonHugePages:         0 kB
    AnonHugePages:         0 kB
    AnonHugePages:         0 kB
    AnonHugePages:         0 kB
    AnonHugePages:         0 kB
    AnonHugePages:         0 kB
    AnonHugePages:         0 kB
    AnonHugePages:         0 kB
    AnonHugePages:         0 kB
    AnonHugePages:         0 kB

Referências

  • A funcionalidade e os riscos do THP estão documentados em Transparent Hugepage Support.

  • O Code Huge Page aplica o mesmo princípio de consolidação para mapear segmentos de código em regiões de 2 MB ou mais, reduzindo as falhas de TLB. O Alibaba Cloud Linux também oferece suporte a Huge Pages para código.

  • Ajuste de THP no Red Hat Enterprise Linux 7: Configuring Transparent Huge Pages.