VMXNET3 recibe el tamaño del búfer y el uso de memoria

12

Antecedentes

Tuvimos un incidente en el que un clúster de conmutación por error de Windows sufrió una interrupción. Una autopsia mostró que el nodo fue "eliminado" como se describe en este artículo .

Recientemente hemos migrado completamente este clúster a nuestro entorno VMware, y parece que el evento descrito anteriormente puede haber sido la causa de la interrupción.

El artículo VMware KB asociada sobre este habla sobre el aumento de la Small Rx Buffersy el Rx Ring #1entorno, pero advierte que el aumento de estos demasiado podría aumentar drásticamente sobrecarga de memoria en el host.

Después de una auditoría de los Network Interface\Packets Received Discardedcontadores de rendimiento para nuestras ~ 150 máquinas virtuales Windows, 22 vNIC en 16 invitados tenían algunos paquetes descartados.

Una cantidad lo suficientemente pequeña como para no preocuparme de gravar a los hosts con el uso de memoria adicional, pero quiero entender cómo se usa la memoria para estas configuraciones y de dónde proviene la memoria.

Preguntas

  1. ¿Cuál es la relación entre el número de buffers y el tamaño del anillo?
  2. ¿Cómo se calcula la cantidad de memoria utilizada para los valores dados de estas configuraciones?
  3. Debido a que estas configuraciones están en la NIC misma dentro del SO huésped, supongo que son configuraciones de controladores. Esto me hace pensar que la RAM utilizada podría ser un grupo paginado o no paginado.
    1. ¿Es esto correcto?
    2. Si es así, ¿debería estar preocupado por eso?
  4. ¿Hay inquietudes que no estoy teniendo en cuenta aquí?

Estamos tratando de determinar si existe un inconveniente para establecerlos en sus máximos en las máquinas virtuales afectadas, aparte del uso de la memoria del host VMware. Si aumentamos el riesgo de que la memoria del grupo se agote en el invitado, por ejemplo, estamos más inclinados a comenzar de a poco.

Algunas (quizás todas) de estas preguntas pueden no ser específicas de VMware o la virtualización.

briantista
fuente
He visto cosas realmente inestables cuando el motor de descarga TCP de la NIC física se estaba comportando mal y las máquinas virtuales exhibían un comportamiento extraño, podría ser una ventaja que puede seguir.
SpacemanSpiff
@SpacemanSpiff vale la pena verificarlo, pero solo 16 VM de más de 150 exhiben el comportamiento. Esos 16 se extienden por el clúster de 12 nodos, y todos reciben ráfagas ocasionales de tráfico que parece ser lo que desencadena los síntomas descritos en el artículo de KB. Algunos de estos son clústeres de Windows, por lo que no se mueven con DRS; de lo contrario, podría investigar si todos los invitados afectados mostraron paquetes descartados mientras se encontraban en un host específico antes de que se les desconectara. Comprobaré nuevamente y veré si puedo encontrar alguna correlación. Gracias.
briantist
Microbursting quizás, ¿qué hardware es este?
SpacemanSpiff
@SpacemanSpiff Servidores de IBM, algunos modelos y revisiones diferentes, tampoco estoy seguro de qué NIC, puedo verificar detalles mañana.
briantist

Respuestas:

5

¿Cuál es la relación entre el número de buffers y el tamaño del anillo?

Están relacionados, pero son independientes. El "anillo" rx se refiere a un conjunto de memorias intermedias en la memoria que se utilizan como cola para pasar los paquetes de red entrantes desde el host (hipervisor) al invitado (VM de Windows). El controlador de red reserva la memoria en el invitado y se asigna a la memoria del host.

A medida que entran nuevos paquetes de red en el host, se colocan en el siguiente búfer disponible en el anillo. Luego, el host desencadena una IRQ en el invitado, a lo que el conductor invitado responde quitando el paquete del anillo y enviándolo a la pila de red del sistema operativo invitado, que presumiblemente lo envía a la aplicación de invitado para recibirlo. Suponiendo que los paquetes lleguen lo suficientemente lento y que el controlador invitado los procese lo suficientemente rápido, siempre debe haber una ranura libre en el anillo. Sin embargo, si los paquetes llegan demasiado rápido o si el invitado los procesa demasiado lento, el anillo puede llenarse y los paquetes pueden caerse (como ha visto en su situación).

Aumentar el tamaño del anillo puede ayudar a mitigar este problema. Si lo aumenta, habrá más espacios disponibles en el ring a la vez. Esto pasa a la segunda configuración, "Small Rx Buffers", que es la cantidad total de buffers disponibles que se pueden usar para llenar las ranuras en el anillo. Debe haber al menos tantos buffers como ranuras en el ring. Por lo general, quieres más. Cuando el invitado saca un búfer del anillo para entregarlo a la pila de la red del invitado, no siempre puede devolverse inmediatamente al controlador. Si eso sucede, tener buffers de repuesto para llenar el anillo significa que puede pasar más tiempo sin dejar caer los paquetes.

Los Rx Ring # 1 / Small Rx Buffers se usan para cuadros no jumbo. Si tiene una configuración de NIC predeterminada, ese es el único anillo que se utilizará.

¿Cómo se calcula la cantidad de memoria utilizada para los valores dados de estas configuraciones?

