Swap

Esta página proporciona una introducción al espacio de intercambio y la paginación en GNU/Linux. Cubre la creación y activación de particiones de intercambio y archivos de intercambio.

De Todo sobre el espacio de intercambio de Linux:

Linux divide su RAM física (memoria de acceso aleatorio) en trozos de memoria llamados páginas. El intercambio es el proceso mediante el cual se copia una página de memoria en el espacio preconfigurado del disco duro, llamado espacio de intercambio, para liberar esa página de memoria. Los tamaños combinados de la memoria física y el espacio de intercambio son la cantidad de memoria virtual disponible.

El soporte para swap es proporcionado por el núcleo Linux y las utilidades de espacio de usuario del paquete util-linux.

Espacio de intercambio

El espacio de intercambio puede tomar la forma de una partición de disco o un archivo. Los usuarios pueden crear un espacio de intercambio durante la instalación o en cualquier momento posterior según lo deseen. El espacio de intercambio se puede utilizar para dos propósitos, para extender la memoria virtual más allá de la memoria física instalada (RAM), y también para el soporte de suspensión en disco.

Si es beneficioso extender la memoria virtual con swap depende de la cantidad de memoria física instalada. Si la cantidad de memoria física es menor que la cantidad de memoria requerida para ejecutar todos los programas deseados, entonces puede ser beneficioso habilitar el intercambio. Esto evita las condiciones de falta de memoria, donde el mecanismo asesino de OOM del núcleo Linux intentará liberar memoria automáticamente matando procesos. Para aumentar la cantidad de memoria virtual a la cantidad requerida, agregue la diferencia necesaria (o más) como espacio de intercambio.

El mayor inconveniente de habilitar el intercambio es su menor rendimiento, consulte la sección # Rendimiento. Por lo tanto, habilitar el intercambio es una cuestión de preferencia personal: algunos prefieren que se eliminen los programas en lugar de habilitar el intercambio y otros prefieren habilitar el intercambio y el sistema más lento cuando se agota la memoria física.

Nota: No hay diferencia de rendimiento entre usar una partición de intercambio y un archivo de intercambio contiguo.

Para comprobar el estado de intercambio, utilice:

$ swapon --show

O para mostrar la memoria física, así como el uso de intercambio:

$ free -h

Partición de intercambio

Tango-inexacto.png Se cuestiona la exactitud de los hechos de este artículo o sección.Tango-inexacto.png

