Todos los que habrán probado pequeñas instancias de servidores virtuales en RackSpace, habrán notado que no trae incorporada en ellas, una particion de intercambio (SWAP) como ocurre en la mayoría de las instalaciones nativas de Linux. Esto genera un problema, debido a que al ser limitada la cantidad de memoria RAM disponible en dichas instancias, es posible que en alguna oportunidad, los procesos que corre dicha maquina agoten por completo los recursos de memoria del sistema y la congelen, obligando al administrador a reiniciar el sistema de manera forzada.

Es importante destacar que esto no es  una falla de RackSpace, sino una limitación del sistema en máquinas pequeñas.

Lo que debemos hacer para solventar en parte dicha limitación es habilitar un espacio de intercambio, y si bien lo normal es hacerlo en una partición, también se puede realizar en un archivo.

Crearemos en nuestro pequeño disco virtual, un archivo de intercambio de 1GB.

dd if=/dev/zero of=/swap bs=1024 count=1024000

Esto genera en la raiz del sistema, un archivo llamado “SWAP”. Posteriormente le damos formato de intercambio.

mkswap /swap

Finalmente solo nos queda activar el archivo de intercambio.

swapon /swap

Para hacer uso de este archivo de intercambio de memoria (SWAP) desde el arranque del sistema, es fundamental agregar lo siguiente al archivo /etc/fstab

/swap         swap      swap     defaults               0 0

Con esto concluimos la habilitación del archivo de intercambio en el sistema, pero aun queda un detalle pendiente. La instalación original de RackSpace no contempla el uso de un archivo o partición swap, por lo tanto a pesar que agreguemos un area de intercambio, por defecto sigue haciendo uso intensivo de la memoria RAM para todo el sistema.

Para efectos de un buen rendimiento, el uso de la RAM es ideal, pero al ser limitada, es muy importante contar con un area de reserva para el normal funcionamento de nuestra maquina virtual.

No voy a entrar en explicaciones técnicas, pero en Linux existe un archivo que nos define como se hará uso de la memoria virtual y en que proporciones se manejará el intercambio, me refiero al archivo /proc/sys/vm/swappiness .

El valor por defecto de Linux suele ser 60  ( De valores entre 0 y 100), sin embargo las máquinas pequeñas de RackSpace vienen con un valor “0” (Cero), es decir, solo se usa la RAM.

Lo que debemos hacer es modificar esta propiedad del Kernel, simplemente editanto el archivo /etc/sysctl.conf modificando lo siguiente:

vm.swappiness = 60

Una vez reiniciada la máquina virtual, Linux ya hará uso del area de intercambio como corresponde.

Existen varios articulos relacionados a distintas formas de ajustar el Swappiness de Linux entre 0 y 100, donde indican cuales es el valor que da mejores resultados, pero esto queda a gusto del consumidor.

Leave a Comment