Usando o Multi-Gen LRU (MGLRU) em 023 kernels AL2 - Amazon Linux 2023

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Usando o Multi-Gen LRU (MGLRU) em 023 kernels AL2

O Multi-Gen LRU é um algoritmo moderno de recuperação de páginas no kernel Linux, projetado para melhorar o desempenho do gerenciamento de memória sob pressão de memória. Ele substitui o mecanismo tradicional LRU (menos usado recentemente) usado para determinar quais páginas de memória devem ser recuperadas quando o sistema está com pouca memória.

O mecanismo tradicional da LRU usa um modelo de duas listas (ativo e inativo) para rastrear o uso da página, o que pode se tornar ineficiente em cargas de trabalho modernas com grandes conjuntos de trabalho. O MGLRU substitui isso por várias “gerações” de páginas, permitindo que o kernel tome decisões mais inteligentes com base em informações mais refinadas sobre o envelhecimento.

Os benefícios do MGLRU incluem:

  • Melhores decisões de recuperação: identificação mais precisa de páginas frias (não utilizadas).

  • Menor latência e melhor taxa de transferência: especialmente para cargas de trabalho com grandes espaços de endereço ou muitos processos simultâneos.

  • Retenção de cache aprimorada: páginas usadas recentemente têm menos probabilidade de serem removidas prematuramente.

  • Design escalável e eficiente em termos de bloqueio: funciona melhor em máquinas com muitos. CPUs

Configuração e ajuste

A configuração do kernel CONFIG_LRU_GEN está habilitada em AL2 023 kernels. Isso é compilado no MGLRU, mas não o habilita por padrão.

O MGLRU pode ser ativado e ajustado usando o arquivo. /sys/kernel/mm/lru_gen/enabled O valor é uma máscara de bits. Recomenda-se ativar todos os componentes, a menos que alguns deles tenham efeitos colaterais indesejáveis.

Bit Componentes
0 O switch principal para a LRU de várias gerações.
1 Limpando o bit acessado nas entradas da tabela da página folha em grandes lotes, quando o MMU o define (por exemplo, em x86). Teoricamente, esse comportamento pode piorar a contenção de bloqueios (). mmap_lock Se estiver desativada, a LRU de várias gerações sofrerá uma pequena degradação de desempenho para cargas de trabalho que mapeiam páginas ativas de forma contígua, cujos bits acessados podem ser eliminados por menos lotes maiores.
2 Limpando também o bit acessado em entradas de tabela de páginas que não sejam folhas, quando o MMU o define (por exemplo, em x86). Esse comportamento não foi verificado em variedades x86 além da Intel e da AMD. Se estiver desativada, a LRU de várias gerações sofrerá uma degradação insignificante do desempenho.
[yYnN] Enable/disable todos os componentes acima.

Um exemplo de como o MGLRU pode ser ativado:

[ec2-user ~]$ echo y >/sys/kernel/mm/lru_gen/enabled

Isso permite que todos os componentes:

[ec2-user ~]$ cat /sys/kernel/mm/lru_gen/enabled 0x0007