Kernel de Linux

Espacio de intercambio de administración de memoria del kernel de Linux

Espacio de intercambio de administración de memoria del kernel de Linux

Parte uno. El espacio Swap

Para que funcione correctamente, una computadora depende de tener una cantidad adecuada de memoria. Simplemente diciendo que nunca puede haber suficiente. Cuanta más memoria física se instala, más costosa es. Principalmente, el resultado es un compromiso inteligente entre los costos y la velocidad para acceder a las celdas de memoria.

Para lograr este compromiso, los sistemas UNIX / Linux combinan dos tipos de memoria: memoria física (RAM) y espacio de intercambio. En conjunto, esto se llama memoria virtual de un sistema informático. La memoria física es bastante cara pero rápida y accesible en nanosegundos. Por el contrario, la memoria de intercambio es bastante barata, pero lenta y accesible en milisegundos.

Existen algunas razones por las que la memoria de intercambio es útil. Primero, a veces los procesos individuales necesitan más memoria de la que el sistema posee físicamente y pueden proporcionar más a los procesos que lo demandan. Como resultado, todos los datos que se guardan en la memoria física ya no se pueden almacenar allí. Ahora, el espacio de intercambio entra en juego y una selección de páginas de memoria se transfieren al espacio de intercambio para liberar memoria física.

En segundo lugar, no todos los datos se necesitan en la memoria al mismo tiempo. Es por eso que las páginas de memoria menos utilizadas se almacenan en el espacio de intercambio para tener tanta memoria física libre disponible como sea posible. Este método se denomina Algoritmo de reemplazo de página menos utilizado recientemente (LRU) [1].

Tipos de permuta

El espacio de intercambio existe en dos variantes. La versión 1 es una partición de disco separada que es la denominada partición de intercambio. No hay archivos almacenados en esa partición, pero información de la memoria (volcados). Simplemente, la versión 2 es un archivo en un disco que reside en el sistema de archivos de su disco duro. La versión 1 es muy común en sistemas UNIX / Linux, BSD y OS X, mientras que la versión 2 existe en sistemas que ejecutan Microsoft Windows. La versión 2 también se puede habilitar en sistemas UNIX / Linux (ver más abajo).

Para ver qué espacio de intercambio está activo en su sistema UNIX / Linux, ejecute el siguiente comando en una terminal:

$ / sbin / swapon -s
Nombre de archivo Tipo Tamaño utilizado Prioridad
/ dev / dm-3 partición 16150524 316484 -1
PS

Como alternativa, puede enviar una solicitud al sistema de archivos proc y ejecutar el comando cat / proc / swaps

Este sistema Linux tiene una partición de intercambio con un tamaño de aproximadamente 15 GB en la que se utilizan más de 300M, actualmente. La columna Prioridad muestra qué espacio de intercambio usar primero. El valor predeterminado es -1. Cuanto mayor sea el valor de prioridad, antes se tendrá en cuenta este espacio de intercambio. La opción -s es la versión corta de -summary. Esta opción está obsoleta y se recomienda utilizar la opción -show de la siguiente manera:

$ / sbin / swapon --show = NOMBRE, TIPO, TAMAÑO, USADO, PRIO
NOMBRE TIPO TAMAÑO UTILIZADO PRIO
/ dev / dm-3 partición 15,4G 307,1M -1
PS

La opción -show acepta una lista de valores que representan los encabezados de columna. Para lograr un orden de salida específico, elija los encabezados de columna deseados y su secuencia.

Tamaño de intercambio

Como regla general, se recomienda que el tamaño del espacio de intercambio sea el doble de la memoria física que tiene el sistema. Tenga esto en cuenta para configuraciones de uso general y máquinas de escritorio. Para servidores UNIX / Linux con mucha más memoria física, puede reducir el tamaño del espacio de intercambio al 50% de la RAM. Las computadoras portátiles que pueden hibernar deben ser un poco más grandes que la memoria física.

Instalación

