У меня есть ситуация, когда узел кластера Hyper-V 2012 не может поддерживать 2 виртуальные машины, хотя я считаю, что это необходимо. В настоящее время я играю с 96 ГБ ОЗУ и хочу, чтобы работали 2 виртуальные машины по 47 ГБ (статическая ОЗУ). Это оставляет 2 ГБ для хоста, что должно быть достаточно. Однако я не могу запустить вторую виртуальную машину, потому что программа жалуется, что для нее недостаточно памяти.
Затем я уменьшил каждую виртуальную машину до 46 ГБ, но она по-прежнему не поддерживает 2 виртуальные машины. Запустив «taskmgr» с узла, он сообщает, что 51 ГБ «используется», а доступно «44,9 ГБ». Я не понимаю, почему виртуальная машина размером 46 ГБ будет иметь накладные расходы в 5 ГБ в разделе хоста. Если посмотреть на запущенные процессы, то объем ОЗУ в списке составляет менее 500 МБ.
Я хотел бы сказать Hyper-V, чтобы он зарезервировал все, кроме 2 ГБ, только для использования виртуальной машины.
Вдобавок было бы еще лучше знать, зачем гипервизору «нужны» 5 ГБ. Есть ли способ узнать, что Hyper-V делает внутри ОЗУ? Или есть новый расчет для Hyper-V 2012 относительно того, сколько оперативной памяти действительно необходимо хосту (поскольку 2 ГБ не сокращают его)?
Изменить - 2014-02-14
После обзора 4 различных хостов Hyper-V Server 2012r2 и 2008r2, невыгружаемый пул линейно растет вместе с физически установленной оперативной памятью. Неважно, AMD это CPU или Intel. Не имеет значения, является ли хост частью кластера Windows или нет. Не имеет значения, присоединен ли хост к домену или нет. И не имеет значения, сколько виртуальных машин работает на хосте (или сколько оперативной памяти потребляют эти виртуальные машины). Наконец, я считаю, что это будет поведение и для 2012r1, потому что у меня были эти симптомы, когда все хосты 2012r2 были 2012r1.
Во всех случаях я обнаружил, что умножение объема установленной оперативной памяти (в ГБ) на 0,0425 покажет вам, сколько оперативной памяти (в ГБ) теряется в невыгружаемом пуле. (Это очень близкая оценка.)
Поэтому, пока Microsoft не исправит свое программное обеспечение или официально не признает, что такое поведение является преднамеренным, ответ состоит в том, чтобы использовать расчет, который обычно используется всеми (как представлено в ответе ниже), а затем добавить результат вышеуказанного расчета для учета RAM вы потеряете для невыгружаемого пула. (Или, если хотите, у меня есть резюме с примерами здесь.)
PS: Я считаю важным отметить, что я писал «GB», но я просто использую то, что сообщает Windows. Числа, сообщаемые Windows и RAMMap, являются не ГБ / КБ, а фактически ГБ / КБ, поэтому умножьте результат вычисления невыгружаемого пула на 1024, чтобы сравнить его с числом «K», сообщаемым RAMMap.
300 МБ для гипервизора плюс 32 МБ для первого ГБ ОЗУ, выделенного для каждой виртуальной машины, плюс еще 8 МБ для каждого дополнительного ГБ ОЗУ, выделенного для каждой виртуальной машины, плюс 512 МБ для операционной системы хоста, работающей в корневом разделе
Как правило, планируйте выделить не менее 512 МБ памяти для корневого раздела для предоставления таких услуг, как виртуализация ввода-вывода, поддержка файлов моментальных снимков и управление дочерними разделами.
300 + 32 + (45 * 8) = 692 МБ для первой ВМ
692 + 32 + (45 * 8) = 1084 для обеих ВМ
1084 + 512 = 1596 МБ всего с учетом практического правила
Так что это будет просто потребление гипервизора. Теперь, учитывая, что у вас используется более 5 ГБ, даже когда подготовлена первая виртуальная машина. Я бы посоветовал посмотреть вывод списка задач в командной строке и поискать серверные процессы, потребляющие оперативную память.