Suponiendo que está hablando de tramas no jumbo, cada búfer debe ser lo suficientemente grande como para almacenar un paquete de red completo, aproximadamente 1.5kb. Entonces, si tiene 8192 buffers disponibles, eso usaría 12MB. Un anillo más grande también usará más memoria, pero los descriptores son pequeños (bytes), por lo que realmente debe preocuparse por los búferes.

Debido a que estas configuraciones están en la NIC misma dentro del SO huésped, supongo que son configuraciones de controladores. Esto me hace pensar que la RAM utilizada podría ser un grupo paginado o no paginado.

Sí, es un grupo no paginado. Si las memorias intermedias de anillo se localizaran, probablemente resultaría en paquetes descartados mientras las memorias intermedias se volvían a localizar.

¿Hay inquietudes que no estoy teniendo en cuenta aquí?

No estoy seguro de que esto sea relevante para su situación, pero vale la pena señalar que un anillo más grande aumentará la huella de caché de la ruta de red rx. En microbenchmarks, verá que un anillo más grande generalmente perjudica el rendimiento. Dicho esto, en aplicaciones de la vida real, si se cae un paquete, eso suele ser un problema mayor que una pequeña ganancia de rendimiento en ráfagas de velocidad.

Fuente: trabajé en VMware.

Roger Jacobson
fuente
1
Gracias Roger, excelente primera respuesta. No he estado en esta compañía por un tiempo, por lo que este problema ha estado fuera de mi radar, pero para completar, ¿hay alguna preocupación por el uso de la memoria para establecerlos al máximo? El artículo de KB hace que parezca que podría usar mucha memoria de esa manera, pero parece que la cantidad sería bastante pequeña. Pregunto esto porque tampoco está claro cómo dimensionar estos valores que no sean prueba y error, por lo que puede ser más fácil establecerlos al máximo si no hay / poca desventaja.
briantist 01 de
1
Re: uso de la memoria, dos cosas que señalaría: 1) Si no está utilizando marcos jumbo, estoy de acuerdo, la cantidad de memoria en la configuración máxima sigue siendo bastante pequeña. Si está utilizando marcos jumbo, el tamaño del búfer es de alrededor de 9 kb y, por lo tanto, está utilizando más memoria. 2) La cantidad de memoria disponible en un grupo no paginado es menor que la cantidad total de memoria en el host. No soy un experto aquí, pero este enlace tiene un resumen bastante completo sobre cómo calcular la memoria disponible: blogs.technet.microsoft.com/markrussinovich/2009/03/10/…
Roger Jacobson
Genial gracias. Espero que esta respuesta ayude a alguien en el futuro (tal vez incluso me será si me encuentro con esto de nuevo!)
briantist
0

No tengo una respuesta para el punto 1-2-3, pero puede consultar con su ingeniero virtual sobre la configuración del host Vmware. Si él es VCP, entenderá las cosas :)

Realmente tiene que verificar su host porque los problemas de Windows podrían estar en el host y no en el invitado.

Hay muchas características de hardware que podrían explicar sus problemas, directpath io, rss, vcpu, esquema de administración de energía ...

Puedo darte un enlace que ayude a tu equipo virtual, o a ti :)

Este enlace se trata de ajustar el host http://buildvirtual.net/tuning-esxi-host-networking-configuration/

Y este pdf gordo:

http://www.vmware.com/pdf/Perf_Best_Practices_vSphere5.0.pdf

Y este es sobre rss:

http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2008925

YuKYuK
fuente
Gracias por la respuesta, pero soy un VCP. Esto no se trata realmente de la configuración del host en absoluto. El artículo de Microsoft al que me vinculé explica que el contador de rendimiento en cuestión no debe ser superior a 0, y está en varias máquinas virtuales. Estoy tratando de comprender mejor la configuración de vNIC más allá de lo explicado en el artículo de VMware KB.
briantist
-1

No estoy en condiciones de buscarlo completamente y dirigirlo a las páginas correctas, por lo que le pido que busque los detalles usted mismo ... (lo siento)

En Fail over Cluster hay 4 configuraciones que se pueden modificar; y no afectarán los buffers o paginados o no paginados ... Cambia la forma en que Fail over Cluster toma la decisión de considerar un nodo "eliminado". Estas configuraciones son:

SameSubnetDelay SameSubnetThreshold CrossSubnetDelay CrossSubnetThreshold

Es posible que no resuelvan su problema, pero ajustar estos puede sacarlo de problemas en este momento ...

Cuando regrese el lunes, volveré a esta publicación si tiene más preguntas.

HTH, Edwin.

Edwin van Mierlo
fuente
PD: ¿puede decirnos la versión de Windows que está ejecutando?
Edwin van Mierlo
Esto fue Windows 2008. Recibí una respuesta de VMware (después de todos estos meses), pero ni siquiera estoy en la compañía donde estaba cuando esto sucedió. La respuesta no es sencilla y he tenido la intención de leer su respuesta y publicar algo, pero no he tenido tiempo. Agradezco sus consejos sobre el clúster, pero no puedo probarlos en este momento.
briantist
Solo me doy cuenta de que la publicación original tiene un par de meses, eso no estaba muy claro en la aplicación de Android ... La próxima vez echaré un vistazo más de cerca ... mientras mi respuesta sigue siendo válida para otros usuarios que pueden buscar para experiencias similares
Edwin van Mierlo