Todos los productos
Search
Centro de documentos

Alibaba Cloud Linux:Tune performance with THP in Alibaba Cloud Linux

Última actualización: Sep 06, 2026

Transparent Huge Pages (THP) consolida páginas de 4 KB en páginas de 2 MB para reducir la presión sobre la TLB y mejorar la eficiencia del acceso a memoria. Este tema describe las opciones de configuración de THP, los ajustes de desfragmentación y las recomendaciones de optimización para Alibaba Cloud Linux.

Configuraciones de THP

En Alibaba Cloud Linux 2, el kernel 4.19.81-17.2 y versiones anteriores establecían transparent_hugepage/enabled como madvise de forma predeterminada (THP selectivo). A partir del kernel 4.19.91-18, el valor predeterminado cambió a always para ser compatible con Red Hat Enterprise Linux 7, CentOS 7 y Amazon Linux 2. El ajuste always habilita THP en todo el sistema.

Configuración global

Configure THP mediante /sys/kernel/mm/transparent_hugepage/enabled:

  • always

    THP se habilita de manera global.

  • never

    THP se deshabilita de manera global.

  • madvise

    THP se habilita únicamente en las regiones de memoria marcadas con MADV_HUGEPAGE a través de madvise().

    Nota

    La bandera MADV_HUGEPAGE indica al kernel que una aplicación tiene la intención de usar páginas enormes para una región de memoria específica.

Configuración de desfragmentación

Además de los ajustes globales de THP, aplican dos mecanismos de desfragmentación:

  • Desfragmentación de THP: fusiona páginas pequeñas dispersas en páginas enormes para reducir la fragmentación de la memoria.

  • Desfragmentación de khugepaged: el daemon khugepaged analiza la memoria periódicamente y combina páginas pequeñas dispersas en páginas enormes contiguas.

El daemon khugepaged fusiona páginas de forma proactiva en segundo plano. El ajuste defrag de THP controla la estrategia de desfragmentación durante la asignación de memoria.

Desfragmentación de THP

Controla el comportamiento de la memoria durante los fallos de página (Direct Reclaim, Background Reclaim, Direct Compaction, Background Compaction). Para configurarla, escriba en /sys/kernel/mm/transparent_hugepage/defrag:

  • always

    El sistema pausa el proceso solicitante y ejecuta Direct Reclaim y Direct Compaction de forma síncrona. Si hay suficiente memoria contigua disponible, se asigna la THP.

  • defer

    El sistema recurre a una página de 4 KB y activa kswapd (Background Reclaim) y kcompactd (Background Compaction). Más adelante, khugepaged fusiona las páginas de 4 KB en una THP de 2 MB cuando hay memoria contigua disponible.

  • madvise

    En las regiones de memoria marcadas con MADV_HUGEPAGE mediante madvise(), se comporta igual que always. Todas las demás regiones recurren a páginas de 4 KB.

    Nota

    En Alibaba Cloud Linux 2 con la versión de kernel 4.19.81-17.2 o posterior, el valor predeterminado del sistema para este ajuste es madvise.

  • defer+madvise

    Para las regiones MADV_HUGEPAGE (mediante madvise()), se comporta igual que always. En el resto de las regiones, se comporta igual que defer.

  • never

    Deshabilita la desfragmentación durante la asignación de memoria.

Desfragmentación de khugepaged

Principales configuraciones de khugepaged:

  • Habilitar o deshabilitar la función

    Archivo de configuración: /sys/kernel/mm/transparent_hugepage/khugepaged/defrag. Opciones:

    • 0

      Deshabilita la desfragmentación de khugepaged.

    • 1

      Cuando se establece en 1, el daemon khugepaged fusiona periódicamente páginas dispersas de 4 KB en THP de 2 MB durante los periodos de inactividad.

      Nota
      • En Alibaba Cloud Linux 2 con la versión de kernel 4.19.91-18 o posterior, el valor predeterminado del sistema es 1.

      • Este proceso adquiere bloqueos en la ruta de memoria. Si khugepaged analiza la memoria en momentos no óptimos, puede degradar el rendimiento de la aplicación.

  • Intervalo de reintento

    Tiempo que khugepaged espera antes de reintentar tras una asignación de THP con errores. Valor predeterminado: 60000 ms (60 segundos). Archivo de configuración: /sys/kernel/mm/transparent_hugepage/khugepaged/alloc_sleep_millisecs.

  • Intervalo de análisis

    Tiempo entre activaciones de khugepaged. Valor predeterminado: 10000 ms (10 segundos). Archivo de configuración: /sys/kernel/mm/transparent_hugepage/khugepaged/scan_sleep_millisecs.

  • Número de páginas por analizar

    Páginas analizadas en cada activación de khugepaged. Valor predeterminado: 4096. Archivo de configuración: /sys/kernel/mm/transparent_hugepage/khugepaged/pages_to_scan.

