FERRAMENTAS LINUX: Otimização de THP no Linux: Como a Nova Opção "defer" da Red Hat Reduz Desperdício de Memória

domingo, 27 de abril de 2025

Otimização de THP no Linux: Como a Nova Opção "defer" da Red Hat Reduz Desperdício de Memória

 

Kernel Linux


Descubra como a nova opção transparent_hugepage=defer no Linux 6.16 reduz desperdício de memória em cargas de trabalho como MySQL e jemalloc. Entenda os benefícios do THP adiado e quando usá-lo para otimizar desempenho.

 Problema do Consumo Excessivo de Memória no Linux

Você já notou um aumento inexplicável no consumo de RAM após migrar para versões mais recentes do Linux? 

Esse é um problema comum em cargas de trabalho intensivas, como bancos de dados (MySQL) e aplicações que usam alocadores como jemalloc

A principal culpada? A alocação agressiva de Transparent Huge Pages (THP).

Agora, a Red Hat está introduzindo uma solução inovadora: THP adiada (defer). Esse novo recurso, que deve ser integrado ao Linux 6.16, promete equilibrar desempenho e eficiência de memória.


O Que é THP (Transparent Huge Pages)?

THP é um mecanismo do kernel Linux que automaticamente converte páginas de memória padrão (4KB) em hugepages (2MB ou 1GB) para melhorar desempenho. No entanto, essa abordagem tem desvantagens:

  • Aumento no consumo de RAM (RSS – Resident Set Size)

  • Fragmentação de memória em certas cargas de trabalho

  • Degradação de desempenho em aplicações não otimizadas

Por isso, muitos administradores desativam THP com:


echo never > /sys/kernel/mm/transparent_hugepage/enabled

A Nova Solução: THP Adiada (defer)

O engenheiro da Red Hat, Nico Pache, desenvolveu um patch que adiciona uma terceira opção:


transparent_hugepage=defer

Como Funciona?

  1. MADV_HUGEPAGE: Se um mapeamento solicitar explicitamente hugepages, o kernel as aloca normalmente.

  2. Páginas Padrão: Caso contrário, o kernel usa páginas de 4KB por padrão.

  3. Khugepaged em Segundo Plano: O daemon khugepaged ainda pode colapsar páginas em hugepages posteriormente, se viável.

Vantagens Principais

✅ Redução do desperdício de memória (menos fragmentação)

✅ Melhor desempenho para apps não otimizados (sem THP forçada)

✅ THP ainda disponível para aplicações que se beneficiam dela

✅ Menor latência no tratamento de page faults (PF)


Impacto em Cargas de Trabalho Reais

A Red Hat identificou que clientes migrando do RHEL 7 para o RHEL 8 tiveram um aumento significativo no uso de RAM devido ao THP mais agressivo.

Casos de Uso Ideais para defer

  • Bancos de Dados (MySQL, PostgreSQL): Evita alocação desnecessária de THP.

  • Aplicações com Jemalloc: Reduz pressão na memória.

  • Ambientes Virtualizados: Melhor controle sobre alocação de páginas.


Quando o Patch Será Lançado?

O patch já está no branch MM de Andrew Morton e deve ser mesclado no Linux 6.16 (se nenhum problema for encontrado).


Conclusão: Vale a Pena Usar defer?

Se sua carga de trabalho sofre com alto consumo de RAM ou latência em page faultstransparent_hugepage=defer pode ser a solução ideal. Ele oferece um meio-termo entre always (THP agressivo) e never (desativado), garantindo eficiência sem sacrificar desempenho.


Você já testou THP em seus servidores? Como foi sua experiência?


Nenhum comentário:

Postar um comentário