Espacio de intercambio

De Wikipedia, la enciclopedia libre

En informática, el espacio de intercambio (también conocido como archivo de paginación o memoria virtual) es una zona del disco (un fichero o partición) que se usa para guardar las imágenes de los procesos que no han de mantenerse en memoria física. A este espacio se le suele llamar swap, del inglés intercambiar.

En lugar de utilizar espacio en la memoria RAM, el swap utiliza el disco duro para almacenar datos temporales, así se reduce el uso de la RAM. El uso combinado de memoria RAM y swap crean una memoria virtual de mayor capacidad a la que trae el ordenador por defecto.[1][2]

Descripción[editar]

La mayoría de los sistemas operativos modernos poseen un mecanismo llamado memoria virtual, que permite hacer creer a los programas o sistemas operativos que tienen más memoria que la disponible realmente. Como en realidad no se tiene físicamente toda esa memoria, algunos procesos no podrán ser ubicados en la memoria RAM.

En este caso es cuando es útil el espacio de intercambio: el sistema operativo puede buscar un proceso poco activo y moverlo al área de intercambio (el disco duro) y, de esa forma liberar la memoria principal para cargar otros procesos. Mientras no haga falta, el proceso extraído de memoria puede quedarse en el disco, ya que ahí no utiliza memoria física. Cuando sea necesario, el sistema vuelve a hacer un intercambio, pasándolo del disco a la memoria RAM. Es un proceso lento (comparado con usar solo la memoria RAM), pero permite dar la impresión de que hay más memoria disponible.[1]

Se aconseja la siguiente cantidad de memoria swap:

  • 1 GB de RAM o menos: la misma cantidad para la swap
  • entre 2 GB y 4 GB de RAM: la mitad para la swap
  • más de 4 GB de RAM: 2 GB de swap[3]

Se considera que la partición swap es necesaria en Linux. En la distribución Ubuntu, los desarrolladores decidieron eliminar la necesidad de utilizar la memoria swap, reemplazándola por un archivo llamado swapfile a partir de la distribución 17.04[4][5]

Espacio swap[editar]

El espacio swap o de intercambio será normalmente una partición del disco, pero también puede ser un archivo. Los usuarios pueden crear un espacio de intercambio durante la instalación o en cualquier momento posterior, en caso de ser necesario. El espacio de intercambio es generalmente recomendado a los usuarios con menos de 1 GB de RAM, pero es una cuestión de preferencia personal en sistemas con cantidades generosas de memoria RAM física (aunque sí es necesario para utilizar la suspensión en disco).[6]

Para comprobar el estado del swap, en Linux se utiliza la siguiente orden:

swapon -s

O bien:

free -h

Partición swap en Linux[editar]

Una partición swap se puede crear con la mayoría de las herramientas que gestionan las particiones en GNU/Linux (por ejemplo, fdisk, cfdisk). Las particiones swap son designadas como tipo 82, sin embargo, es posible utilizar cualquier tipo de partición como swap.[6]

Para configurar un área swap Linux, se utiliza la orden mkswap. Por ejemplo:

sudo mkswap /dev/sda2

La utilidad mkswap genera un UUID de la partición por defecto, utilice la etiqueta -U en el caso de que quiera especificar una UUID personalizada:

sudo mkswap -U custom_UUID /dev/sda2

Para activar el dispositivo para la paginación:

sudo swapon /dev/sda2

Para activar esta partición swap en el arranque, ejecute el siguiente comando para añadir la entrada al archivo fstab:

sudo echo "/dev/sda2 none swap defaults 0 0" >> /etc/fstab

Activación por systemd[editar]

systemd activa particiones de intercambio basándose en dos mecanismos diferentes, ambos ejecutables en /usr/lib/systemd/system-generators. Los generadores se ejecutan durante la puesta en marcha del sistema y crean unidades nativas de systemd para los montajes. El primero, ic|systemd-fstab-generator, lee el archivo fstab para generar unidades, incluyendo una unidad para swap. El segundo, systemd-gpt-auto-generator inspecciona el disco raíz para generar unidades. Funciona con discos GPT solamente.

Archivo swap en Linux[editar]

Como una alternativa a la creación de toda una partición, un archivo swap ofrece la posibilidad de variar su tamaño sobre la marcha, y es más fácil de eliminar por completo. Esto puede ser especialmente deseable si el espacio es un bien escaso (por ejemplo, un disco SSD con un tamaño modesto).[6]

Creación de un archivo swap[editar]

Como root, utilice fallocate para crear un archivo swap del tamaño de su elección (dd también se puede utilizar, pero se necesitará más tiempo). Por ejemplo, para crear un archivo swap de 512 MB, escriba :

sudo fallocate -l 512M /swapfile

o

sudo dd if=/dev/zero of=/swapfile bs=1M count=512

Establezca los permisos correctos (un archivo swap de lectura global es una enorme vulnerabilidad de seguridad)

sudo chmod 600 /swapfile

Después de crear el tamaño correcto del archivo, dé formato a swap:

sudo mkswap /swapfile

