¿Que es el Virtual Machine Device Queues (VMDq)?
Hola amigos, soy Florián Murillo y vuelvo al ataque con temas de networking, hoy hablaré de como mejorar el rendimiento de nuestros interfaces de red de 10Gb utilizando Virtual Machine Device Queues (VMDq) de Intel.
El ratio de consolidación en los sistemas actuales, me refiero al número de VM que “corren” en un servidor físico, está aumentando considerablemente, según mis estimaciones, se ha multiplicado por 4 en los últimos 4 años, esto lleva parejo una consolidación del tráfico de red y tenemos la tentación de pensar que con ampliar los interfaces de red lo arreglamos, pasando de 1Gb a 10Gb, pero hemos de pensar que la mejora de rendimiento no es lineal con el aumento de ancho de banda, ya que el vmkernel ha de procesar y clasificar mucho mas tráfico, consumiendo CPU, convirtiendose en un cuello de botella y esto ocurre para el tráfico saliente y el tráfico entrante.
VMDq es una tecnología que permite realizar la clasificación del tráfico en el interfaz de red, creando colas de entrada/salida y especializando estas colas en VM especificas, descargando al VMkernel, evitando cuellos de botella y aumentando la velocidad de transmisión.
En pruebas de laboratorio con controladoras de red Intel 82598 de 10Gb, Intel midió, en un escenario concreto, velocidades de transmisión de 4.0Gbps sin VMDq y 9.2Gbps con VMDq, o sea a mas del doble, y todavía mejoro un poco (9.5Gbps) utilizando jumbo frames en el escenario final.
He visto pruebas parecidas con controladoras de red de Neterion.
La implementación de VMDq en VMware se llama NetQueue, y está disponible desde VI 3.5 U1. En vSphere v4 está activada por defecto, por lo que solo hemos de configurar el interfaz de red para soportar NetQueue y a disfrutar de sus beneficios.
¿Como verifico que NetQueue está activado en mi ESX?
Comprueba que en Configuration > Software > Advanced > VMkernel tengas VMkernel.Boot.netNetQueueEnabled activo, si no es así lo activas y reinicias el ESX.
Lo que estamos haciendo, en realidad, es cambiar el archivo /etc/vmware/esx.conf añadiendo la linea /vmkernel/netNetqueueEnabled = “TRUE”
¿Como configuro mi interfaz de red para soportar NetQueue?
El comando siguiente es para una Intel 82598 de un solo puerto, los parámetros pueden cambiar de nombre de un interfaz de red a otro.
esxcfg-module -s «InterruptType=2 VMDQ=16» ixgbe
Donde InterruptType activa MSI-X, es una exigencia de NetQueue, permite a la controladora ethernet enviar datos a multiples cores aprovechando las interrupciones.
El parámetro VMDQ especifica el número de pares de colas de entrada y salida que tendremos, estas colas se asignaran automáticamente a las VM para aumentar la eficiencia. El número de colas depende de la interfaz ethernet, cuantas mas tenga, mejor.
Tras el comando esxcfg-module, hemos de reiniciar el ESX y ya está configurado NetQueue.