Насколько я понимаю, виртуальные машины (при условии Relative Weight
равно) получите равную долю процессора.
Когда виртуальной машине дается некоторое время обработки, не имеет значения, видит ли виртуальная машина одно ядро для использования или несколько ядер, поскольку обработка происходит независимо от массива процессоров на узле Hyper-V. Однако когда я установил Number of logical processors
установив от 1 до 4 в Hyper-V для конкретной виртуальной машины, я вижу огромное увеличение производительности.
Технические характеристики моей текущей настройки примерно следующие:
Хост Hyper-V имеет 32 ГБ ОЗУ, 24 логических процессора (неверное слово?), Несколько ТБ места.
Виртуальным машинам выделяется 6 ГБ ОЗУ, 1 или 4 ядра, несколько сотен ГБ пространства и выполняется 2008 R2.
Я испытал подобное на прошлых установках Hyper-V.
Виртуальные машины в каждом известном мне гипервизоре могут использовать дополнительные виртуальные процессоры для планирования дополнительных параллельных потоков выполнения.
Именно этот уровень абстракции между физической машиной и виртуальной машиной делает его не работать так, как вы описываете. ВМ не знает, сколько ядер у физического компьютера. ВМ не «видит» физические процессоры (или ядра) на физическом компьютере. Гипервизор предоставляет виртуальной машине сколько угодно виртуальных процессоров, а гостевая ОС использует эти виртуальные процессоры для планирования дополнительных параллельных потоков ... Общее количество виртуальных процессоров, которые гипервизор передает виртуальным машинам, может даже превышать количество физических процессоров / сердечники в машине.
Другими словами, виртуальная машина, когда ей назначается один vCPU, планирует свои потоки, как если бы у нее был только один CPU. Не имеет значения, сколько ядер находится в базовой физической машине. (Хотя стоит отметить, что физическая машина может запланировать один поток виртуальной машины на одном физическом ядре для одного кванта потока или временного отрезка, а затем запустить его на другом физическом ядре в следующий раз, когда он запланирован для запуска. Виртуальная машина имеет хотя понятия не имеет, что это происходит. Все, что он знает, это то, что он может планировать только один поток за раз, один за другим, потому что у него только один виртуальный процессор.)
И давайте очень четко обозначим наши условия здесь. Вы назначаете виртуальные ЦП или виртуальные ЦП виртуальным машинам, а не «ядрам». Ядра (я предполагаю, что вы имеете в виду физические процессоры, которые совместно используют один физический сокет) не равны виртуальным ЦП. Между ними есть слой абстракции. Если виртуальной машине назначен только 1 виртуальный ЦП, она может запланировать запуск только одного потока за раз. Вот почему ваша виртуальная машина работает быстрее с назначенными ей 2-4 виртуальными процессорами - потому что теперь она может планировать одновременное выполнение нескольких потоков.
Тем не мение, здесь определенно существует закон убывающей отдачи, поскольку чрезмерное количество виртуальных процессоров влечет все более высокие накладные расходы в таких вещах, как синхронизация и т. д.
Есть небольшие различия между тем, как гипервизоры Hyper-V и VMware планируют выполнение потоков виртуальных машин, и они различаются своим подходом к «избыточной подписке» физических ресурсов, но это хорошая общая концепция для начала.
Количество назначенных виртуальных процессоров имеет значение. Программное обеспечение, работающее на виртуальной машине, не знает о том, что оно находится на виртуальной машине и что хост способен на большее, чем то, что виртуальная машина представляет. Таким образом, если вы используете программное обеспечение, которое может использовать преимущества нескольких ядер ЦП, в виртуальной машине, которой назначено только одно ядро, программное обеспечение будет планировать только одно ядро для своих задач, а виртуальная машина также будет использовать только одно ядро хоста на время. После того как вы предоставите виртуальной машине больше ядер, программное обеспечение сможет запланировать больше параллельных задач, которые ЦП хостов будет планировать для виртуальной машины.
Будьте осторожны и не давайте виртуальным машинам слишком много, чтобы не вызвать разногласия. Если одна виртуальная машина имеет больше виртуальных ядер, чем хост, виртуальная машина будет бороться против самой себя, а в случае групповых запланированных гипервизоров, таких как vmware, виртуальная машина будет никогда не иметь возможности выполнить что-либо вообще (возможность превышения доступности, конечно же, заблокирована уровнем управления).