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.
Los lectores que leyeron este post, también leyeron:




















Interesante Florián. Aparte de ESXi y ESX, el sistema operativo Solaris y Opensolaris tienen un proyecto de virtualización de red llamado Crossbow que permite aprovechar VMDq y Dynamic Ring Grouping, y es capaz de simularlo en tarjetas que no lo soportan.
Creo que en los próximos meses y años, el cuello de botella se está trasladando a la red: los 10Gb nos van a parecer poco…
Y así será, pero antes de 12 meses tendremos 40Gb (si cumplen) y antes de 24 meses 100Gb, porque habrá que agregar los 10Gb y los 40Gb de alguna manera ¿no?
Hola Florián!. ¿Qué tal compañero?, espero que bien, la verdad es que aquí estoy un poco más pez y me gustaría si es posible donde puedo encontrar el comando que me active unas Broadcom NetXtreme II BCM5709 (4 puertos).
Gracias de antemano y un saludo
Por acotar algo mas el tiro… las funcionalidades de CROSSBOW con respecto al accountng y limiting a nivel de trafico de red (por interfaz real o virtual y puerto tcp en cada switch virtual) unicamente estan disponibles a dia de hoy en OpenSolaris, las capacidades mas tradicionales de link aggregation tambien en Solaris.
Un abrazo.
En realidad los 40Gb ya están aqui con Infiniband, y con un coste de la solución (tarjetas, switches, fabrics, etc…) menor que 10GboE. Lo que pasa es que Infiniband se asocia a HPC…
@Victor, gracias por la aclaración. Pensaba que Crossbow estaba en Solaris ya. ¡Otra razón más para usar Opensolaris!
Hola nubeblog, tienes razón, pero intuyo que Infiniband, que es una tecnología excelente, será atropellada por el tren del Unified Fabric, aunque a las arquitecturas HPC será dificil el cambio, hay mucha experiencia y el performance es la máxima prioridad. Ya veremos …
Hola Miguel Angel, ¿como va todo? aunque la Broadcom NetXtreme II BCM5709 es de 1Gb, tiene según el fabricante soporte para NetQueue, utiliza el driver “bnx2″ revisa la parte “VMWARE RELATED” de este link
http://www.broadcom.com/support/ethernet_nic/faq_drivers.php
a ver si encuentras las variables especificas de tu interfaz. Suerte !!!
Gracias Florián ,eres muy amable. Revisaré el LINK que me has dejado. Un fuerte abrazo.