O que é o THP na configuração de RAM do Linux e quando desabilitá-lo

Neste artigo eu explico o que é THP (Transparent Huge Pages) e como ele é usado para dinamizar o uso da RAM do seu sistema e quando é possível desabilitá-lo para melhorar o desempenho de máquinas modestas.

[ Hits: 108 ]

Por: Sidnei Serra em 16/09/2025 | Blog: https://www.youtube.com/channel/UCRgokKtNlttdmg2RJEa2VYw


O que é o THP, pra que serve e quando desabilitá-lo



O THP - Transparent Huges Pages - é um recurso de alocação de dados na memória RAM que "junta" os dados escritos na memória (mapeada em blocos de 4K) em páginas maiores (2MB) para economizar acessos e diminuir o trabalho em sistemas/aplicações que precisam de muita memória RAM. Isso funciona bem em sistemas, como falado, que tenham uma boa quantidade RAM - acima dos 8GB. Abaixo disso ou menos de 4GB usar o THP pode deixar o sistema mais lento ou menos responsivo. Em máquinas mais modestas essa lentidão (uso maior do processador e pressão para uso da swap por falta de RAM) pode ocorrer porque há um recurso chamado "khugepaged" que é uma espécie de "desfragmentador" como ocorre mais ou menos em discos normais: o THP procura alocar os dados dos blocos contíguos de 4K padrão da RAM para um "blocão" de 2MB e quando não consegue achar blocos suficientes o tal do khugepaged pode começar a mover dados para que seja possível a criação desses blocões e essa atividade faz uso da CPU aumentar.

Só como curiosidade para os chatos que vão perguntar "má puquê u sistêma já num fáiz a "fomatassão" da RAM em blócus maiores?", os blocos devem ter esse valor de 4K para evitar ao máximo a perda de espaço pois, se fossem maiores de modo "natural", um bloco que não é totalmente ocupado tem seu conteúdo dado como ocupado mesmo que ainda haja espaço dentro. Por exemplo, 20 bloquinhos de 4K comportam dados juntos de 80K com todos eles ocupados. Se os blocos fossem de 30K, dois blocos seriam ocupados e o terceiro teria uma perda de 10K (2 blocos de 30K cheios = 60K + 1 bloco de 30K só com 20K de dados perfazendo os 80K de dados). Pode parecer pouco mas na dinâmica de fluxo de dados isso faz uma grande diferença e o mesmo ocorre nos discos normais.

Deve-se desabilitar quando:
  • O sistema usa processadores antigos e/ou dual-core simples, sem HT;
  • RAM com desempenho baixo, como DDR1, DDR2 e até mesmo DDR3 abaixo de 1333Mhz;
  • Pouca memória RAM - algo como abaixo de 4GB. Entre 4GB e 8GB depende do uso da máquina;
  • A máquina é usada em trabalhos leves, como navegar na internet, edição básica de vídeos, ver vídeos, ouvir áudio, trabalhar com programas de Office e assim por diante;

Deve-se manter ativado quando:
  • O sistema usa processadores medianos, mesmo sendo dual-core (como um i5 até determinada geração sem HT) mas com HT ativado;
  • Mais de 8GB de RAM;
  • Máquinas usadas para trabalhar com VMs, docks, edição pesada de vídeos, jogos "cabeludos" ou trabalhos que demandam alto uso de memória RAM.

O uso do THP em máquinas modestas costuma pressionar o uso de memória RAM, forçando o uso da swap e prejudicando a alocação dos dados pois pode haver uma certa fragmentação de dados, habilitando então o khugepaged já explicado mais acima. Como o THP prefere páginas maiores (blocões) a tendência do sistema é manter esses blocos contíguos reservados, tirando RAM livre mesmo que tais blocões não estejam sendo usados e isso pode então forçar o uso da swap ou o sistema dizer que está sem memória RAM.

Para saber se o THP está ativo no seu sistema e qual o comportamento dele, digite os comandos:

cat /sys/kernel/mm/transparent_hugepage/enabled
cat /sys/kernel/mm/transparent_hugepage/defrag

Deverão aparecer as opções de madvise (usa o THP quando o programa "pede"), always (sempre ativo independente do programa pedir ou não) ou never (desativado).

Se a sua máquina está dentro das "especificações de pererequice" - CPU modesta ou antiga (dual-core simples sem HT), pouca memória, memória DDR1, DDR2 ou mesmo DDR3 (essa abaixo de 1333Mhz), uso do sistema de modo "leve" para o básico/normal - você pode experimentar desabilitar o THP. Abra o Terminal e digite:

sudo nano /etc/systemd/system/disable-thp.service

Coloque dentro:

#########################################
[Unit]
Description=Disable Transparent Huge Pages (THP)
DefaultDependencies=no
After=sysinit.target local-fs.target
Before=basic.target

[Service]
Type=oneshot
ExecStart=/bin/sh -c 'echo never > /sys/kernel/mm/transparent_hugepage/enabled'
ExecStart=/bin/sh -c 'echo never > /sys/kernel/mm/transparent_hugepage/defrag'
ExecStart=/bin/sh -c 'echo 0 > /sys/kernel/mm/transparent_hugepage/khugepaged/defrag'
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
################################################

Salve e feche com ctrl+o/ctrl+x. Depois, no Terminal:
sudo systemctl daemon-reexec
sudo systemctl enable --now disable-thp.service

Reinicie a máquina. Repetindo os comandos dados mais acima para ver se o THP está ativo deverá aparecer [never] nos dois comandos.

Não desabilite o THP se você tem uma máquina mediana com mais de 16GB (DDR3 1666Mhz ou DDR4) uma vez que o THP serve para aumentar a dinâmica do fluxo de dados da sua RAM; isso porque com muita RAM não é difícil para o sistema "achar" blocos contínuos de 4K para usá-los como blocões de 2MB e, mesmo que o sistema reserve tais blocões para uso posterior, a pressão na RAM é muito menor mesmo que o khugepaged seja ativado para desfragmentar a RAM uma vez que um processador mediano para bom faz isso com um pé nas costas, diferentemente de um mais perereca.
   

Páginas do artigo
   1. O que é o THP, pra que serve e quando desabilitá-lo
Outros artigos deste autor

Comparação entre os escalonadores BFQ e MQ-Deadline (acesso a disco) no Arch e Debian

Conciliando o uso da ZRAM e SWAP em disco na sua máquina

Mitigação - O que é e quando é "seguro" desabilitar

Máquina perereca - até onde é possível o uso de Linux?

Leitura recomendada

Apache básico

Arch BSD - Instalação em VirtualBox

Otimizando seu web server com Apache2 + Lighttpd

SSH - Conexão sem senha

PuTTY - Release 0.66 - Parte V - (Final)

  
Comentários

Nenhum coment�rio foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts