Para que sirve la memoria swap de linux

Sin-título.001-300x225Cuando tu computadora necesita correr aplicaciones que son mas pesados que tu capacidad de memoria física instalada, los sistemas operativos mas modernos usan una tecnología llamada swapping, en la cual trozos de memoria son temporalmente almacenados en el disco duro mientras que la otra data es movida hacia el espacio de la memoria físicaAquí hay algunas técnicas que te pueden ayudar a administrar mejor el swapping en los sistemas Linux y obtener el mejor performance del subsistema swapping de Linux. 

Linux divide su memoria RAM en trozos de memoria llamados pages (paginas). Swapping es el proceso en el cual un page de memoria es copiado en el espacio del disco duro preconfigurado, llamado espacio o partición swap, para liberar ese page de memoria. El tamaño combinado de la memoria RAM y la partición swap es la cantidad memoria virtual disponible.

Swapping es necesario por dos importantes razones. Primero, cuando el sistema necesita mas memoria que la RAM es disponible, el kernel intercambia las pages usadas y proporciona mas memoria a la aplicación (proceso) que lo necesita inmediatamente. Segundo, un significante números de pages usadas por una aplicación durante su fase de inicio puede ser solo usada para la inicialización y luego no usada otra vez. El sistema puede intercambiar aquellas pages y liberar la memoria para otra aplicación o incluso para la cache de disco.

Como sea, swapping tiene una desventaja. Comparado a la memoria, el disco es muy lento. La velocidad de la memoria puede ser medida en nanosegundos, mientras que la del disco es medida en milisegundos, por eso acceder al disco puede ser diez veces mas lento que acceder a la memoria física.

Linux tiene dos formas de intercambiar (swap) espacio:
La partición swap y el archivo swap. La partición swap es una sección independiente del disco duro usada únicamente para intercambio. ningún otro archivo puede residir ahí El archivo swap es un archivo especial en el fichero del sistema (filesystems) que reside entre tu sistema y los archivos de datos.
Para ver cuanto espacio de intercambio tienes, usa el comando swapon -s
La salida deberá ser algo así:
Filename Type Size Used Priority
/dev/sda4 partition 1405676 35948 -1

Cada linea lista un espacio swap diferente que esta siendo usado por el sistema. Aquí el campo Tipo (Type) indica que este espacio swap es una partición en vez de un archivo y el campo Filename muestra que esta en el disco sda4. El tamaño (Size) esta mostrado en kilobytes, y el campo Used muestra cuantos kilobytes de espacio swap esta siendo usado. El campo Priority le indica a Linux cual es el espacio que debe ser usado primero. Una de las grandes ventajas del swapping en subsistemas Linux es que si montas dos o mas espacios swap (de preferencia en dos dispositivos diferentes) con la misma prioridad, Linux intercalara su actividad de swapping entre ellos, lo cual puede incrementar la performance del swap.

Para agregar una partición swap extra en tu sistema, primero necesitas prepararlo. Paso uno aseguraste de tener una partición marcada como swap y paso dos es hacer el sistema de archivos swap. Para revisar que la partición este marcada para swap, ejecuta esto como swap:

fdisk -l /dev/hdb

Reemplaza /dev/hdb con el dispositivo del disco duro en tu sistema con la partición swap. Deberías ver algo así:
Device Boot Start End Blocks Id System
/dev/hdb1 2328 2434 859446 82 Linux swap / Solaris

Si la partición no esta marcada como swap necesitaras cambiarla usando el comando fdisk y la opción de menú ‘t’. Mucho cuidado cuando se trabaja con particiones ya que podríamos borrar por error alguna partición donde se encuentren nuestros datos tan preciados. Otra aclaración es que Solaris usa el mismo ID que Linux para sus particiones swap, así que cuidado de no borrar la partición Solaris por error.

Una vez que la partición es marcada como swap, necesitas prepararla usando el comando mkswap como root:

mkswap /dev/hdb1

Si no ves ningún error, tu espacio swap esta listo para usar. Para activarla, escribe esto:

swapon /dev/hdb1

