Manejando la memoria en “caliente” con Xen

Manejando la memoria en “caliente” con Xen

Cuando tenemos una máquina física con tantos GB de RAM y empezamos a paravirtualizar con Xen sobre ella, el recurso que más debemos cuidar es éste, la memoria física disponible en el sistema. Dentro del fichero de configuración de nuestras máquinas definiremos dos valores:

  • memory: memoria con la que se creará la máquina
  • maxmem: tope de memoria que podremos conseguir gracias al balloning (aumento de la memoria en caliente)

De hecho, si no definimos el siguiente parámetro, Xen interpretará que será igual al anterior. Imaginemos que tenemos una máquina creada con 1024MB de memoria y con un tope de 4096MB.

Cuando hacemos xm create nombreMaquina y se inicia, con xm list podremos ver la cantidad de memoria que está consumiendo:

# xm list
Name                                      ID Mem(MiB) VCPUs State   Time(s)
Domain-0                                   0      256     2 r-----  54678.1
foo                                        2     1024     1 -b----   4660.2

Aumentar y reducir memoria en ejecución

La máquina está ejecutando, necesitas crear nuevas máquinas y ésta en concreto no está usando toda la memoria. Recordad que el uso de CPUs virtuales en Xen es escalable, pero el de la memoria no lo es, al menos de forma tan automática. La solución es usar la siguiente instrucción:

xm mem-set nombreMaquina nuevoTamaño

Veamos cómo quedaría nuestro caso xm mem-set foo 512:

# xm mem-set foo 512
# xm list
Name                                      ID Mem(MiB) VCPUs State   Time(s)
Domain-0                                   0      256     2 r-----  56681.0
foo                                        2      512     1 -b----   5160.2

O podemos incrementarla, hasta un valor siempre igual o menor al definido en maxmem, por ejemplo a 2048:

xm mem-set foo 2048

# xm list
Name                                      ID Mem(MiB) VCPUs State   Time(s)
Domain-0                                   0      256     2 r-----  69735.6
foo                                       11     2048     1 -b----   5289.8