Uso de Multi-Gen LRU (MGLRU) en kernels de AL2023 - Amazon Linux 2023

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Uso de Multi-Gen LRU (MGLRU) en kernels de AL2023

Multi-Gen LRU es un algoritmo moderno de recuperación de páginas del kernel de Linux, diseñado para mejorar el rendimiento de la administración de la memoria en situaciones de presión de memoria. Sustituye al mecanismo tradicional LRU (utilizado menos recientemente) que se utiliza para determinar qué páginas de memoria recuperar cuando el sistema se queda sin memoria.

El mecanismo LRU tradicional utiliza un modelo de dos listas (activa e inactiva) para realizar un seguimiento del uso de las páginas, lo que puede resultar ineficiente en las cargas de trabajo modernas con conjuntos de trabajo grandes. MGLRU lo sustituye por varias “generaciones” de páginas, lo que permite al núcleo tomar decisiones más inteligentes basándose en información detallada sobre la antigüedad.

Los beneficios de MGLRU incluyen:

  • Mejores decisiones de recuperación: identificación más precisa de las páginas frías (no utilizadas).

  • Menor latencia y mayor rendimiento: especialmente para cargas de trabajo con grandes espacios de direcciones o muchos procesos simultáneos.

  • Mejor retención de la memoria caché: las páginas que se utilizan recientemente tienen menos probabilidades de ser desalojadas prematuramente.

  • Diseño escalable y eficiente en cuanto al bloqueo: funciona mejor en máquinas con muchas CPU.

Configuración y ajuste

La configuración del kernel CONFIG_LRU_GEN está habilitada en los kernels de AL2023. Esto se compila en MGLRU pero no lo habilita de forma predeterminada.

MGLRU se puede activar y ajustar mediante el archivo /sys/kernel/mm/lru_gen/enabled. El valor es una máscara de bits. Se recomienda activar todos los componentes, a menos que algunos de ellos tengan efectos secundarios no deseados.

Bit Componentes
0 El interruptor principal de Multi-gen LRU.
1 Borrar el bit al que se ha accedido en las entradas de la tabla de hojas en lotes grandes, cuando la MMU lo configura (por ejemplo, en x86). En teoría, este comportamiento puede empeorar la contención de bloqueos (mmap_lock). Si está desactivado, Multi-gen LRU sufrirá una ligera degradación del rendimiento para las cargas de trabajo que asignan de forma contigua páginas activas, cuyos bits accedidos pueden borrarse con menos lotes más grandes.
2 Borrar también el bit de acceso en las entradas de la tabla de páginas que no son hojas, cuando la MMU lo establece (por ejemplo, en x86). Este comportamiento no se verificó en modelos x86 distintos de Intel y AMD. Si está desactivado, Multi-gen LRU sufrirá una degradación de rendimiento insignificante.
[yYnN] Active o desactive todos los componentes anteriores.

Un ejemplo de cómo se puede activar MGLRU:

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

Esto habilita todos los componentes:

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