Comprensión de la VM.mancha

Comprensión de la VM.mancha
El kernel de Linux es una pieza de software bastante compleja con una larga lista de componentes como módulos, interfaces y archivos de configuración [1]. Estos componentes se pueden configurar con valores específicos para lograr un comportamiento o modo de operación deseado del componente [2,3,4]. Posteriormente, esta configuración influye directamente en el comportamiento y el rendimiento de su sistema Linux en su conjunto.

Los valores actuales del kernel de Linux y sus componentes se hacen accesibles utilizando una interfaz especial: el directorio /proc [5]. Este es un sistema de archivos virtual en el que los archivos individuales se llenan con valores en tiempo real. Los valores representan el estado real en el que está el núcleo de Linux. Puede acceder a los archivos individuales en el directorio /PROC utilizando el comando CAT de la siguiente manera:

$ Cat/Proc/Sys/Net/Core/SomaxConn
128
ps

Uno de estos parámetros del núcleo se llama VM.mancha. "Controla el peso relativo dado al intercambio de la memoria de tiempo de ejecución, en lugar de eliminar las páginas de memoria desde el caché de la página del sistema" [6]. Comenzando con Linux Kernel liberaciones 2.6 Este valor se introdujo. Se almacena en el archivo/proc/sys/vm/swappiness .

Usando intercambio

El uso de swap [6] fue una parte esencial del uso de máquinas UNIX más pequeñas a principios de la década de 1990. Todavía es útil (como tener una llanta de repuesto en su vehículo) cuando la memoria desagradable interfiere con su trabajo. La máquina se reducirá la velocidad, pero en la mayoría de los casos seguirá siendo utilizable para finalizar su tarea asignada. Los desarrolladores de software gratuito han estado haciendo grandes avances para reducir y eliminar los errores del programa, por lo que antes de cambiar los parámetros del núcleo, considere la actualización de una versión más nueva de su aplicación y bibliotecas relacionadas primero.

Si ejecuta numerosas tareas, las tareas inactivas se cambiarán al disco, haciendo un mejor uso de la memoria con sus tareas activas. La edición de video y otras aplicaciones de gran consumo de memoria a menudo tienen cantidades recomendadas de memoria y espacio en disco. Si tiene una máquina más antigua que no puede tener una actualización de memoria, entonces hacer más intercambio disponible podría ser una buena solución temporal para usted (ver [6] sobre cómo aprender más sobre eso).

El intercambio puede ocurrir en una partición separada o en un archivo de intercambio. La partición es más rápida y favorece muchas aplicaciones de bases de datos. El enfoque del archivo es más flexible (consulte el paquete Dphys-SwapFile en Debian GNU/Linux [7]). Tener más de un dispositivo físico para el intercambio permite que el kernel de Linux elija el dispositivo que esté más rápidamente disponible (latencia menor).

VM.mancha

El valor predeterminado de VM.Swappiness tiene 60 años y representa el porcentaje de la memoria libre antes de activar el intercambio. Cuanto menor sea el valor, menos intercambio se usa y más páginas de memoria se mantienen en la memoria física.

El valor de 60 es un compromiso que funciona bien para los sistemas de escritorio modernos. En su lugar, un valor menor es una opción recomendada para un sistema de servidor. Como señala el manual de ajuste de rendimiento de Red Hat [8], se recomienda un valor de intercambio más pequeño para las cargas de trabajo de la base de datos. Por ejemplo, para las bases de datos de Oracle, Red Hat recomienda un valor de intercambio de 10. Por el contrario, para las bases de datos MariadB, se recomienda establecer un intercambio en un valor de 1 [9].

Cambiar el valor influye directamente en el rendimiento del sistema Linux. Estos valores se definen:

* 0: el intercambio es deshabilitado
* 1: cantidad mínima de intercambio sin deshabilitarlo por completo
* 10: Valor recomendado para mejorar el rendimiento cuando existe una memoria suficiente en un sistema
* 100: intercambio agresivo

Como se muestra arriba, el comando CAT ayuda a leer el valor. Además, el comando SYSCTL le da el mismo resultado:

# SYSCTL VM.mancha
VM.Swappiness = 60
#

