Ejecuto varias máquinas virtuales en un potente host de Windows. De vez en cuandoUna de las máquinas virtuales entra en modo de giro de CPU y ocupa el 100 % de la CPU del HOST..
Para que el HOST y otras máquinas virtuales sean utilizables, encuentro la máquina virtual que se comporta mal, configuro la afinidad del procesador en una CPU lógica y el resto de la máquina ahora se puede utilizar.
Después de pasar de unidades giratorias a unidades de estado sólido, mi enfoque para hacer esto dejó de funcionar. Solía usar el Administrador de tareas de Windows para encontrar el PID que se comporta mal y luego usar la actividad del disco del Monitor de recursos de Windows para encontrar la VM. Vería un archivo como:
J:\Virtual Machines\vm123\vm123-000004.vmdk
A partir de esta información, sé que la máquina virtual que se comporta mal es vm123. Sin embargo, después de pasar a unidades SSD, no veo ninguna actividad en el disco. Entonces necesito encontrar otra manera de obtener esta información. Supongo que la actividad del disco no aparece porque la actividad suele ser inferior a 1 ms, pero no estoy seguro.
Por ahora, usaré ProcessExplorer deHerramientas de Sysinternals en docs.microsoft.com/.../downloads/sysinternals-suite. Muestra todos los identificadores asociados con un proceso y la línea de comando completa del proceso que se está ejecutando.
¿Cómo puedo obtener la máquina virtual VmWare asociada con un PID determinado? Supongo que existe un comando de Windows o un comando de PowerShell que me dará la respuesta.
Estoy intentando encontrar una solución que forme parte de una instalación típica de Windows y que no utilice software instalado por terceros.
Respuesta1
No es necesario utilizar Sysinternals Process Explorer; Puede utilizar el Administrador de tareas integrado de Windows para ver la línea de comandos del vmware-vmx.exe
proceso. Debe habilitarlo yendo a la pestaña Detalles, haciendo clic derecho en los encabezados de las columnas y agregando la columna "Línea de comando". (Además, Sysinternals no es exactamente software de terceros; Sysinternals es parte de Microsoft).
Para obtener la línea de comandos mediante programación, consulte algunas de las respuestas a ¿Cómo puedo saber los argumentos de la línea de comando de un programa en ejecución?
Otro enfoque sería inspeccionar los vmware.log
archivos de las máquinas virtuales en ejecución (ubicadas en el directorio de la máquina virtual). La primera línea le dirá qué PID utiliza.