Recomendaciones de configuración de THP

Impacto de usar THP

THP mejora el rendimiento porque aumenta la tasa de aciertos de la TLB y reduce la sobrecarga de PTE, sin necesidad de modificar el código de la aplicación. Sin embargo, cuando la asignación de THP falla, los mecanismos de recuperación que se activan pueden degradar el rendimiento. La configuración predeterminada no es adecuada para todas las cargas de trabajo. Por ejemplo:

  • Si la desfragmentación de THP está en always, el sistema ejecuta Direct Reclaim o Direct Compaction de forma síncrona bajo presión de memoria, lo que provoca picos de latencia.

  • Con khugepaged habilitado (1), el daemon adquiere bloqueos en la ruta de memoria durante la consolidación. Esto puede degradar aplicaciones sensibles a la memoria si se activa en un momento inadecuado.

  • Si THP está habilitado pero ambas funciones de desfragmentación están deshabilitadas, la memoria agota las páginas libres más rápido que con páginas de 4 KB. Esto desencadena procesos de recuperación y compactación antes de tiempo.

Recomendaciones de configuración

El impacto de THP en el rendimiento depende de su carga de trabajo. Ajuste la configuración según los requisitos de su aplicación.

Importante

Respalde sus archivos de configuración o Create a snapshot for a disk antes de aplicar cambios.

  • Para equilibrar rendimiento y estabilidad, considere el ajuste experimental defer+madvise. Esta opción permite que kswapd, kcompactd y khugepaged gestionen la compactación en segundo plano sin bloquear las aplicaciones.

    sudo bash -c "echo 'defer+madvise' > /sys/kernel/mm/transparent_hugepage/defrag"
  • Si el uso de CPU de khugepaged es alto (cerca del 100 %), aumente su intervalo de análisis. Por ejemplo, establézcalo en 30 segundos:

    sudo sh -c 'echo 30000 > /sys/kernel/mm/transparent_hugepage/khugepaged/scan_sleep_millisecs'

    Como alternativa, deshabilite khugepaged:

    sudo sh -c 'echo 0 > /sys/kernel/mm/transparent_hugepage/khugepaged/defrag'
  • En cargas de trabajo donde la estabilidad es más importante que el rendimiento (como bases de datos de alto volumen, servicios sensibles a la latencia o asignaciones frecuentes de corta duración), deshabilite THP. Para deshabilitarlo en tiempo de ejecución:

    sudo sh -c 'echo "never" > /sys/kernel/mm/transparent_hugepage/enabled'
    Nota

    Este cambio aplica únicamente a la sesión actual y se revierte al reiniciar. Para deshabilitar THP de forma permanente, agregue un parámetro de arranque del kernel:

    sudo grubby --args="transparent_hugepage=never" --update-kernel="/boot/vmlinuz-$(uname -r)"
    sudo reboot

Comprobar el uso de THP

Compruebe el uso de THP a nivel de sistema o de proceso.

  • Nivel de sistema

    Los parámetros de THP afectan a todos los procesos. Compruebe el uso de THP en todo el sistema:

    cat /proc/meminfo | grep AnonHugePages

    Ejemplo de salida:

    AnonHugePages:    614400 kB
    Nota

    Un valor distinto de cero indica que el sistema está utilizando THP.

  • Nivel de proceso: las aplicaciones usan madvise() con MADV_HUGEPAGE para controlar THP en sus propias regiones de memoria sin afectar otros procesos. Compruebe el uso de THP de un proceso específico:

    sudo cat /proc/<PID>/smaps | grep AnonHugePages
    Nota

    Reemplace <PID> con el identificador real del proceso.

    Ejemplo de salida:

    AnonHugePages:         0 kB
    AnonHugePages:         0 kB
    AnonHugePages:         0 kB
    AnonHugePages:         0 kB
    AnonHugePages:         0 kB
    AnonHugePages:         0 kB
    AnonHugePages:         0 kB
    AnonHugePages:         0 kB
    AnonHugePages:         0 kB
    AnonHugePages:         0 kB

Referencias

  • La funcionalidad y los riesgos de THP se documentan en Transparent Hugepage Support.

  • Code Huge Page aplica el mismo principio de consolidación para mapear segmentos de código en regiones de 2 MB o más, lo que reduce los fallos de la TLB. Alibaba Cloud Linux también es compatible con Huge Pages para código.

  • Ajuste de THP en Red Hat Enterprise Linux 7: Configuring Transparent Huge Pages.