Tenga en cuenta que el comando SYSCTL solo está disponible para un usuario administrativo. Para establecer el valor, establezca temporalmente el valor en el sistema de archivos /PROC de la siguiente manera:

# echo 10>/proc/sys/vm/swappiness

Como alternativa, puede usar el comando sysctl de la siguiente manera:

# SYSCTL -W VM.Swappiness = 10

Para establecer el valor de forma permanente, abra el archivo /etc /sysctl.Conf como usuario administrativo y agregue la siguiente línea:

VM.Swappiness = 10

Conclusión

Cada vez más usuarios de Linux ejecutan máquinas virtuales. Cada uno tiene su propio núcleo además del hipervisor que realmente controla el hardware. Las máquinas virtuales tienen discos virtuales creados para ellos, por lo que cambiar la configuración dentro de la máquina virtual tendrá resultados indeterminados. Experimente primero con cambiar los valores del núcleo hipervisor, ya que en realidad controla el hardware en su máquina.

Para máquinas más antiguas que ya no se pueden actualizar (ya tienen la memoria máxima soportada), puede considerar colocar un disco de estado sólido pequeño en la máquina para usarlo como un dispositivo de intercambio adicional. Esto obviamente se convertirá en un consumible a medida que las células de memoria fallarán de muchas escrituras, pero puede extender la vida útil de una máquina durante un año o más por muy bajo costo. La latencia más baja y las lecturas rápidas darán un rendimiento mucho mejor que el intercambio a un disco ordinario, dando resultados intermedios a RAM. Esto debería permitirle usar una VM algo más baja.Valores de intercambio para un rendimiento óptimo. Tendrás que experimentar. Los dispositivos SSD están cambiando rápidamente.

Si tiene más de un dispositivo de intercambio, considere convertirlo en un dispositivo RAID para rayar los datos en los dispositivos disponibles.

Puede hacer cambios en la presentación sin reiniciar la máquina, una gran ventaja sobre otros sistemas operativos.

Intente incluir solo los servicios que necesita para su negocio. Esto reducirá los requisitos de memoria, mejorará el rendimiento y mantendrá todo más simple.

Una nota final: agregará carga a sus dispositivos de intercambio. Querrás monitorear las temperaturas de ellos. Un sistema sobrecalentado reducirá su frecuencia de CPU y disminuirá la velocidad.

Agradecimientos

El autor desea decir un agradecimiento especial a Gerold Rupprecht y Zoleka Hatitongwe por sus comentarios y comentarios críticos mientras prepara este artículo.

Enlaces y referencias

* [1] Tutorial de kernel de Linux para principiantes, https: // Linuxhint.com/linux-kernel-tutorial-beginners/

* [2] Derek Molloy: escribiendo un módulo de kernel de Linux - Parte 1: Introducción, http: // Derekmolloy.IE/Writing-A-Linux-Kernel-Module-Part-1-Introduction/

* [3] Derek Molloy: escribiendo un módulo de kernel de Linux - Parte 2: un dispositivo de caracteres, http: // Derekmolloy.IE/Writing-A-Linux-Kernel-Module-Part-2-A-Character-Device/

* [4] Derek Molloy: Escribir un módulo de kernel de Linux - Parte 3: Botones y LED, http: // Derekmolloy.IE/kernel-gpio-Programming-buttons-and-leds/

* [5] Frank Hofmann: comandos para administrar la memoria de Linux, https: // Linuxhint.com/commands-to-ganage-linux-memory/

* [6] Frank Hofmann: Linux Kernel Memory Management: Swap Space, https: // Linuxhint.com/Linux-Memory-ganagement-swap-space/

* [7] Paquete DPhys-SwapFile para Debian Gnu/Linux, https: // paquetes.debian.org/estirado/dphys-swapfile

* [8] Guía de ajuste de rendimiento de Red Hat, https: // acceso.sombrero rojo.com/documentación/en-us/rojo_hat_enterprise_linux/6/html/interpretación_tuning_guide/s-memory-tunables

* [9] Configuración de mariadb, https: // mariadb.com/kb/en/biblioteca/configuración-swappiness/