У меня есть сервер (четырехъядерный) под управлением Windows Hyper-V Server 2008 R2 с двумя гостевыми виртуальными машинами Windows Server 208 R2 Standard.
Я заметил количество логических процессоров установка (под Процессор) для каждой виртуальной машины по умолчанию установлено значение 1, но позволяет мне выбирать от 1 до 4 «виртуальных процессоров» (или, как я полагаю, «логических процессоров»).
У меня следующие вопросы: a) Сопоставляются ли эти «виртуальные процессоры» / «логические процессоры» напрямую с ядрами моего четырехъядерного процессора Intel Q6600? б) Целесообразно ли в этом случае установить значение 2 для обеих гостевых виртуальных машин? Достаточно ли при этом мощности процессора для хоста Hyper-V?
Наряду с вычислительной мощностью мне также интересно, могу ли я зарезервировать определенный объем оперативной памяти для хоста Hyper-V.
Это компромисс. Допустим, у вас есть четыре физических ядра и две виртуальные машины.
Если сопоставить два виртуальных ядра в каждой виртуальной машине, то почти каждый гость увидит то, что он ожидает. Он увидит два ядра, над которыми он рассчитывает получить полный контроль и более или менее получить это. (Предполагая, что нагрузка на хост невысока.) Вы не будете часто путать гостевой планировщик со случаем, когда он назначает задачу ядру, ожидая, что задача будет выполнена немедленно, а вместо этого задача не выполняется, потому что физическое ядро не выполняется. доступный. Однако, если одному гостю не хватает ЦП, а другому бездействовать, два ядра будут вертеть руками.
С другой стороны, если вы дадите каждому гостю четыре виртуальных ядра, каждый гость сможет использовать всю доступную мощность процессора, когда другому гостю и хосту это не нужно. Однако, когда есть загрузка из другого источника, планировщик гостя не получит ожидаемого поведения, и некоторые задачи начнутся немедленно, а некоторые не будут так, как планировщик гостя не может легко ожидать и с ними справиться.
Я рекомендую, как правило, размещать столько физических ядер, сколько у вас есть в каждой виртуальной машине, для которых может потребоваться много ЦП. Исключением будет случай, если у вас есть виртуальные машины, которые критически зависят от задержки. Я бы также уменьшил количество ядер на любых «меньших» или «менее важных» виртуальных машинах, которые используют физический блок совместно с более важными виртуальными машинами.
Гипервизор назначает логические ядра физическим ядрам в рамках своей политики планирования. Нет фиксированного сопоставления, если вы его специально не сделаете. (Что я не рекомендую, за исключением одного конкретного случая, когда вы хотите зарезервировать ядро для виртуальной машины, критичной к задержкам.)
Нет, нет прямого сопоставления логического процессора и физического процессора ... по сути ... в основном новый поток создается для каждого логического процессора с привязкой к определенному физическому ядру ... поэтому каждый поток может потреблять 100 % ресурсов на каждом ядре. Выделение 2 машин на все 4 ядра (логические ядра 2x4) может быть хорошей идеей, а может и не быть. Если ваши приложения интенсивно используют ЦП ... или порождают много потоков на обеих машинах ... оба будут периодически задерживаться в ожидании завершения работы другого ... назначение выделенных ядер для каждого экземпляра означает, что будет минимальная задержка бросания задач на CPU.
Вы не можете выделить конкретный объем оперативной памяти для хоста ... кроме ограничения количества, которое могут потреблять гости. Вы можете в других виртуальных фреймворках ... но Hyper-V - это новичок в блоке без всех наворотов старожилов.