Para una partición de intercambio, se recomienda pensar en el espacio de intercambio desde el principio de dividir el disco en particiones individuales, o dejar suficiente espacio en disco sin usar para usarlo más tarde. Por lo general, durante la configuración de los discos que se utilizarán, la rutina de instalación le pregunta sobre el tamaño del espacio de intercambio. Como ejemplo, en Debian GNU / Linux, esto se ve de la siguiente manera:

Como se mencionó anteriormente, siempre que tenga espacio para nuevas particiones en su disco duro, puede crear e incluir particiones de intercambio con el uso de comandos como fdisk y swapon.

Alternativamente, el espacio de intercambio también se puede habilitar más adelante como un archivo de intercambio. Linux es compatible de esta manera para que pueda crearlo, prepararlo y montarlo de una manera similar a la de una partición de intercambio. La ventaja de esta forma es que no es necesario volver a particionar un disco para agregar espacio de intercambio adicional.

Como ejemplo, creamos un archivo llamado / swapfile con un tamaño de 512M y lo habilitamos como espacio de intercambio adicional. Primero, con la ayuda del comando dd creamos un archivo vacío. En segundo lugar, mkswap usa este archivo para transformarlo en estilo de intercambio. Puede notar que el contenido del archivo se trata como una partición y se asigna un UUID correspondiente. En tercer lugar, habilitamos esto usando swapon. Finalmente, el comando swapon -show muestra dos entradas de intercambio: una partición y el archivo recién creado.

# dd if = / dev / zero of = / swapfile bs = 1024 count = 524288
524288 + 0 conjuntos de datos en
524288 + 0 conjuntos de datos
536870912 bytes (537 MB) copiados, 0,887744 s, 605 MB / s
# mkswap / swapfile
Configuración de la versión 1 del espacio de intercambio, tamaño = 524284 KiB
sin etiqueta, UUID = e47ab7fe-5efc-4175-b287-d0e83bc10f2e
# swapon / swapfile
# swapon --show = NOMBRE, TIPO, TAMAÑO, USADO, PRIO
NOMBRE TIPO TAMAÑO UTILIZADO PRIO
/ dev / dm-3 partición 15,4G 288,9M -1
/ archivo de intercambio 512M 0B -2
#

Para usar este archivo de intercambio en el momento del arranque, agregue, como administrador, la siguiente línea al archivo / etc / fstab:

/ swapfile ninguno swap sw 0 0

Deshabilitar un espacio de intercambio

Al menos, pero no al final, hay un comando para deshabilitar el archivo de intercambio, nuevamente. El comando se llama intercambio. Requiere un solo parámetro que indica que el dispositivo de intercambio se deshabilitará. Este comando deshabilita el archivo de intercambio previamente activado:

# swapoff / swapfile

También, intercambio puede trabajar con el UUID de un sistema de archivos. Para hacer intercambio actúa de esta manera usa la opción -U seguido del UUID del sistema de archivos correspondiente. En caso de que sea necesario deshabilitar todos los espacios de intercambio a la vez, la opción -a (opción larga -todos) es bastante útil. El comando completo es intercambio -a.

Afinando el ecosistema swap

Comenzando con las versiones 2 del kernel de Linux.6 se introdujo un nuevo valor. Esto se almacena en la variable / proc / sys / vm / swappinessy controla el peso relativo que se le da al intercambio de memoria en tiempo de ejecución, en lugar de eliminar páginas de memoria de la memoria caché de la página del sistema [2]. El valor predeterminado es 60 (porcentaje de memoria libre antes de activar el intercambio). Cuanto menor sea el valor, menos intercambio se utilizará y más páginas de memoria se mantendrán en la memoria física.

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 utilizar el sysctl comando de la siguiente manera:

# sysctl -w vm.intercambio = 10

Para establecer el valor de forma permanente, agregue la siguiente línea al archivo / etc / sysctl.conf:

vm.intercambio = 10

¿El intercambio todavía está actualizado??

Puede preguntar por qué nos ocupamos de ese tema. Las computadoras modernas tienen suficiente memoria física, entonces, ¿por qué tenemos que preocuparnos por eso?? Hay algunas razones por las que esta tecnología vale más que un pensamiento.

