Я запускаю несколько виртуальных машин на мощном хосте Windows. Время от времениодна из виртуальных машин переходит в режим загрузки ЦП, занимая 100% ЦП ХОСТА.
Чтобы сделать HOST и другие виртуальные машины пригодными для использования, я нахожу неправильно работающую виртуальную машину и устанавливаю привязку процессора к одному логическому ЦП, после чего остальная часть машины становится пригодной для использования.
После перехода с вращающихся дисков на твердотельные накопители мой подход к решению этой проблемы перестал работать. Я использовал диспетчер задач Windows для поиска некорректно работающего PID, а затем использовал Windows Resource Monitor для поиска виртуальной машины. Я видел файл вроде:
J:\Virtual Machines\vm123\vm123-000004.vmdk
Из этой информации я знаю, что неправильно работающая VM — vm123. Однако после перехода на SSD-диски я не вижу никакой дисковой активности. Поэтому мне нужно найти другой способ получить эту информацию. Я предполагаю, что дисковая активность не отображается, потому что активность часто меньше 1 мс, но я не уверен.
На данный момент я буду использовать ProcessExplorer изИнструменты Sysinternals на docs.microsoft.com/.../downloads/sysinternals-suite. Он показывает все дескрипторы, связанные с процессом, и полную командную строку запущенного процесса.
Как мне получить виртуальную машину VmWare, связанную с данным PID? Я предполагаю, что есть команда Windows или PowerShell, которая даст мне ответ.
Я пытаюсь найти решение, которое является частью типичной установки Windows и не использует стороннее программное обеспечение.
решение1
Вам не нужно использовать Sysinternals Process Explorer; вы можете использовать встроенный диспетчер задач Windows для просмотра командной строки процесса vmware-vmx.exe
. Вам нужно включить его, перейдя на вкладку Details, щелкнув правой кнопкой мыши по заголовкам столбцов и добавив столбец «Command line». (Кроме того, Sysinternals — это не совсем стороннее программное обеспечение; Sysinternals является частью Microsoft.)
Чтобы получить командную строку программным способом, см. некоторые ответы на Как узнать аргументы командной строки запущенной программы?
Другой подход — проверить vmware.log
файлы запущенных виртуальных машин (расположенных в каталоге виртуальной машины). Самая первая строка покажет вам, какой PID она использует.