Razón: 82 es el tipo de partición de intercambio en MBR, no hay detección automática de partición de intercambio en MBR. Los comandos / TRIM en particiones swap parecen ser emitidos automáticamente por el Núcleo si son soportados ver Guías de implementación de Fedora. (Discuss in Talk:Swap#Clarify swap discovery)

Se puede crear una partición swap con la mayoría de las herramientas de particionamiento de GNU/Linux. Las particiones Swap suelen designarse como type 82. Aunque es posible usar cualquier tipo de partición como intercambio, se recomienda usar el tipo 82 en la mayoría de los casos, ya que systemd lo detectará automáticamente y lo montará (ver más abajo).

Para configurar una partición como área de intercambio de Linux, se utiliza el comando mkswap (8). Por ejemplo:

# mkswap /dev/sdxy
Advertencia: Se perderán todos los datos de la partición especificada.

Para habilitar el dispositivo para la paginación:

# swapon /dev/sdxy

Para habilitar esta partición de intercambio en el arranque, agregue una entrada a /etc/fstab:

UUID=device_UUID none swap defaults 0 0

donde device_UUID es el UUID de la partición swap.

Consulte fstab para obtener la sintaxis del archivo.

Nota:

  • La entrada fstab es opcional si la partición swap se encuentra en un dispositivo que usa GPT. Véase la siguiente subsección.
  • Si usa un SSD compatible con TRIM, considere usar discard en la línea de intercambio en fstab. Si activa swap manualmente con swapon, utilizando el parámetro -d--discard se consigue lo mismo. Vea swapon (8) para más detalles.
Advertencia: Habilitar el descarte en configuraciones RAID usando mdadm causará bloqueo del sistema en el arranque y durante el tiempo de ejecución, si se usa swapon.

La activación por systemd

systemd activa particiones swap basadas en dos mecanismos diferentes. Ambos son ejecutables en /usr/lib/systemd/system-generators. Los generadores se ejecutan en el arranque y crean unidades nativas systemd para montajes. El primero, systemd-fstab-generator, lee el fstab para generar unidades, incluida una unidad para swap. El segundo, systemd-gpt-auto-generator inspecciona el disco raíz para generar unidades. Funciona solo en discos GPT y puede identificar particiones swap por su tipo de GUID, consulte systemd # montaje automático de particiones GPT para obtener más información.

Deshabilitar el intercambio

Para desactivar un espacio de intercambio específico:

# swapoff /dev/sdxy

Alternativamente, use el interruptor -a para desactivar todo el espacio de intercambio.

Dado que el intercambio es administrado por systemd, se activará de nuevo en el siguiente inicio del sistema. Para desactivar la activación automática del espacio de intercambio detectado de forma permanente, ejecute systemctl --type swap para encontrar al responsable .de intercambio de la unidad y la máscara de la misma.

Archivo de intercambio

Como alternativa a la creación de una partición completa, un archivo de intercambio ofrece la capacidad de variar su tamaño sobre la marcha y se elimina por completo con mayor facilidad. Esto puede ser especialmente deseable si el espacio en disco es escaso (por ejemplo, una SSD de tamaño modesto).

Advertencia: Btrfs admite archivos de intercambio con limitaciones desde la versión 5.0 del kernel de Linux. Consulte Btrfs#Swap file para obtener más información.

Manualmente

Creación de archivos Swap

Nota: Si utiliza Btrfs, siga primero el procedimiento descrito en Btrfs # Swap file para inicializar el archivo swap.

Utilice dd para crear un archivo de intercambio del tamaño que desee. Por ejemplo, crear un archivo de intercambio de 512 MiB:

# dd if=/dev/zero of=/swapfile bs=1M count=512 status=progress
Nota: Usar dd para asignar un archivo de intercambio es la solución más portátil, consulte Archivos swapon(8) § con agujeros para obtener más información.

Establezca los permisos correctos (un archivo de intercambio legible en el mundo es una enorme vulnerabilidad local):

# chmod 600 /swapfile

Después de crear el archivo de tamaño correcto, formatéelo para intercambiar:

# mkswap /swapfile

Active el archivo de intercambio:

# swapon /swapfile

Finalmente, edite la configuración de fstab para agregar una entrada para el archivo de intercambio:

/etc/fstab
/swapfile none swap defaults 0 0

información, consulte Uso de fstab#.

Nota:

  • El archivo de intercambio debe especificarse por su ubicación en el sistema de archivos, no por su UUID o ETIQUETA.
  • Cuando use Btrfs, no olvide agregar el subvolumen creado a la lista, y elimine las opciones discard,autodefrag y de compresión.

Eliminar archivo de intercambio

Para eliminar un archivo de intercambio, primero debe desactivarse y luego puede eliminarse:

# swapoff /swapfile# rm -f /swapfile

Finalmente, elimine la entrada relevante de /etc/fstab.

Automatizado

generador zram

El objetivo de esta herramienta es la creación de dispositivos zram. Está escrito en Rust y reside en el GitHub de systemd. Se puede instalar con el paquete zram-generatorAUR.La configuración es sencilla y se explica en el LÉAME.

systemd-swap

Nota: El autor ahora recomienda usar zram-generator en su lugar, debido a la baja frecuencia de confirmación y a que zram cubre las necesidades de la mayoría de los usuarios.

systemd-swap es un script para crear espacio de intercambio híbrido a partir de swaps de zram, archivos de intercambio y particiones de intercambio. No está afiliado al proyecto systemd.

Instale el paquete systemd-swap. Descomente y establezca swapfc_enabled=1 en la sección de archivos de intercambio fragmentados de /etc/systemd/swap.conf. Inicie / habilite el servicio systemd-swap.

Visite la página de autores de GitHub para obtener más información y configurar la configuración recomendada.

Nota:

  • Si el diario sigue mostrando la siguiente advertencia systemd-swap: WARN: swapFC: ENOSPC y no se crea ningún archivo de intercambio, debe descomentar y establecer swapfc_force_preallocated=1en /etc/systemd/swap.conf.
  • El archivo de intercambio creado por systemd-swap no se puede usar fácilmente para la hibernación. Consulte la edición 85 de systemd-swap.

Cifrado de intercambio

Consulte cifrado dm-crypt / Swap.

Rendimiento

Las operaciones de intercambio suelen ser significativamente más lentas que acceder directamente a los datos en la RAM. Deshabilitar el intercambio por completo para mejorar el rendimiento a veces puede conducir a una degradación, ya que disminuye la memoria disponible para las cachés de VFS, causando E/S de disco más frecuentes y costosas.

Los valores de intercambio se pueden ajustar para ayudar al rendimiento:

Swappiness

El parámetro swappiness sysctl representa la preferencia (o la evitación) del espacio de intercambio del núcleo. El intercambio puede tener un valor entre 0 y 200 (máximo 100 si Linux < 5.8), el valor predeterminado es 60. Un valor bajo hace que el núcleo evite el intercambio, un valor alto hace que el núcleo intente usar el espacio de intercambio, y un valor de 100 significa que se asume que el costo de E / S es igual. Se sabe que el uso de un valor bajo con suficiente memoria mejora la capacidad de respuesta en muchos sistemas.

comprobar el actual el swappiness valor:

$ sysctl vm.swappiness

como alternativa, los archivos /sys/fs/cgroup/memory/memory.swappiness o /proc/sys/vm/swappiness se pueden leer con el fin de obtener la cruda valor entero.

Nota: Como /proc está mucho menos organizado y se mantiene solo por motivos de compatibilidad, se recomienda que use /sys en su lugar.

Para establecer temporalmente el valor de intercambio:

# sysctl -w vm.swappiness=10

Para establecer el valor de intercambio de forma permanente, cree un sysctl.archivo de configuración d (5). Por ejemplo:

/etc/sysctl.d / 99-intercambio.conf
 vm.swappiness = 10

Para probar y más sobre por qué esto puede funcionar, echa un vistazo a este artículo.

Presión de caché de VFS

Otro parámetro de sysctl que afecta al rendimiento de intercambio es vm.vfs_cache_pressure, que controla la tendencia del núcleo a reclamar la memoria que se utiliza para el almacenamiento en caché de cachés de VFS, en comparación con pagecache y swap. Aumentar este valor aumenta la velocidad a la que se recuperan las cachés de VFS. Para obtener más información, consulte la documentación del kernel de Linux.

Prioridad

Si tiene más de un archivo de intercambio o partición de intercambio, debe considerar asignar un valor de prioridad (0 a 32767) para cada área de intercambio. El sistema utilizará esferas de intercambio de mayor prioridad antes de utilizar esferas de intercambio de menor prioridad. Por ejemplo, si tiene un disco más rápido (/dev/sda) y un disco más lento (/dev/sdb), asigne una prioridad más alta al área de intercambio ubicada en el dispositivo más rápido. Las prioridades se pueden asignar en fstab a través del parámetro pri:

/dev/sda1 none swap defaults,pri=100 0 0/dev/sdb2 none swap defaults,pri=10 0 0

O a través del parámetro --priority de swapon:

# swapon --priority 100 /dev/sda1

Si dos o más áreas tienen la misma prioridad, y es la prioridad más alta disponible, las páginas se asignan de forma round-robin entre ellas.

Usando zswap o zram

Zswap es una característica del núcleo Linux que proporciona una caché de escritura comprimida para páginas intercambiadas. Esto aumenta el rendimiento y disminuye las operaciones de E / S. ZRAM crea un archivo de intercambio comprimido virtual en memoria como alternativa a un archivo de intercambio en disco.

Creación de bandas

No es necesario utilizar RAID por motivos de rendimiento de intercambio. El núcleo en sí puede intercambiar bandas en varios dispositivos, si solo les da la misma prioridad en el archivo /etc/fstab. Consulte el CÓMO de RAID por software para obtener más detalles.

Related Posts

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *