Сцена: 16-ядерный хост VMware ESX 4.1. Предположим, что хост вообще не перегружен ни одним ресурсом. Задержки хранилища очень низкие, общее использование памяти ниже физического объема оперативной памяти, и ни одна виртуальная машина не показывает время% RDY или значительную активность файла подкачки.
Однопроцессорная виртуальная машина Windows 2008 R2, полностью обновленная до последних версий VMware Tools, на которой запущен уровень приложений PeopleSoft (простите за нечеткость), WebLogic, Jrockit и т. Д. Esxtop и vcenter показывают использование физического ЦП ниже 70%, физической памяти ниже 80% , гостевой компьютер не обнаруживает признаков значительной активности файла подкачки на диске.
Пользователи сообщают, что машина не обрабатывает столько событий, сколько она «должна», и когда они пытаются войти в систему, через RDP происходит значительная задержка событий мыши и клавиатуры. Все в нем кажется «медленным».
К виртуальной машине добавляется второй ЦП. Время% RDY не увеличивается заметно, так что это считается разумным действием. Воспринимаемая и измеряемая производительность приложений значительно улучшается.
Все чешут затылки, пожимают плечами и счастливы, что это исправлено. Администраторы, прочитавшие руководство по устранению неполадок производительности VMware, недоумевают.
Что мы упустили?
CPU Ready показывает, насколько заняты центральные процессоры, а не гостевые. Высокий% RDY, вероятно, будет соответствовать высокой загрузке ЦП на виртуальной машине, но не обязательно, и если у вас много виртуальных машин, это может быть не та, о которой идет речь.
Из сообществ VMWARE:
Для каждого цикла времени у сервера есть определенное количество доступных CPUS (включая ядра) для предоставления VMS. Допустим, у вас есть 2 четырехъядерных процессора. Тогда у вас есть 8 доступных CPUS. Итак, если у вас работает 8 виртуальных машин, и каждая из них имеет только один виртуальный ЦП, тогда все они будут работать в течение этого цикла. Проблема возникает, когда у вас есть виртуальные машины, которым требуется больше процессоров, чем доступно. Например, если у вас 6 VMS с 1 виртуальным процессором. каждая и 1 ВМ с 4 виртуальными процессорами. Очевидно, они не могут работать одновременно. VMware должна попытаться разместить все vCPUS одной виртуальной машины одновременно. Это означает, что для этого одного цикла либо 2 VMS находятся в режиме ожидания, либо виртуальная машина с несколькими vCPU находится в режиме ожидания.
Некоторые приложения, которые являются многопоточными, будут использовать несколько виртуальных ЦП, что повысит производительность.
В вашем случае, действительно ли вы выполняли статистику / ведение журнала perfmon с течением времени, чтобы получить базовый уровень, а затем выполняли его после добавления vCPU? Это, вероятно, даст вам лучшее представление, чем использование встроенных инструментов VMWare, о том, в чем действительно заключаются различия, особенно на уровне приложения / процесса.