Сколько виртуальных процессоров или ядер я должен назначить моей гостевой ОС? [закрыто]

8

Я только что получил обновленную хост-машину и собираюсь перенести некоторые из этих достижений на мои гостевые ОС. В частности, у меня был один процессор с двумя ядрами, поэтому у моей гостевой ОС было только 1/1.

Теперь у меня есть один процессор с 8 ядрами, так что мне интересно, что бы порекомендовать для моей гостевой ОС сейчас?

  • 1 процессор / 4 ядра?
  • 2 процессора / 2 ядра?
  • 4 процессора / 1 ядро?

Мой инстинкт говорит придерживаться количества физических процессоров (или меньше), но основано ли это на реальности? Я потратил много времени на поиски ответа на этот вопрос, но, возможно, моя гугл-карма сегодня не в мою пользу.

reidLinden
источник
Ваш гость использует возможности обработки, которые у него есть, как сейчас?
OldWolf
Эта ссылка может быть полезной, предполагая, что вы сопоставляете свою конфигурацию с конфигурацией NUMA хоста.
Гленн

Ответы:

4

В моем собственном тестировании с VMWare Workstation, с использованием последних 64-разрядных тестов GeekBench 3, на хост-компьютере с 1 процессором, 2 ядра (с включенным HT, 4 ядра):

Хост-система:

  • 2866 одноядерных, 5939 многоядерных

Виртуализованная:

  • 1 процессор, 1 ядро: 2783 sc, 2705 мс
  • 1 процессор, 2 ядра: 2758 sc, 4271 мс
  • 1 процессор, 3 ядра: 2783 sc, 5234 мс
  • 1 процессор, 4 ядра: 2769 sc, 5793 мс

Так что, по крайней мере в моем тестировании, похоже, что есть преимущество в настройке виртуального количества ядер в соответствии с вашими физическими ядрами. Может я не прав. Я хотел бы обсудить.

Николас
источник
Отличное исследование! Спасибо. Не могли бы вы расширить это исследование, чтобы охватить некоторые другие варианты, которые я выделил в исходном посте? Как виртуальная система 2/2 и 4/1 (уже определив, что выход 1/4 выполняет настройки 1/4)? Это настоящий вопрос. Если вы выберете 1/4, 2/2 или 4/1 (при условии, что вы используете всего 4 виртуальных ядра). Кроме того, я признаю, что я не понимаю разницу в «одноядерном балле» и «многоядерном балле» в каждом из ваших примеров. Как машина с 1 процессором / 1 ядром может получить многоядерный счет вообще? То же самое для ситуации 1cpu / 4core, наоборот ...
reidLinden
2

Я не знаю, верна ли эта информация, но в не слишком давнем прошлом дополнительные гостевые ЦП не масштабировались так же хорошо, как центральные. На самом деле, лучшая рекомендация заключалась в том, чтобы не использовать один ЦП в гостевой конфигурации, если вы специально не тестировали / отлаживали многопоточное программное обеспечение в ваших гостях и не требовали среды SMP.

Изменить: Этот ответ относится к виртуализации десктопов, а не виртуализации серверов.

afrazier
источник
Итак, вы говорите, 1 процессор, с одним ядром?
reidLinden
Да. Позволяет ли рабочая станция VMware устанавливать эти значения независимо сейчас? Я не использовал его с версии 6, и это было просто число процессоров. Если вы собираетесь использовать в своих гостях многоядерные / многопроцессорные системы, я сомневаюсь, что очень важно, каким образом вы масштабируете вещи, если только не вступят в силу лицензионные соображения (количество «сокетов» и количество «ядер»). например, XP Home допускает только 1 сокет, но до 4 ядер, а XP Pro допускает 2 сокета.
afrazier
да, у меня, похоже, есть возможность выбирать «# процессоры» и «# ядра» независимо ... На моей хост-машине установлен 1 процессор с 8 ядрами на Windows7 Professional, а моей (основной) guestOS является Windows Server 2003. ..
reidLinden
0

Самое большее, я даю гостевой ОС 2 ядра. Неважно, если вы делаете 1 процессор 2 ядра или 2 процессора 1 ядро ​​каждое. Настройка процессора для совместимости. Процессор / ядра не так хорошо масштабируются для гостевой ОС из-за планирования ядра / процессорного процесса. 2 ядра, кажется, сладкое место.

Metril
источник
Вы хотите избежать использования одного процессора и одного ядра для виртуальной машины, потому что если какая-либо операция, которую ОС не ожидает неожиданно заблокировать на хосте, блокируется вся виртуальная машина.
Дэвид Шварц
0

На данный момент есть небольшая разница. В некоторых случаях лицензирование программного обеспечения может зависеть от ядер или процессоров.

Виртуализировано: 1 процессор, 1 ядро: 2783 sc, 2705 мкс 1 процессор, 2 ядра: 2758 sc, 4271 мкс 1 процессор, 3 ядра: 2783 sc, 5234 мкс 1 процессор, 4 ядра: 2769 sc, 5793 мс Так что, по крайней мере, в моем тестировании похоже, что есть преимущество в настройке виртуального числа ядер в соответствии с вашими физическими ядрами. Может я не прав. Я хотел бы обсудить.

Это только в тесте, который использует все ядра. Большинство приложений не масштабируют производительность линейно с количеством ядер, поскольку они просто не используют дополнительные ядра.

Существует также некоторый уровень накладных расходов с добавлением большего количества ядер. Короче говоря, добавьте только количество ядер, необходимых вашему приложению, на нужных вам уровнях. Тот факт, что на вашем хосте 4 ядра, не означает, что каждая виртуальная машина должна получить 4 ядра.

В ряде сред, которыми я управляю, у нас есть два 10-ядерных ЦП с общим количеством 40 логических потоков, и мои контроллеры домена все еще получают только два ядра.

Curtis
источник
-2

Я очень шокирован тем, что на эти часто задаваемые вопросы до сих пор нет полного ответа. Ваш центральный процессор должен поддерживать некоторые технологии виртуализации, например Intel VTx. Это позволяет вам «туннелировать» всю мощь процессора в гостевую операционную систему. В противном случае произойдет огромное падение скорости из-за эмуляции процессора. Если у вас есть ЦП с гиперпоточностью, вы должны увидеть 8 процессоров для четырехъядерного ЦП в диспетчере устройств вашей хост-машины (гиперпоточность удваивает количество ваших ядер). В этом случае вы можете назначить 1 процессор с 4 ядрами для вашей гостевой ОС. Если в вашей системе нет другого физического процессора, не назначайте более 1 процессора вашей виртуальной машине. Вы можете назначить больше или меньше ядер для вашей гостевой ОС, в зависимости от ваших потребностей, но вы не должны t назначить значение выше, чем ваши ядра с гиперпоточностью. Но обратите внимание, что вашему хосту также нужна некоторая мощность процессора. Я обычно устанавливаю половину числа своих гиперпоточных ядер и половину своей памяти, например, 8192 МБ, когда у вас 16 ГБ ОЗУ. Обычно это хорошая настройка, но не в том случае, если вы хотите запускать более одной виртуальной машины одновременно.

martinjohannes93
источник