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 Buffers
y el Rx Ring #1
entorno, 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 Discarded
contadores 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
- ¿Cuál es la relación entre el número de buffers y el tamaño del anillo?
- ¿Cómo se calcula la cantidad de memoria utilizada para los valores dados de estas configuraciones?
- 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.
- ¿Es esto correcto?
- Si es así, ¿debería estar preocupado por eso?
- ¿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.
fuente
Respuestas:
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á.
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.
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.
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.
fuente
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
fuente
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.
fuente