Agregar SWAP en Linux al vuelo


Muchas veces me han preguntado cuanta swap necesita una maquina para funcionar … bueno … no es una respuesta facil de dar, sobre todo por la cantidad de opiniones que hay por todos lados, de todas formas uno va haciendose de un par de reglas que se aplican en diferentes escenarios, no es lo mismo una maquina de escritorio que un servidor, tampoco es lo mismo una maquina para navegar, chatear y jugar algun que otro juego en flash :P que una maquina que va a ser usada para desarrollar tecnologia pesada o con tecnologia pesada Java o .Net por ejemplo.

La cuestion es simple, mientras mas carga tenga el sistema, mas va a intercambiar los procesos, mientras mas procesos que intercambiar tenga, mas va a enviar a estos a la swap (o memoria virtual).

Pero no es sencillo determinar la cantidad de swap que va a necesitar un servidor de antemano, salvo … claro esta … que hayamos analizado debidamente las necesidades del sistema, que procesos van a correr y cual sera la carga maxima estimada de dicho sistema … cosa que no es facil de determinar, por ejemplo si hablamos de un servidor web con una base de datos, vamos a tener que ver cuantas veces una aplicacion web abre conexiones a la base, cual es la politica de pooling de estas conexiones ( si es que tiene ), complejidad de codigo, complejidad de consultas, complejidad de store procedures y un varias cosas mas que hacen falta para determinar la carga minima y asi poder estimar la maxima. No es la idea que me ponga a escribir sobre servidores, ni tampoco estrategias de asignacion de espacio swap, aunque les voy a dar mis reglas … en caso que no lo hayan hecho asi siempre podremos agregar mas swap en el futuro.

Basicamente mi regla consta de las siguientes evaluaciones:

  • 4Gb RAM o menos => 2Gb Swap minimo.
  • 4Gb a 16Gb RAM  => 4Gb Swap minimo.
  • 16Gb a 64Gb RAM => 8Gb Swap minimo.
  • 64Gb a 256Gb RAM => 16Gb Swap minimo.
  • SOLO PARA NOTEBOOKS y DESKTOPS: Si queremos habilitar las funcion de suspencion de discos tendremos que agregar mas Swap de lo que tenemos en RAM. En mi maquina de escritorio por ejemplo tengo 2Gb de Ram y 3Gb de Swap. (Cumpliendo con el primer punto: 4GbRAM ~ 2Gb Swap)
Ahora, vos pensaras … pero ¿que pasa si le asigne tan poco (o nulo) espacio de swap?
Bien … hasta que el sistema operativo no empiece a pedir espacio Swap, nada, y cuando empiece a necesitar para cachear datos va a bloquear la memoria utilizada memoria (3/4 aproximadamente de la memoria RAM total) y va a usar ese 1/4 de memoria RAM para cachear datos.
Como podemos solucionar esto … bueno … tenemos varias formas, la primera es agergar mas espacio modificando las particiones … la otra es … agregarlo al vuelo … esto nos sirve por ejemplo si nuestro sistema anda de pelos hasta que corremos ese dichoso programa que hace swapear al sistema operativo como loco …  la cuestion es cencilla, podemos usar un archivo temporal,  lo primero que tenemos que hacer es prepara un archivo para que sea nuestro swap file:

$ dd if=/dev/zero of=/swap1.swp bs=1024 count=512K

Luego configuramos el archivo swap con el comando mkswap:

$ mkswap /swaptemp.swp

Lo activamos ….

$ swapon /swaptemp.swp

… nos fijamos el archivo swap se activo correctamente ….

$ cat /proc/swaps

Y listo … ya tenemos mas swap agergada a nuestro sistema … sin ningun esfuerzo alguno.

Saludos!!!

Se libre ... comparti!!!

  1. No hay Comentarios
(No será publicado)