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:
- Parámetro de memoria virtual. Para más información, consulte Sección 22.3.1, “Parámetros de la memoria virtual”.
- Parámetro del sistema de archivos. Para más información, consulte Sección 22.3.2, “Parámetros del sistema de archivos”.
- Parámetro del núcleo. Para más información, consulte Sección 22.3.3, “Parámetros del núcleo”.
22.3.1. Parámetros de la memoria virtual Copiar enlaceEnlace copiado en el portapapeles!
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_memoryDefine 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_memoryse 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_kbytesEstablece el tamaño de la reserva de páginas libres. También es responsable de establecer los umbrales
min_page,low_page, yhigh_pageque 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.
AvisoLos valores extremos pueden ser perjudiciales para el rendimiento del sistema. Establecer
vm.min_free_kbytesa 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, establecervm.min_free_kbytesdemasiado 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_kbytestambién establece una marca de agua de recuperación de página, llamadamin_pages. Esta marca de agua se utiliza como factor para determinar las otras dos marcas de agua de memoria,low_pages, yhigh_pages, que rigen los algoritmos de recuperación de páginas.
/proc/PID/oom_adjEn el caso de que un sistema se quede sin memoria, y el parámetro
panic_on_oomesté fijado en 0, la funciónoom_killermata los procesos, empezando por el proceso que tenga el mayoroom_score, hasta que el sistema se recupere.El parámetro
oom_adjdetermina eloom_scorede un proceso. Este parámetro se establece por identificador de proceso. Un valor de -17 desactiva eloom_killerpara ese proceso. Otros valores válidos van de -16 a 15.
Los procesos creados por un proceso ajustado heredan la oom_score de ese proceso.
vm.swappinessEl 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.swappinesses 30.AvisoConfigurando el
vm.swappinessa0evita agresivamente el intercambio de memoria anónima a un disco, esto incrementa el riesgo de que los procesos sean eliminados por la funciónoom_killercuando se encuentran bajo cargas de trabajo intensivas de memoria o E/S.