Espacio de intercambio
# Espacio de intercambio

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.

## Descripción

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.

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

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

## Espacio swap

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).

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

O bien:

## Partición swap en Linux

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.

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

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:

Para activar el dispositivo para la paginación:

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

### Activación por systemd

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

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).

### Creación de un archivo swap

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 :

o

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

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

Active el archivo swap:

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

### Eliminación de un archivo swap

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

Como root:

Se debe eliminar el archivo de intercambio:

## Archivo Swap dinámico en Linux con dphys-swapfile

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

## Swap en un dispositivo USB

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.

## Optimizar el rendimiento

Los valores de swap se pueden ajustar para mejorar el rendimiento.

### Swappiness

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:

Para ajustar temporalmente el valor swappiness:

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

### Prioridad

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:

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

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

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.

