Aplicación "no compatible" en una máquina virtual?

10

Compramos algo de software de una empresa pequeña, es un administrador de flujo de trabajo de contenido de video de Windows de 32 bits, han sido personalizados.

Hemos estado trabajando bien durante más de un año ejecutando este código en una VM VMWare ESXi 4.1u2 en W2K3EE-32-bit (eso es lo que admiten ejecutarlo).

Luego actualizaron su código hace aproximadamente un mes y comenzamos a ver que una de las vCPU se vinculaba periódicamente al 100%, la segunda vCPU está bastante inactiva, digamos 5-7%, por lo que asumimos que el código está mal enhebrado y los contactamos sobre eso.

Ahora han regresado a nosotros diciendo que su código no funciona en una VM, han sabido sobre este requisito durante aproximadamente 18 meses, y que quieren que lo V2P. Dicen que solo ven este problema cuando se ejecutan dentro de máquinas virtuales. Tengo una llamada con su programador sénior programada en unas pocas horas para discutir.

Ahora, afortunadamente, tenemos algunos exámenes físicos en los que podemos hacer esto, un poco lento pero factible.

Sin embargo, mi pregunta es que, dado que esta VM no toca ningún hardware directamente, está en un host muy moderno y en realidad tiene requisitos muy bajos (2 x vCPU, 4GB, disco de arranque de 20GB, disco de datos de 100GB, disco único vNIC y nada más) qué podría ser el problema con ejecutarlo en una máquina virtual, si hay uno?

Obviamente, estoy persiguiendo esto con ellos, pero me preguntaba si alguien más ha encontrado una aplicación regular, que de alguna manera se comporta mal dentro de una VM pero no en un físico.

Chopper3
fuente
¿Ambas vCPU se extraen de la misma CPU? ¿Tiene configurado que cada núcleo real se asigne directamente a una vCPU? ¿Estás haciendo algo divertido como tener habilitado el subprocesamiento en tus CPU? Estas son algunas preguntas que deberían ayudar a abordar cualquier cosa que pueda causarles una desaceleración que pueda abordar. Probablemente tendrá una mejor idea después de hablar con el programador senior, ya sea sobre cómo abordar los problemas que pueden surgir al ejecutarlo en una máquina virtual o sabrá con certeza si simplemente lo están haciendo mal. Podría ser que el código esté escrito en Java.
Wilshire
Dejo que ESXi haga lo suyo en términos de programación de procesos, y en la serie 55xx Xeons hyperthreading no se considera 'gracioso', funciona y es muy útil. Ah, por cierto, y el código .NET 3.5.
Chopper3
Sé que MySQL Cluster aparentemente tampoco funciona "oficialmente" en un entorno virtualizado. ¿Razón? ¡No sé! : P
Ben Ashton

Respuestas:

3

Si bien no puedo hablar por este proveedor o el paquete de software, he trabajado para un proveedor grande (multinacional), donde una de las piezas de software que vendieron tenía problemas conocidos muy específicos cuando se ejecutaba en VMware.

En este caso, un problema podría causar el bloqueo del software, y el otro podría causar corrupción de datos. Como tal, se aconsejó a los clientes que no ejecutaran el software en un entorno virtual. Algunos todavía lo hicieron, y en todos los casos que conocía, se toparon con uno o ambos problemas.

Entonces, aunque es raro, puede haber casos en los que el software no funciona como se esperaría en VMware.

Si bien me doy cuenta de que no ayuda directamente a su problema, sí muestra que VMWare no siempre es el sistema perfecto.

Nota al pie: en este caso, el proveedor pudo trabajar con VMware para encontrar resoluciones (algunas correcciones de código, algunos cambios de configuración de VMWare), y ahora tienen una guía (muy específica) sobre cómo ejecutar el software en VMWare.

Sam
fuente
Ese es exactamente el tipo de cosas por las que estoy triste pero agradecido de escuchar, como mencioné a Janne en su respuesta, nos acostumbramos tanto a que las cosas funcionen correctamente en las máquinas virtuales que encontrar un conjunto de circunstancias tan extraño me dejó un poco desconcertado para ser honesto , así que escuchar de ti que no estoy solo en esto es reconfortante al menos. Todavía no he escuchado nada positivo del proveedor de software, pero sé que están investigando el problema, desafortunadamente no puedo imaginar una solución durante un mes más o menos. Gracias de nuevo.
Chopper3
3