Tenga en cuenta que se queda con su máquina por un tiempo, pero puede actualizar el software que usa en ella de vez en cuando. Actualmente, tanto el hardware como el software se adaptan entre sí. En el futuro puede cambiar y necesita más memoria de la que tiene ahora. A menos que actualice o compre nuevo hardware, una partición Swap podría ahorrarle un poco de dinero.

Es posible que haya oído hablar de una función llamada suspender en disco o modo de hibernación [3]. Tu máquina se va a dormir. Antes de hacer eso, tiene que almacenar su estado actual en algún lugar. Ahora entra en juego el espacio de intercambio y actúa como un contenedor para mantener estos datos. Tan pronto como la máquina se despierte, la próxima vez que se lean todos los datos del espacio de intercambio, se carguen en la memoria y pueda continuar trabajando donde se detuvo antes.

El sistema, si tiene solo un dispositivo de almacenamiento permanente, tendrá que leer y escribir sus archivos mientras intercambia en el mismo dispositivo. Verá una gran mejora si tiene un segundo dispositivo y puede separar el dispositivo de intercambio de los accesos a archivos en conflicto.

El archivo de intercambio debe pasar datos a través del sistema de archivos. Esto agrega una capa de indirección, para que parezca que hay un espacio de direcciones lógicas contiguas para que el kernel funcione. Esto agrega una sobrecarga de memoria adicional y ciclos de CPU. Obtendrá los mejores resultados utilizando una partición de intercambio sin procesar.

Conclusión

Incluso hoy en día el conocimiento sobre Swap es fundamental. Este tema es parte del conocimiento que se requiere para aprobar el Certificado del Instituto Profesional de Linux Nivel 1 (LPIC 1). La mayoría de los exámenes contienen una o dos preguntas sobre este tema.

El espacio de intercambio ayuda a su sistema Linux (kernel) a organizar rápidamente la memoria si es necesario. Para estar abierto contigo, el espacio de intercambio no es absolutamente necesario en caso de que tu sistema tenga toneladas de RAM. En caso de emergencias, ayuda a su sistema a sobrevivir. Es por eso que nunca dejaría el camino de una configuración tradicional sin Swap space.

La combinación de Swap y SSD se discute de manera controvertida porque el número de grabaciones de disco en un SSD es bastante limitado. Tanto los archivos temporales como los de intercambio están diseñados para escribir una gran cantidad de datos. Por otro lado, los SSD modernos tienen espacio adicional más que suficiente (7%) para hacer frente a las fallas del sector. Para estar seguro: si es posible, tenga un Swap separado en un disco duro convencional; no use ramdisk ni SSD, al menos para el intercambio [4]. Su sistema Linux le agradecerá esta decisión.

Para evitar poner el espacio de intercambio en su SSD, puede usar ZRAM, en su lugar [5,6]. Esto es Virtual Swap Comprimido en RAM, también llamado zSwap. Esta tecnología habilita un dispositivo de bloque comprimido en la memoria. Tan pronto como no quede más memoria, las páginas de memoria se transfieren a este dispositivo de bloque. Esto da como resultado un menor uso de intercambio y también ayuda a extender la vida útil de su disco duro.

Enlaces y referencias

Serie de administración de memoria de Linux

Agradecimientos

El autor desea agradecer a Mandy Neumeyer y Gerold Rupprecht por su apoyo durante la preparación de este artículo.

Cómo mostrar la superposición de OSD en aplicaciones y juegos de Linux en pantalla completa
Jugar juegos en pantalla completa o usar aplicaciones en modo de pantalla completa sin distracciones puede aislarlo de la información relevante del si...
Las 5 mejores cartas de captura de juegos
Todos hemos visto y amado la transmisión de juegos en YouTube. PewDiePie, Jakesepticye y Markiplier son solo algunos de los mejores jugadores que han ...
Cómo desarrollar un juego en Linux
Hace una década, no muchos usuarios de Linux predecían que su sistema operativo favorito algún día sería una plataforma de juegos popular para videoju...