

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 kernels AL2023
<a name="kernel-mglru-al2023"></a>

 O [LRU multigeracional](https://docs.kernel.org/admin-guide/mm/multigen_lru.html) é um algoritmo moderno de recuperação de páginas no kernel do Linux, projetado para melhorar o desempenho do gerenciamento de memória sob pressão da memória. Ele substitui o mecanismo tradicional de LRU (menos acessado recentemente) usado para determinar quais páginas da memória devem ser recuperadas quando o sistema está com pouca memória. 

 O mecanismo tradicional de LRU usa um modelo de duas listas (ativa e inativa) para rastrear o uso de páginas, o que pode se tornar ineficiente em workloads modernas com grandes conjuntos de trabalho. O MGLRU substitui esse método 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 throughput:** especialmente para workloads 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 name="kernel-mglru-config-2023"></a>

 A configuração do kernel `CONFIG_LRU_GEN` está habilitada nos AL2023 kernels. Ela é compilada no MGLRU, mas não o habilita por padrão. 

 O MGLRU pode ser habilitado 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 interruptor principal para o LRU multigeracional. | 
| 1 |  Limpando o bit acessado nas entradas da tabela de páginas folhas em grandes lotes, quando o MMU o definir (por exemplo, em x86). Teoricamente, esse comportamento pode piorar a contenção de bloqueios (mmap\$1lock). Se estiver desabilitado, o LRU multigeracional sofrerá uma pequena degradação de desempenho para workloads 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 nas entradas da tabela de páginas não folhas, quando o MMU o definir (por exemplo, em x86). Esse comportamento não foi verificado em variações x86 além da Intel e da AMD. Se estiver desabilitado, o LRU multigeracional sofrerá uma degradação de desempenho insignificante.  | 
| [yYnN] |  Enable/disable todos os componentes acima.  | 

 Um exemplo de como o MGLRU pode ser habilitado: 

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

 Isto habilita todos os componentes: 

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