Я использую Hyper-V в ОС Windows 10 Pro, а виртуальная ОС - это Windows Server 2012. Я использую только одну виртуальную машину за раз, чтобы проверить использование ЦП VPS по отношению к ОС HOST. Заметка : ВМ имеют те же ядра, что и оборудование (без ограничений на какие-либо ресурсы)
Я не знаю, почему загрузка ЦП ОС хоста почти вдвое выше, чем у ВМ.
Как показано на изображении выше, загрузка ЦП виртуальной машины составляет всего 37%, тогда как использование ЦП ОС хоста составляет 68%.
Результат различных тестов (по 1 ВМ за раз):
**VM Cpu Usage (%) : Host CPU Usage (%)**
13% : 35%
37% : 69%
50% : 96%
Я тестировал вышеизложенное в VMWare также результат почти такой же.
Я использую только одну запущенную виртуальную машину за раз, и нет ограничений на какие-либо аппаратные ресурсы. Я тестировал его на различном оборудовании и разных виртуальных машинах. Результат почти такой же.
По практическим результатам. Это означает, что я могу использовать только 50% ЦП ОС HOST (оборудование) с помощью Hyper-V или VMWare?
О, парень. Понимание использования ЦП - это немного сложнее, чем смотреть в диспетчер задач. Итак, поехали.
В виртуальных средах каждый (v) цикл процессора может (и будет) быть привязан к другому физическому ядру, поэтому отслеживание «ядра» не является допустимой методологией. Еще хуже отследить накопленную сумму. Перестань. Также прекратите использовать все свои phy-ядра 1: 1 в качестве виртуальных ядер, так как это приведет к много избыточных расходов от вашего хоста. Делайте это, когда вам это нужно, иначе нет.
Загрузка ЦП - это в основном требование, разделенное на емкость. Надеюсь, это можно лучше понять на простом примере:
Рассмотрим бутылку с водой емкостью 1000 мл, но бутылка заполнена только наполовину (500 мл). Требование для полного наполнения бутылки - еще 500 мл. Итак, коэффициент использования будет: = 500/1000 * 100 = 0,5 * 100 = 50%.
«Если бутылка наполовину заполнена, процент использования бутылки составляет 50%»
При запуске виртуальных серверов в Hyper-V часто возникает некоторая путаница при определении того, сколько ЦП фактически используется и где. Типичный первый подход - войти на хост Hyper-V и открыть диспетчер задач. Здесь большинство людей удивляются, увидев, что их использование ЦП минимально, несмотря на указание на то, что ЦП виртуальной машины загружен на 100%.
Истинное понимание использования виртуальных и физических процессоров Hyper-V требует, чтобы мы немного погрузились в теорию: количество доступных виртуальных процессоров (емкость) определяется количеством доступных физических ядер. Так, например, если у вас есть сервер с 4 сокетами, в котором каждый процессор имеет 8 ядер, это будет 32 логических процессора. В результате вы сможете выделить на виртуальном сервере максимум 32 виртуальных процессора. Каждый виртуальный ЦП сопоставляется с физическим ядром (например, через VT). Если установить 32% нагрузки на виртуальную машину, это может отображаться как нагрузка 64% (1% * 32 + резерв + накладные расходы на ядро).
Это резерв, который хост сохранит для этой виртуальной машины. Это процент от объема выделенного системного процессора, поэтому 10% здесь будут 10% от всех 16 ядер. Короче это много "неиспользованные, но отмеченные как использованные" запланированное процессорное время.
Процент общих ресурсов системы - это вычисленное псевдостатическое значение, и в качестве ресурса для него используется количество выделенных процессоров. Общий системный ЦП / выделенный ЦП * Резерв. Например 16/32 * 10 = 5%
Лимит виртуальной машины (в процентах) указывает, какой процент каждого ядра может потреблять виртуальная машина, рассчитанный за последние 30 секунд. Это ограничение действует для всех выделенных ЦП.
Процент общих ресурсов системы - это расчетное значение, основанное на количестве выделенных процессоров и установленном максимальном ограничении. Общий системный ЦП / выделенный ЦП * Лимит. В этом случае 16/32 * 90% = 45%
Это отобразится в диспетчере задач на хосте. Даже это не который верный.
Планировщик процессора использует относительный вес, чтобы определить, какая виртуальная машина получает предпочтение для вызовов ЦП. Виртуальная машина с более высоким весом получит больше процессорного времени, чем аналогичная виртуальная машина с меньшим весом. Это вводящее в заблуждение число, поскольку это не процент, а значения должны быть от 0 до 10 000. VMWare называет это «общими ресурсами», и его можно установить в дополнительных параметрах для каждой виртуальной машины.
Самый простой способ отслеживать «реальную» загрузку ЦП - посмотреть на консоль управления Hyper-V, не Диспетчер задач. Столбец использования ЦП отражает общие ресурсы ЦП хоста. Увидеть 10% использования здесь будет равносильно 10% для 32 процессоров, или, если мы вернем его к количеству ресурсов, выделенных для виртуальной машины, это будет 20% для 16 VCPU.
Консоль управления Hyper-V отлично подходит для получения общего обзора. Но чтобы погрузиться немного глубже и увидеть, какие ядра используются и в каком процессе, нам придется вывести Perfmon.