Diferencia entre revisiones de «THP Service»

De jagfloriano.com
Ir a la navegaciónIr a la búsqueda
Sin resumen de edición
 
(No se muestra una edición intermedia del mismo usuario)
Línea 25: Línea 25:
Por este motivo, en muchos entornos empresariales se requiere '''deshabilitar THP de forma persistente'''.
Por este motivo, en muchos entornos empresariales se requiere '''deshabilitar THP de forma persistente'''.


---


== ¿Qué hace este rol? ==
== ¿Qué hace este rol? ==
Línea 41: Línea 40:
* Permite cambiar el estado de THP modificando una única variable
* Permite cambiar el estado de THP modificando una única variable


---


== Ventajas del enfoque ==
== Ventajas del enfoque ==
Línea 54: Línea 52:
* Fácil de revertir
* Fácil de revertir


---
== Sistemas compatibles ==
* RHEL 8
* RHEL 9
Requisitos:
* Acceso como <code>root</code> (uso de <code>become: true</code>)
* Kernel Linux con soporte para THP
* Existencia de <code>/sys/kernel/mm/transparent_hugepage</code>
---
== Variables del rol ==
=== thp_state ===
Define el estado deseado de THP.
Valores posibles:
* <code>enabled</code>
* <code>disabled</code>
Valor por defecto:
<pre>
enabled
</pre>
---
=== thp_map ===
Mapa interno que traduce el estado lógico (<code>enabled</code> / <code>disabled</code>)
a los valores reales que se escriben en el sistema de ficheros <code>/sys</code>.
Valores por defecto:
<syntaxhighlight lang="yaml">
thp_map:
  enabled:
    enabled: "always"
    defrag: "always"
  disabled:
    enabled: "never"
    defrag: "never"
</syntaxhighlight>
Este diseño permite extender el rol fácilmente en el futuro.
---
=== thp_verify ===
Indica si, tras aplicar la configuración, se debe mostrar el estado actual de THP.
Valor por defecto:
<pre>
true
</pre>
---
== Ejemplo de uso ==
Playbook de ejemplo utilizando el rol:
<syntaxhighlight lang="yaml">
- hosts: all
  become: true
  roles:
    - role: transparent_huge_pages_service
      vars:
        # Descomentar solo una opción
        # thp_state: enabled
        # thp_state: disabled
</syntaxhighlight>
---
== Cuándo usar este rol ==
Este rol es especialmente útil en los siguientes escenarios:
* Servidores de bases de datos
* Clústeres (Pacemaker, Kubernetes, etc.)
* Sistemas con aplicaciones sensibles a latencia
* Estandarización de configuraciones en grandes entornos
* Hardening y buenas prácticas de rendimiento
---
== Conceptos que demuestra este rol ==
* Uso de <code>systemd oneshot services</code>
* Persistencia de configuraciones del kernel
* Abstracción mediante variables
* Idempotencia en Ansible
* Buen diseño de roles reutilizables
---


== Nota final ==
== Nota final ==

Revisión actual - 17:45 2 ene 2026

Rol Ansible: THP Service[editar]

Descripción[editar]

El rol THP Service se utiliza para gestionar el estado de Transparent Huge Pages (THP) en sistemas Linux mediante un único servicio systemd de tipo oneshot.

El objetivo principal del rol es permitir habilitar o deshabilitar THP de forma persistente utilizando una sola variable de Ansible, sin depender de scripts ad-hoc ni configuraciones manuales en cada arranque del sistema.

Repositorio del rol:

¿Qué son Transparent Huge Pages (THP)?[editar]

Transparent Huge Pages es una funcionalidad del kernel Linux que intenta mejorar el rendimiento utilizando páginas de memoria de mayor tamaño de forma automática.

Aunque puede ser beneficioso en algunos escenarios, en otros (bases de datos, aplicaciones Java, entornos de baja latencia, clústeres, etc.) puede provocar:

  • Latencias impredecibles
  • Penalización de rendimiento
  • Problemas de estabilidad

Por este motivo, en muchos entornos empresariales se requiere deshabilitar THP de forma persistente.


¿Qué hace este rol?[editar]

Este rol realiza las siguientes acciones:

  • Crea un servicio systemd llamado thp-configuration.service
  • El servicio se ejecuta una sola vez (oneshot)
  • Escribe los valores adecuados en:
    • /sys/kernel/mm/transparent_hugepage/enabled
    • /sys/kernel/mm/transparent_hugepage/defrag
  • Garantiza que la configuración se aplique:
    • En tiempo de ejecución
    • En cada arranque del sistema
  • Permite cambiar el estado de THP modificando una única variable


Ventajas del enfoque[editar]

Este diseño aporta varias ventajas frente a métodos tradicionales:

  • No depende de scripts en /etc/rc.local
  • No requiere tareas periódicas (cron)
  • Es compatible con systemd
  • Es idempotente
  • Fácil de auditar
  • Fácil de revertir


Nota final[editar]

Este rol no pretende decidir si THP debe estar habilitado o no, sino proporcionar un mecanismo limpio, controlado y reutilizable para gestionar su estado de forma coherente en toda la infraestructura.