Rendimiento en la virtualización con Xen

Hace bastante que tengo montado un server con Xen en casa y a lo largo de este tiempo de experimentación he sacado algunas conclusiones acerca del rendimiento que me gustaría compartir. 🙂

En Xen hay varios factores que pueden determinar el rendimiento tanto de las máquinas virtuales como del sistema completo:

El Kernel
Oficialmente solo se mantiene una versión parcheada del kernel 2.6.18.8 para su uso como dom0. Algunas distros han ido portando hacia adelante estos parches de Xen y por ejemplo Debian Lenny dispone del kernel 2.6.26 para su uso como dom0. Aunque se pueden utilizar los Kernels empaquetados por las distintas distros, algunos usuarios han reportado problemas. Para obtener el mejor rendimiento posible y minimizar los problemas se recomienda utilizar el Kernel oficial (2.6.18.8) siempre que sea posible, al menos hasta que los parches de Xen para el dom0 sean incluidos en el mainline del Kernel (se espera que para la versión 2.6.29).

Red
El rendimiento del sistema de red es otro de los factores que más preocupan a los usuarios de sistemas virtualizados. A la hora de determinar un posible fallo de rendimiento en el rendimiento de red hay varios elementos que pueden estar involucrados: la tarjeta de red, el switch y el driver de la tarjeta de red.

Supongamos un sistema con 10 máquinas virtuales. Esto supone que (si utilizamos bridging en las interfaces de red) que habrá 10 equipos transmitiendo datos y que el switch al que este conectado el servidor tendrá 10 MACs en una de sus bocas.Algunos switches y tarjetas de red pueden no resultar adecuados para soportar una carga tan elevda de tráfico, por lo que no vale usar cualquier switch (no al menos ese Linksys de 8 puertos 😉 ).

La velocidad de transferencia es otro de los mayores problemas de la virtualización. Esto se puede solucionar (si el entorno virtualizado es GNU/Linux) deshabilitando el checksum de los paquetes en transferencia. Al no existir como tal un medio ya que la comunicación es a nivel de Kernel, es seguro deshabilitar esta opción. Para ello ejecutaremos lo siguiente en los domU:

# ethtool -K eth0 tx off

Y en el dom0:

# ethtool -K eth0 tx on

Disco Duro
Supongamos de nuevo que tenemos ese servidor con 10 máquinas virtuales. Utilizar particiones independientes para cada máquina virtual ofrece mayor rendimiento que utilizar ficheros individuales. Utilizar LVM y una partición independiente para cada máquina virtual suele ser lo más adecuado.

Además del esquema de particionado, el hecho de tener 10 máquinas virtuales encendidas supone demasiadas escrituras concurrentes en disco por lo que conviene utilizar un sistema RAID (0 o 5 por ejemplo) para que estos procesos de lectura/escritura  no comprometan el rendimiento del sistema virtualizado.

En el servidor que tengo en casa (procesador QuadCore, 4GB de RAM y 2 discos duros en RAID 0) con 14 máquinas virtuales arrancadas el rendimiento es muy bueno 🙂

  • Latre

    Pero que carga has metido para saber si las 14 maquinas estan bien?

    Que pruebas de stress has hecho??

  • HE comprobado los consumos de memoria y CPU con el funcionamiento “normal” de los domUs. Si estreso todas a la vez si que mataria el dom0, pero con una carga normal no he notado penalizaciones en el rendimiento.

  • Dat

    Muy buenas, he llegado a tu blog buscando información sobre xen, lvm y raid. Espero sacar tiempo para echarle una ojeada a tu blog.

    Me gustaría hacerte unas preguntas sobre este tema. Dices que tienes los dos discos en RAID 0, ¿lo tienes por software? ¿sobre el RAID tienes LVM para gestionar todo el espacio en disco? Si es así, ¿cómo se comporta LVM sobre RAID?

    Muchas gracias y saludos.

  • saghul

    Sí, el RAID lo monté por software, utilizando LVM para gestionar todo el disco, y sin ningún problema 🙂

    Eso sí, la partición /boot no la metí en RAID0, porque no me arrancaba el host.

  • kampos

    Hola, has probado Xen con Asterisk y tarjetas pci?. Al reiniciar unicamente la maquina virtual con la tarjeta, ¿te la sigue detectando?.

    Como crees que funcionaria con 2 tarjetas de 4 E1.

    Un saludo.

  • En principio, bien configurado, no deberías de tener problemas, y para que las tarjetas te funcionen tendrás que hacer PCI passthrough.