Red Hat Training

A Red Hat training course is available for RHEL 8

22.3. Optimización de la utilización de la memoria de un sistema

Esta sección proporciona información sobre los parámetros del kernel relacionados con la memoria y cómo puede utilizarlos para mejorar la utilización de la memoria del sistema. Los siguientes son los parámetros del kernel relacionados con la memoria disponibles en Red Hat Enterprise Linux 8:

22.3.1. Parámetros de la memoria virtual

Los parámetros de la memoria virtual se encuentran en el directorio /proc/sys/vm a menos que se indique lo contrario.

Los siguientes son los parámetros de memoria virtual disponibles:

vm.dirty_ratio
Es un valor porcentual. Cuando se modifica este porcentaje de la memoria total del sistema, el sistema comienza a escribir las modificaciones en el disco con la operación pdflush. El valor por defecto es el 20 por ciento.
vm.dirty_background_ratio
Un valor porcentual. Cuando se modifica este porcentaje de la memoria total del sistema, el sistema comienza a escribir las modificaciones en el disco en segundo plano. El valor por defecto es el 10 por ciento.
vm.overcommit_memory

Define las condiciones que determinan si una solicitud de memoria grande es aceptada o denegada.El valor por defecto es 0.

Por defecto, el kernel realiza un manejo heurístico de la sobrecarga de memoria estimando la cantidad de memoria disponible y fallando las peticiones que son demasiado grandes. Sin embargo, dado que la memoria se asigna utilizando una heurística en lugar de un algoritmo preciso, es posible sobrecargar la memoria con esta configuración.

Ajuste del valor del parámetro overcommit_memory:

  • Cuando este parámetro se establece en 1, el kernel no realiza ninguna gestión de sobrecompromiso de memoria. Esto aumenta la posibilidad de sobrecarga de memoria, pero mejora el rendimiento de las tareas que requieren mucha memoria.
  • Cuando este parámetro se establece en 2, el kernel deniega las solicitudes de memoria iguales o mayores que la suma del espacio de intercambio total disponible y el porcentaje de RAM física especificado en overcommit_ratio. Esto reduce el riesgo de sobrecompromiso de memoria, pero se recomienda sólo para sistemas con áreas de swap mayores que su memoria física.
vm.overcommit_ratio
Especifica el porcentaje de RAM física que se tiene en cuenta cuando overcommit_memory se establece en 2. El valor por defecto es 50.
vm.max_map_count
Define el número máximo de áreas del mapa de memoria que puede utilizar un proceso. El valor por defecto es 65530. Aumente este valor si su aplicación necesita más áreas de mapa de memoria.
vm.min_free_kbytes

Establece el tamaño de la reserva de páginas libres. También es responsable de establecer los umbrales min_page, low_page, y high_page que gobiernan el comportamiento de los algoritmos de recuperación de páginas del núcleo de Linux. También especifica el número mínimo de kilobytes a mantener libres en todo el sistema. Esto calcula un valor específico para cada zona de memoria baja, a cada una de las cuales se le asigna un número de páginas libres reservadas en proporción a su tamaño.

Ajuste del valor del parámetro vm.min_free_kbytes:

  • Aumentar el valor del parámetro reduce efectivamente la memoria utilizable del conjunto de trabajo de la aplicación. Por lo tanto, es posible que desee utilizarlo sólo para las cargas de trabajo impulsadas por el kernel, donde los búferes de los controladores necesitan ser asignados en contextos atómicos.
  • Disminuir el valor del parámetro puede hacer que el kernel sea incapaz de atender las peticiones del sistema, si la memoria se vuelve muy disputada en el sistema.

    Aviso

    Los valores extremos pueden ser perjudiciales para el rendimiento del sistema. Establecer vm.min_free_kbytes a un valor extremadamente bajo impide que el sistema recupere la memoria de forma efectiva, lo que puede provocar caídas del sistema y fallos en el servicio de interrupciones u otros servicios del kernel. Sin embargo, establecer vm.min_free_kbytes demasiado alto aumenta considerablemente la actividad de recuperación del sistema, causando latencia de asignación debido a un falso estado de recuperación directa. Esto puede hacer que el sistema entre en un estado de falta de memoria inmediatamente.

    El parámetro vm.min_free_kbytes también establece una marca de agua de recuperación de página, llamada min_pages. Esta marca de agua se utiliza como factor para determinar las otras dos marcas de agua de memoria, low_pages, y high_pages, que rigen los algoritmos de recuperación de páginas.

/proc/PID/oom_adj

En el caso de que un sistema se quede sin memoria, y el parámetro panic_on_oom esté fijado en 0, la función oom_killer mata los procesos, empezando por el proceso que tenga el mayor oom_score, hasta que el sistema se recupere.

El parámetro oom_adj determina el oom_score de un proceso. Este parámetro se establece por identificador de proceso. Un valor de -17 desactiva el oom_killer para ese proceso. Otros valores válidos van de -16 a 15.

Nota

Los procesos creados por un proceso ajustado heredan la oom_score de ese proceso.

vm.swappiness

El valor de swappiness, que va de 0 a 100, controla el grado en que el sistema favorece la recuperación de memoria del pool de memoria anónima, o del pool de memoria caché de páginas.

Ajuste del valor del parámetro swappiness:

  • Los valores más altos favorecen a las cargas de trabajo impulsadas por el mapeo de archivos, mientras que intercambian la memoria anónima de RAM de los procesos a los que se accede menos activamente. Esto es útil para los servidores de archivos o aplicaciones de streaming que dependen de los datos, de los archivos en el almacenamiento, para residir en la memoria para reducir la latencia de E/S para las solicitudes de servicio.
  • Los valores bajos favorecen las cargas de trabajo de mapeo anónimo mientras se recupera la caché de páginas (memoria de mapeo de archivos). Esta configuración es útil para las aplicaciones que no dependen en gran medida de la información del sistema de archivos, y utilizan en gran medida la memoria privada y asignada dinámicamente, como las aplicaciones matemáticas y de cálculo numérico, y algunos supervisores de virtualización de hardware como QEMU.

    El valor por defecto del parámetro vm.swappiness es 30.

    Aviso

    Configurando el vm.swappiness a 0 evita agresivamente el intercambio de memoria anónima a un disco, esto incrementa el riesgo de que los procesos sean eliminados por la función oom_killer cuando se encuentran bajo cargas de trabajo intensivas de memoria o E/S.

Recursos adicionales