Гиперпоточность и виртуальные машины?

15

Я уже посмотрел на эту тему: Hyper-V и Hyper-threading: включен или выключен? , но единственный ответ является специфичным для Windows ....

Я строю сервер виртуальных машин (используя Proxmox VE, если это имеет значение), и мне было интересно, как гиперпоточность может влиять на виртуальные машины ...

В частности, если я увеличу количество виртуальных машин, поможет ли многопоточность или снизит производительность?

Кроме того, самыми крупными виртуальными машинами будут сервер терминалов с ~ 30 клиентами (4 ядра / 8 ГБ ОЗУ) и файловый сервер, если это поможет.

Обновление: Сервер Dell R410 с 1 ТБ RAID 10, 32 ГБ ОЗУ и Dual Intel Xeon E5530 (я не уверен насчет точной модели, но это был E55xx с частотой 2 ГГц)

Обновление: большинство виртуальных машин будет на KVM.

Soviero
источник
Пожалуйста, предоставьте спецификации сервера, который вы планируете использовать.
ewwhite
Также любопытно. Почему Promox VE против ESXi?
ewwhite
Вероятно, из-за ограничения ESXI в 16 ГБ ОЗУ на бесплатной лицензии
Tacticus
3
Я выбираю Proxmox вместо ESXi, потому что Proxmox имеет несколько дополнительных функций, таких как полное управление из веб-интерфейса, кластеризация, спецификации сервера не ограничены искусственно лицензированием и некоторые другие, которые я не могу вспомнить. Кроме того, 2.0 будет включать аутентификацию AD, что очень полезно для нас, не уверен, что ESXi делает ...
Soviero
1
Вы смотрели на oVirt?
Дядный

Ответы:

12

В общем, я оставляю HyperThreading ON для хост-серверов VM (VMWare ESXi, KVM, HyperV и т. Д.). Это относится к процессорам Intel Nehalem и более новым процессорам (серии 5500 и выше). Дополнительные потоки доступны для планирования нескольких виртуальных машин.

Вы также можете пересмотреть размеры ваших гостевых систем. Как правило, лучше всего начинать с выделения ЦП с виртуальных машин. Поскольку вы говорите о терминальном сервере, я бы на самом деле переместил его на 2 виртуальных ЦП, а не на 4 виртуальных ЦП. Гипервизору проще планировать время процессора для виртуальных машин с меньшим количеством ядер . Тем не менее, оперативная память по-прежнему важна, поэтому убедитесь, что ее достаточно.

Смотрите: http://omtconcepts.com/wp/?p=14

ewwhite
источник
Как именно два потока быстрее, чем четыре?
Совьеро
3
Не быстрее ... Легче планировать. Смотрите мое редактирование. Машина, о которой вы упомянули, будет иметь всего 8 ядер (16 с HyperThreading). Попытка найти ресурсы для планирования гостя с 4 виртуальными ЦП сложнее, чем с двумя виртуальными ЦП. У вас будет больше разногласий (и, следовательно, ниже производительность). Если вы планируете запускать других виртуальных гостей на этом сервере, имеет смысл использовать 1 и 2 гостевых виртуальных процессора.
ewwhite
3
Ваше мнение о планировании относится только к гипервизорам, которые выполняют «планирование банд», когда они пытаются выполнить некоторое приближение «всех или ни одного» виртуальных процессоров одновременно. Для гипервизоров, которые делают это, добавление большего количества виртуальных процессоров усложнит планирование ВМ. Я понимаю, что Кевин обновил свой вопрос, чтобы указать, что он хочет использовать KVM, в основном. Но я хочу отметить, что Hyper-V не выполняет планирование банд. Он полагается на паравиртуализацию гостевой ОС, чтобы избежать необходимости группового планирования.
Джейк Ошинс
Я не знал этого о Hyper-V, но это относится и к другим крупным гипервизорам.
ewwhite
1
KVM не работает по графику. На самом деле, только VMWare делает это, и даже они добавили некоторые механизмы, чтобы ослабить бандитское планирование безумия в v5
dyasny
4

Это действительно зависит. Если, как вы говорите, вы собираетесь «max out», что, я полагаю, означает перераспределение ЦП (назначить больше виртуальных ядер ЦП, чем у вас доступно, или ровно столько, сколько у вас доступно), тогда HT обязательно должен быть на.

Если у вас нет перераспределения, то обычно лучше проводить тестирование под ваши конкретные нагрузки - иногда HT может фактически снизить производительность.

dyasny
источник
Я планирую выделить столько ядер / потоков, сколько доступно, но я не планирую перераспределять.
Совьеро
Как вы думаете, ОС хоста вообще не требует процессорного времени? И если вы выделяете столько v-ядер, сколько у вас потоков с включенным HT, вы фактически перераспределяете по крайней мере на 70-80%, потому что даже когда HT увеличивает производительность, обычно это на 20-30%, а не на 100%, как можно предположить из подсчета потоков.
Десяный
Итак, не более 12 «ядер» (75% из 16) выделено?
Совьеро
1
Думаю, я не достаточно ясно Вы МОЖЕТЕ перераспределить, и в зависимости от нагрузки на ВМ, ЦП может вообще не стать узким местом. Более того, вам никогда не следует назначать больше процессоров для виртуальной машины, чем это абсолютно необходимо, потому что чем больше процессоров у виртуальной машины, тем сложнее ее планировать, поэтому многие виртуальные процессоры могут фактически снизить производительность. Что касается увеличения производительности на 20% за счет гиперпоточности - это не абсолютное значение, число может быть немного выше, ниже, равно нулю или даже отрицательно - в зависимости от нагрузки виртуальной машины.
Дядный
О хорошо Спасибо.
Совьеро
3

Есть много переменных, которые влияют на производительность виртуальной машины. HT - это только одна из переменных, но она также зависит от того, как настроена виртуальная машина.

Одна из переменных, влияющих на HT, зависит от типа используемого гипервизора.

Если вы используете легкие виртуальные машины, такие как VZ, VServer и т. Д., То совершенно очевидно, что HT принесет подходящие преимущества, поскольку эти виртуальные машины на самом деле не сильно изолированы и больше похожи на многопоточные программы.

Если вы используете тяжелые виртуальные машины, такие как KVM, Xen HVM и т. Д., То возможно, что HT будет мешать вещам, например, когда виртуальной машине выделяется два ЦП, но в итоге используется один HT на разных ядрах.

Поэтому лучше всего проверить свои настройки и посмотреть, что вам подходит.

sybreon
источник