Estamos viendo que nuestro software se comporta de manera inusual en uno de los clientes donde se ejecuta dentro de una máquina virtual Windows 2008. El host es VMWare ESX Server.
El mayor problema que he visto es que nuestros procesos desconectan las conexiones de socket o las conexiones de socket caducan. Algunos de nuestros procesos se comunican entre sí a través de sockets TCP. En algunos casos, hacemos conexiones de socket a sistemas remotos (por ejemplo, WMI, JDBC).
Me hacen creer que la VM no tiene recursos. No tenemos acceso a los paneles de administración / rendimiento de ESX. También he aprendido que los números que ofrece el administrador de tareas o el administrador de tareas dentro de la VM del host no son una indicación real del estado del SO del host.
Podría escribir un programa que haga un montón de matemáticas de punto flotante e imprima el tiempo necesario. Luego compare ese tiempo con el mismo obtenido en diferentes máquinas virtuales o cajas de Windows reales.
Este enfoque es suficiente para que podamos determinar si la causa raíz es el rendimiento de la VM. Sin embargo, sería mucho más fácil convencer al cliente si hubiera una forma o herramienta estándar para hacerlo.
¿Hay uno?
fuente
Respuestas:
Tiendo a usar los mismos productos que utilizo para comparar el hardware físico.
http://www.passmark.com/products/pt.htm
Omita la prueba 3D, por supuesto, pero las otras pueden ser útiles, especialmente los puntos de referencia de disco y redes. Asegúrese de estar utilizando los controladores de red y de E / S adecuados, y asegúrese de que todas las configuraciones de Windows estén optimizadas para VM.
fuente
Para probar la red, uso iperf y netperf para hacer una prueba de esfuerzo.
Para probar la E / S de disco, use sqlio, que es otra herramienta estándar de la industria. Ejecute pruebas de E / S secuenciales y aleatorias con diferentes tamaños de bloque.
Para las pruebas de CPU / RAM, no puedo pensar en nada para Windows fuera de mi cabeza.
fuente