Active el archivo swap:

sudo swapon /swapfile

Para activar este archivo swap en el arranque, ejecute el siguiente comando para añadir la entrada al archivo fstab:

sudo echo "/swapfile none swap defaults 0 0" >> /etc/fstab

Eliminación de un archivo swap[editar]

Para eliminar un archivo swap, dicho archivo debe estar desactivado previamente.

Como root:

sudo swapoff -a

Se debe eliminar el archivo de intercambio:

sudo rm -f /swapfile

Archivo Swap dinámico en Linux con dphys-swapfile[editar]

Instale el paquete "dphys-swapfile" y luego ejecute los siguiente comandos en la terminal para activarlo:

sudo dphys-swapfile setup
sudo dphys-swapfile swapon

Swap en un dispositivo USB[editar]

Gracias a la modularidad que ofrece Linux, se pueden tener múltiples particiones repartidas en diferentes dispositivos. Si se tiene un disco duro muy lleno, el dispositivo USB puede usarse como partición temporal. Pero este método tiene algunas desventajas graves:

  • El dispositivo USB es más lento que el disco duro.
  • Las memorias flash tienen limitados los ciclos de lectura. Su uso como partición swap acortará su vida útil.
  • Cuando hay otro dispositivo conectado al ordenador, no se puede utilizar swap.[6]

Optimizar el rendimiento[editar]

Los valores de swap se pueden ajustar para mejorar el rendimiento.[6][2]

Swappiness[editar]

El parámetro swappiness de sysctl representa la preferencia del kernel (inhibiéndose) de utilización del espacio swap. Swappiness puede tener un valor entre 0 y 100; por defecto se usa 60. Si se establece un valor bajo, reducirá el intercambio desde RAM y, se sabe que mejora la capacidad de respuesta en muchos sistemas. Cuanto mayor sea el valor de swappiness, el kernel utilizará swap de manera más agresiva. Por lo tanto, se recomienda utilizar un valor bajo que reduzca el intercambio desde RAM y mejore la capacidad de respuesta del sistema.

Para comprobar el valor actual de swappiness:

sudo cat /proc/sys/vm/swappiness

Para ajustar temporalmente el valor swappiness:

sudo sysctl vm.swappiness=10

Para establecer de manera permanente el valor swappiness, editar un archivo de configuración sysctl:

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

Prioridad[editar]

Si se tiene más de un archivo o partición swap, debería considerar la posibilidad de asignarles un valor de prioridad (0 a 32767) para cada área swap. El sistema utilizará las áreas swap de mayor prioridad antes de utilizar las asignadas como de menor prioridad. Por ejemplo, si se tiene un disco más rápido (/dev/sda) y un disco más lento (/dev/sdb), asigne una mayor prioridad al área swap que se encuentra en el dispositivo más rápido. Las prioridades se pueden asignar en fstab a través del parámetro 1=pri:

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

O mediante los parámetros −p (o −−priority) de la orden swapon:

sudo swapon -p 100 /dev/sda1

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

Espacio de intercambio en Windows[editar]

Cuando Windows usa toda la memoria RAM disponible, empieza a utilizar la memoria virtual para tener más recursos de forma temporal. Windows administra de manera automática el tamaño de ese archivo. En Windows 10, para modificar el tamaño de la memoria virtual se utiliza configuración avanzada del sistema en el panel de control.[7]

Referencias[editar]

  1. a b Dueñas, Joel Barrios. «Gestión de memoria de intercambio (swap) en GNU/Linux». alcance Libre. Consultado el 25 de mayo de 2020. 
  2. a b Escobar, Nasheli (21 de septiembre de 2015). «Para qué sirve el Swap en Linux y cómo cambiarlo». Hipertextual. Consultado el 25 de mayo de 2020. 
  3. «¿Es necesaria una partición swap en Linux?». Geek theory. Consultado el 25 de mayo de 2020. 
  4. Aparicio, Pablo. «Ubuntu 17.04 se deshará de las particiones Swap». Ubunlog. Consultado el 25 de mayo de 2020. 
  5. Gomar, Juan (26 de diciembre de 2016). «Ubuntu 17.04 dice adiós a la partición swap» (en profesional Review). Consultado el 25 de mayo de 2020. 
  6. a b c d e «Swap (Español)». ArchWiki. Consultado el 25 de mayo de 2020. 
  7. González, Gabriela (28 de abril de 2017). «Cómo aumentar la memoria virtual en Windows 10 para mejorar el rendimiento del sistema». Genbeta. Consultado el 25 de mayo de 2020. 

Enlaces externos[editar]

Fuentes[editar]

 Este artículo incorpora texto de un trabajo de contenido libre. Licenciado bajo GNU Free Documentation License 1.3 o posterior Declaración de la licencia: Desktop environment (Español), ArchWiki. Para aprender como añadir texto de licencias libres a artículos de Wikipedia, véase Wikipedia:Agregar textos en licencia libre en Wikipedia. Para más información sobre cómo reutilizar texto de Wikipedia, véanse las condiciones de uso.