Eu executo várias VMs em um host robusto do Windows. De vez em quandouma das VMs entra no modo de rotação da CPU, ocupando 100% da CPU HOST.
Para que o HOST e outras VMs possam ser utilizadas, encontro a VM com mau comportamento e defino a afinidade do processador para uma CPU lógica e o restante da máquina agora pode ser utilizado.
Depois de passar de unidades giratórias para unidades de estado sólido, minha abordagem para fazer isso parou de funcionar. Eu costumava usar o gerenciador de tarefas do Windows para encontrar o PID com mau comportamento e, em seguida, usar a atividade de disco do Windows Resource Monitor para encontrar a VM. Eu veria um arquivo como:
J:\Virtual Machines\vm123\vm123-000004.vmdk
A partir dessas informações, sei que a VM com mau comportamento é vm123. Depois de mudar para unidades SSD, no entanto, não vejo nenhuma atividade no disco. Portanto, preciso encontrar outra maneira de obter essas informações. Suponho que a atividade do disco não aparece porque geralmente é inferior a 1 ms, mas não tenho certeza.
Por enquanto, usarei o ProcessExplorer deFerramentas Sysinternals em docs.microsoft.com/.../downloads/sysinternals-suite. Ele mostra todos os identificadores associados a um processo e a linha de comando completa do processo que está sendo executado.
Como posso obter a VM VMware associada a um determinado PID? Suponho que exista um comando do Windows ou um comando do PowerShell que me dará a resposta.
Estou tentando encontrar uma solução que faça parte de uma instalação típica do Windows e que não use software instalado de terceiros.
Responder1
Você não precisa usar o Sysinternals Process Explorer; você pode usar o Gerenciador de Tarefas integrado do Windows para visualizar a linha de comando do vmware-vmx.exe
processo. Você precisa habilitá-lo acessando a guia Detalhes, clicando com o botão direito nos títulos das colunas e adicionando a coluna "Linha de comando". (Além disso, o Sysinternals não é exatamente um software de terceiros; o Sysinternals faz parte da Microsoft.)
Para obter a linha de comando programaticamente, consulte algumas das respostas para Como descubro os argumentos da linha de comando de um programa em execução?
Outra abordagem seria inspecionar os vmware.log
arquivos das VMs em execução (localizadas no diretório da VM). A primeira linha dirá qual PID ele usa.