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

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

Parte uno. El espacio de intercambio

Para trabajar correctamente, una computadora depende de tener una cantidad adecuada de memoria. Simplemente decir que nunca puede haber suficiente. Cuanta más memoria física se instale, más costoso 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 costosa pero rápida y accesible dentro de los nanosegundos. Por el contrario, la memoria de intercambio es bastante barata, pero lenta y accesible en milisegundos.

Existen algunas razones por las cuales 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 exigen. Como resultado, todos los datos que se mantienen en la memoria física no se pueden almacenar allí. Ahora, el espacio de intercambio entra en juego, y una selección de páginas de memoria se transfiere 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 están estacionadas en el espacio de intercambio para tener la mayor cantidad de memoria física gratuita disponible como sea posible. Este método se nombra el algoritmo de reemplazo de página menos utilizado recientemente (LRU) [1].

Tipos de intercambio

El espacio de intercambio existe en dos variantes. La versión 1 es una partición de disco separada que es la llamada partición de intercambio. No hay archivos almacenados en esa partición sino información de memoria (volcados). Simplemente, la versión 2 es un archivo en un disco que reside en el sistema de archivos en su disco duro. La versión 1 es muy común en los 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 un terminal:

$ /sbin /swapon -s
Tamaño del tipo de archivo Tamaño de la prioridad utilizada
/dev/DM -3 Partition 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 el que están en uso más de 300 m, actualmente. La columna de prioridad muestra qué espacio de intercambio usar primero. El valor predeterminado es -1. Cuanto mayor sea el valor de prioridad, más temprano se tiene en cuenta este espacio de intercambio. La opción -s es la versión corta de -summary. Esta opción está en desuso, y se recomienda usar la opción de la siguiente manera, en su lugar:

$ /sbin /swapon --show = nombre, tipo, tamaño, usado, prio
Tipo de nombre 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 la 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, el tamaño del espacio de intercambio, se recomienda ser el doble que el sistema tiene memoria física. Tenga esto en cuenta para las configuraciones de uso general y las 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 comienzo de dividir el disco en particiones únicas, o dejar suficiente espacio de disco no utilizado para usarlo más tarde, eventualmente. Por lo general, durante la configuración de los discos que se utilizarán, la rutina de configuració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 admite de esta manera para que pueda crearlo, prepararlo y montarlo de manera similar a la de una partición de intercambio. La ventaja de esta manera es que no necesita volver a asignar un disco para agregar espacio de intercambio adicional.

Como ejemplo, creamos un archivo llamado /swapFile con un tamaño de 512m, y habilitamos esto 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. Tercero, 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/cero 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 Swapspace versión 1, tamaño = 524284 kib
Sin etiqueta, uuid = E47AB7FE-5EFC-4175-B287-D0E83BC10F2E
# swapon /swapfile
# swapon --show = nombre, tipo, tamaño, usado, prio
Tipo de nombre Tamaño utilizado Prio
/dev/dm -3 partición 15,4g 288,9m -1
/archivo swapfile 512m 0b -2
#

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

/SwapFile Ninguno Swap SW 0 0

Deshabilitar un espacio de intercambio

Menos pero no por último hay un comando para deshabilitar el archivo de intercambio, nuevamente. Se llama el comando swapof. Requiere un solo parámetro que indique que el dispositivo de intercambio se deshabilitará. Este comando deshabilita el archivo de intercambio activado previamente:

# swapoff /swapfile

También, swapof puede funcionar con el UUID de un sistema de archivos. Para hacer swapof actuar de esta manera Use la opción -U seguido por el UUID del sistema de archivos según. En caso de que sea necesario deshabilitar todos los espacios de intercambio a la vez, la opción -a (Opción larga -LL) es bastante útil. El comando completo es Swapoff -A.

Ajustar el ecosistema de intercambio

Comenzando con Linux Kernel liberaciones 2.6 Se introdujo un nuevo valor. Esto se almacena en la variable /proc/sys/vm/swappinessy 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 [2]. El valor predeterminado es 60 (por ciento de memoria libre antes de activar el intercambio). Cuanto menor es el valor, menos intercambio se usa, y más páginas de memoria se mantienen en la memoria física.

  • 0: el intercambio está 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

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 sysctl Comando de la siguiente manera:

# SYSCTL -W VM.Swappiness = 10

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

VM.Swappiness = 10

¿Sigue intercambiado??

Puede preguntar por qué tratamos con ese tema. Las computadoras modernas tienen suficiente memoria física, entonces, ¿por qué tenemos que preocuparnos por eso?? Hay algunas razones por las cuales 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 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 un nuevo hardware, una partición de intercambio podría ahorrarle un poco de dinero.

Es posible que haya escuchado sobre una característica llamada Suspend to Disk, o modo Hibernate [3]. Tu máquina va a dormir. Antes de hacerlo, tiene que almacenar su estado actual en algún lugar. Ahora el espacio de intercambio entra en juego y actúa como un contenedor para mantener estos datos. Tan pronto como la máquina se despierta la próxima vez que se lean los datos completos desde el espacio de intercambio, se carguen en la memoria, y puede continuar trabajando donde se ha detenido antes.

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

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ógico contiguo para que el núcleo funcione con. Esto agrega ciclos adicionales de memoria de memoria y CPU. Obtendrá los mejores resultados utilizando una partición de intercambio en bruto.

Conclusión

Incluso hoy el conocimiento sobre el intercambio es esencial. Este tema es parte del conocimiento que se requiere para aprobar el Nivel de certificado de Linux Professional Institute (LPIC 1). La mayoría de los exámenes contienen una o dos preguntas sobre este tema.

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

La combinación de swap y ssd se discute de manera controvertida porque el número de discos escritos en un SSD es bastante limitado. Los archivos de intercambio y temporales están creados para escribir muchos datos. Por otro lado, los SSD modernos tienen un espacio adicional más que suficiente (7%) para hacer frente a las fallas del sector. Para estar en el lado seguro: si es posible, tenga un intercambio separado en un disco duro convencional: no use Ramdisk, ni un SSD, al menos para intercambio. Su sistema de Linux le agradecerá esta decisión.

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

Enlaces y referencias

  • [1] Andrew. S. Tanenbaum: el algoritmo de reemplazo de la página menos utilizado recientemente (LRU) en los sistemas operativos modernos
  • [2] Wikipedia: https: // en.Wikipedia.org/wiki/swappiness
  • [3] Power Management/Suspender e Hibernate, Arch Linux Wiki
  • [5] Zram en Debian GNU/Linux
  • [6] El archivo del núcleo de Linux sobre Zram

Serie de administración de memoria de Linux

  • Parte 1: Gestión de la memoria del núcleo de Linux: espacio de intercambio
  • Parte 2: Comandos para administrar la memoria de Linux
  • Parte 3: Optimización del uso de la memoria de Linux

Agradecimientos

El autor desea agradecer a Mandy Neumeyer y Gerold Rupprecht por su apoyo mientras prepara este artículo.