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
- Partición de intercambio
- La activación por systemd
- Deshabilitar el intercambio
- Archivo de intercambio
- Manualmente
- Creación de archivos Swap
- Eliminar archivo de intercambio
- Automatizado
- generador zram
- systemd-swap
- Cifrado de intercambio
- Rendimiento
- Swappiness
- Presión de caché de VFS
- Prioridad
- Usando zswap o zram
- Creación de bandas
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.
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
Se cuestiona la exactitud de los hechos de este artículo o secció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
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.
- 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.
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).
Manualmente
Creación de archivos 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
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#.
- 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
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.
- 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 establecerswapfc_force_preallocated=1
en/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.
/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.