Con ESX v5 y el límite de Monster VM (32vCPU 1TB RAM), la cantidad de aplicaciones que tienen problemas con VM se está reduciendo. La mayoría de los que he experimentado son: - depender del tiempo para ser lineal (procesos en tiempo real o aplicaciones que necesitan tener tiempo lineal ... esto generalmente se puede ajustar) - aplicaciones que causan muchas interrupciones de hardware o cambio de contexto

En la mayoría de los casos, debería poder pedirle a su representante de vmware que hable con esos tipos. Creo que vmware todavía tiene un equipo de personas dedicadas a hacer que las cosas funcionen (tenían un laboratorio de soporte solo para esto en los primeros días).

En cuanto a una solución, tuve un problema similar con VM que tenía un alto uso de CPU (pero el host tenía muchos recursos de CPU libres). Solucionamos el problema migrando a un servidor con una CPU Nehalem y cambiando el nivel de compatibilidad de la CPU en EVC (si tiene un clúster con DRS / HA)

hdex
fuente
Gracias por su respuesta, muy amable de su parte cuando realmente no es una pregunta en blanco y negro. Sus ejemplos son muy útiles, voy a volver atrás y examinar el cambio de contexto en particular. Ah, y todos nuestros servidores están exactamente en la misma CPU (X5690) con EVC configurado de manera uniforme, pero gracias de nuevo.
Chopper3
2

He visto un problema similar con VMware ESX + Debian 6 + OpenLDAP 2.4.x (cualquiera que sea la versión exacta de OpenLDAP es apt-gettable ...).

En las operaciones del día a día funciona bien, pero cosas como importar un archivo LDIF grande con 400 000 entradas son muy lentas (50-100 veces más lento que con servidores físicos). Además, con la evaluación comparativa de alto volumen y larga duración, todo transcurre sin problemas con un par de milisegundos de tiempo de respuesta, pero ocasionalmente hay picos extraños que varían de 500 a 25 000 (!) Milisegundos.

Con los servidores físicos no puedo reproducir estos problemas. Y sí, pasé alrededor de tres semanas tratando de aislar el problema, ajustando todo tipo de parámetros desde los parámetros del sistema operativo hasta los valores de bofetada a los valores de BerkeleyDB ... nada ayudó.

Janne Pikkarainen
fuente
Muchas gracias por compartir sus experiencias, no puedo decir que no encuentro todo esto un poco extraño: soy un experto en virtualización de experiencias y estoy tan acostumbrado a las cosas que funcionan para encontrar una aplicación que haga esto ha sacudido mis creencias de alguna manera, así que es bueno saber que no estoy en una posición aislada. Gracias.
Chopper3
1
Otros dos ejemplos: Atlassian dice que ambos Jiray Confluenceno se recomiendan para ejecutarse en un entorno VM (ware). Debe haber un patrón para estas excepciones, simplemente no he descubierto aún qué podría ser. Mi instalación de OpenLDAP no requiere mucha E / S (3 MB / s de escritura y no demasiadas IOPS en los picos durante el punto de referencia), utiliza quizás un 20-40% de CPU y alrededor de 150 MB de RAM. No debería ser demasiado difícil de manejar. Quizás tenga algo que ver con el subprocesamiento, pero vmstat informa que los cambios de contexto, etc., están en el nivel normal.
Janne Pikkarainen
Mi teoría actual es que esto tiene algo que ver con el cronometraje del sistema operativo. VMware ha tenido todo tipo de problemas extraños de reloj en el pasado e incluso ahora a veces tiene que pasar algunos tsc=pitparámetros elegantes durante el arranque, y al menos OpenLDAP es MUY sensible a la precisión del reloj del sistema. Tal vez debería ordenar todas las aplicaciones problemáticas y ver si todas usan mucho gettimeofday()o no.
Janne Pikkarainen
Gracias de nuevo, tiene razón sobre el tiempo en VM, está inherentemente en todas partes, así que lo entiendo, pero no puedo evitar pensar que incluso si eso fuera un problema, sería un problema muy rápido para nuestros proveedores para detectar su código, tengan en cuenta que en realidad no es una aplicación urgente, solo toma el contenido de video y lo procesa, hmmm. Gracias de nuevo.
Chopper3