Puede verificar si esta siendo usada ejecutando swapon -s. Para montar el espacio swap al momento de iniciar el sistema, debes agregar una linea al archivo /etc/fstab, el cual contiene la lista de los sistemas de archivos y espacio swap que se montaran al momento de iniciar el sistema. El formato para cada linea es:

Como el espacio swap es un tipo de archivo especial, varios de estos parámetros no son aplicables. Para el espacio swap agrega esto:

/dev/hdb1 none swap sw 0 0

Donde /dev/hdb1 es la partición swap. No tiene un punto de montaje especificado, por lo tanto es none. Es del tipo swap con opciones sw, los últimos dos parámetros no se usan por eso se ingresa 0.

Para verificar que tu partición swap ha sido montada sin necesidad de reiniciar tu PC, puedes ejecutar el comando:

swapoff -a ( el cual apaga todos los espacios swap)

y luego ejecutar:

swapon -a (el cual monta todos los espacios swap listados en el archivo /etc/fstab)

y luego revisar con el comando:

swapon -s

Archivo Swap

Así como la partición swap, Linux también soporta el archivo swap el cual tu puedes crear, preparar y montar de la misma forma como se hace con una partición swap. La ventaja del archivo swap es que no necesitas buscar por una partición vacía o reparticionar el disco para adicionar el espacio swap.

Para crear un archivo swap, usa el comando dd para crear un archivo vacío Para crear un archivo de 1Gb, escribe lo siguiente:

dd if=/dev/zero of=/swapfile bs=1024 count=1048576

/swapfile es el nombre del archivo swap, y count=1048576 es el tamaño en kilobytes.

Prepara el archivo swap usando mkswap como si fuera una partición, pero esta vez usa el nombre del archivo swap:

mkswap /swapfile

E igualmente montarlo usando el comando swapon:

swapon /swapfile.

El archivo /etc/fstab debería verse algo así:

/swapfile none swap sw 0 0
¿Que tan grande debe ser el espacio swap?

Es posible ejecutar un sistema Linux sin espacio swap, y correrá muy bien si es que tienes bastante memoria RAM, pero si no tienes mucha RAM el sistema se te colgara, por eso es recomendable tener espacio swap, especialmente desde que el espacio en disco se volvió relativamente barato.
Ahora la cuestión cuanto. Las versiones antiguas de Unix (como SUN OS y Ultrix) demandaban un espacio swap de 2 o 3 veces el tamaño de la RAM. Las implementaciones modernas (como Linux) no requieren de tanto, pero la pueden usar si es que esta configurado. Una regla que se puede seguir es la siguiente:

Para un sistema de escritorio, usa un espacio de swap del doble de tu RAM.

Para servidores se puede tener la mitad de la RAM, teniendo la posibilidad de aumentar el tamaño swap según se necesite. Siempre revisando la performance del sistema.

Para computadoras viejas que las usaremos como escritorio y que tengan menos de 128 de RAM, usa todo lo posible, si puedes hasta 1Gb o mas.

EL kernel 2,6 de Linux agrego un nuevo parámetro para el kernel llamado swappiness, que permite a los administradores pellizcar la forma que Linux usa el espacio swap. Estos son números del 0 al 100. En esencia, valores altos para manejar mas pages que están siendo intercambiadas y valores bajos para mas aplicaciones mantenidas en la memoria, aun si están ocupadas.

El mantenedor del Kernel, Andrew Morton, ha dicho que correr maquinas de escritorios con swappiness de 100 no es tan necesario, es mejor liberar espacio en el disco para algo mas útil.

Por eso si deseas cambiar temporalmente el valor de swappiness, el cual es 60 por defecto puedes usar este comando:

echo 50 > /proc/sys/vm/swappiness

Si deseas cambiarlo permanentemente, cambia el parámetro vm.swappines del archivo /etc/sysctl.conf

Conclusión

Manejar el espacio swap es esencialmente una tarea del administrador. Con un buen planeamiento y uso apropiado del espacio swap puedes tener beneficios. No tengas miedo de experimentar, siempre monitorea tu sistema para asegurarte de que tienes los resultados que deseas.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s