我在一台強大的 Windows 主機上執行多個虛擬機器。時不時地其中一台虛擬機器進入 CPU 自旋模式,佔用主機 CPU 的 100%。
為了讓主機和其他虛擬機可用,我找到了行為不當的虛擬機,並將處理器關聯設為一個邏輯 CPU,機器的其餘部分現在可以使用了。
從旋轉驅動器轉移到固態驅動器後,我的方法不再有效。我曾經使用 Windows 工作管理員來尋找行為不當的 PID,然後使用 Windows 資源監視器磁碟活動來尋找 VM。我會看到一個像這樣的文件:
J:\Virtual Machines\vm123\vm123-000004.vmdk
從這些資訊中,我知道行為不當的虛擬機器是 vm123。然而,在遷移到 SSD 驅動器後,我沒有看到任何磁碟活動。所以我需要找到另一種方式來獲取這些資訊。我猜磁碟活動沒有顯示出來,因為活動通常小於 1 毫秒,但我並不肯定。
現在,我將使用 ProcessExplorerSysinternals 工具位於 docs.microsoft.com/.../downloads/sysinternals-suite。它顯示與進程關聯的所有句柄以及正在運行的進程的完整命令行。
如何取得與給定 PID 關聯的 VmWare 虛擬機器?我猜有一個 windows 指令或 powershell 指令可以給我答案。
我正在嘗試尋找典型 Windows 安裝的解決方案,並且不使用第 3 方安裝的軟體。
答案1
您不需要使用 Sysinternals Process Explorer;您可以使用Windows內建的任務管理器來查看進程的命令列vmware-vmx.exe
。您需要透過前往「詳細資料」標籤、右鍵單擊列標題並新增「命令列」列來啟用它。 (此外,Sysinternals 並不完全是第三方軟體;Sysinternals 是 Microsoft 的一部分。)
若要以程式方式取得命令列,請參閱以下問題的一些答案 如何找到正在運行的程式的命令列參數?
另一種方法是檢查vmware.log
正在執行的虛擬機器的檔案(位於虛擬機器的目錄中)。第一行會告訴你它使用的 PID。