ИТ База знаний
Полезно
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
Работа с памятью в Hyper-V
Интенсив по Виртуализации VMware vSphere 7
Самое важное про виртуализацию и VMware vSphere 7 в 2-х часовом онлайн-интесиве от тренера с 30 летним стажем. Для тех, кто начинает знакомство с виртуализацией и хочет быстро погрузиться в предметную область и решения на базе VMware
В этой статье рассмотрим тему использования оперативной памяти машины Hyper-V.
Динамическая память
Имеется два варианта выделения памяти виртуальным машинам. Может назначаться статический объем памяти или установить параметр динамической памяти. Если назначается статическая величина, то этот объем памяти остается неизменным, независимо в каком состоянии находится виртуальная машина.
При установке динамической памяти в Параметрах можно настроить следующие значения через Windows Admin Center или Консоль Hyper-V:
Как правило, когда вы настраиваете динамическую память, объем используемой памяти будет колебаться между значениями Минимум и Максимум. Следует проводить мониторинг использования памяти ВМ и настраивать эти значения так, чтобы они точно отражали фактические потребности виртуальной машины. в Случае, когда будет выделено минимальное значение памяти ниже того, что фактически необходимо для запуска виртуальной машины, эта нехватка может привести к тому, что узел виртуализации уменьшит объем памяти, выделенной для этого минимального значения памяти, что приведет к остановке работы виртуальной машины.
Интеллектуальная подкачка активна только в том случае, если одновременно выполняются следующие три условия:
Smart paging не позволит виртуальной машине выполнять «холодный запуск«, если необходимый объем памяти для запуска недоступен, но доступен минимальный объем памяти. Функционал используется только тогда, когда виртуальная машина, которая уже работала, перезагружается и выполняются два вышеуказанных условия.
Интенсив по Виртуализации VMware vSphere 7
Самое важное про виртуализацию и VMware vSphere 7 в 2-х часовом онлайн-интесиве от тренера с 30 летним стажем. Для тех, кто начинает знакомство с виртуализацией и хочет быстро погрузиться в предметную область и решения на базе VMware
Производительность памяти Hyper-V
Гипервизор делает виртуальную машину гостевой физической памяти для изоляции виртуальных машин друг от друга и предоставляет непрерывное (нулевое) пространство памяти для каждой гостевой операционной системы, как и в случае невиртуализованных систем.
Правильное изменение размера памяти для дочерних секций
Размер памяти виртуальной машины следует масштабировать как обычно для серверных приложений на физическом компьютере. Его необходимо изменить, чтобы правильно обрабатывалась ожидаемая нагрузка в обычном и пиковом времени, так как недостаток памяти может значительно увеличить время ответа, а также использование процессора или операций ввода-вывода.
можно включить динамическая память, чтобы разрешить Windows динамически изменять размер памяти виртуальной машины. В случае динамическая память, если приложения на виртуальной машине испытывают проблемы с большим объемом выделения памяти, можно увеличить размер файла подкачки для виртуальной машины, чтобы обеспечить временное резервное копирование, а динамическая память реагировать на нехватку памяти.
Дополнительные сведения о динамическая память см. в разделе обзор Динамическая память Hyper-v и в статье Динамическая память по настройке Hyper-v.
при выполнении Windows в дочернем разделе можно использовать следующие счетчики производительности в дочернем разделе, чтобы определить, испытывает ли дочерний раздел недостаток памяти и, скорее всего, будет работать лучше с более высоким размером памяти виртуальной машины.
Счетчик производительности | Рекомендуемое пороговое значение |
---|---|
Память — Байты резерва резервного кэша | Сумма резервных байт в резервном кэше, а также свободных и нулевых байт списка страниц должны составлять 200 МБ или больше в системах с 1 ГБ и 300 МБ или больше в системах с 2 ГБ или более видимой ОЗУ. |
Память — & байты свободной страницы без списка | Сумма резервных байт в резервном кэше, а также свободных и нулевых байт списка страниц должны составлять 200 МБ или больше в системах с 1 ГБ и 300 МБ или больше в системах с 2 ГБ или более видимой ОЗУ. |
Память — ввод страниц/с | Среднее значение в 1-часовом периоде меньше 10. |
Правильное изменение размера памяти для корневого раздела
Корневой раздел должен иметь достаточно памяти для предоставления таких служб, как виртуализация ввода-вывода, моментальный снимок виртуальной машины и управление для поддержки дочерних секций.
Hyper-V в Windows Server 2016 отслеживает работоспособность операционной системы управления корневого раздела в среде выполнения, чтобы определить, сколько памяти может быть безопасно выделено дочерним секциям, сохраняя при этом высокий уровень производительности и надежности корневого раздела.
настройте по крайней мере необходимый объем памяти для виртуальной машины, в которой работает Windows 8 и включена для динамическая память
Область применения: Windows Server 2022, Windows Server 2019, Windows Server 2016
Свойство | Сведения |
---|---|
Операционная система | Windows Server 2016 |
Продукт или компонент | Hyper-V |
Уровень серьезности | Ошибка |
Категория | Конфигурация |
В следующих разделах курсив указывает текст пользовательского Интерфейса, который отображается в анализатор соответствия рекомендациям для этой проблемы.
Проблема
Одна или несколько виртуальных машин настроены для использования динамическая память с меньшим объемом памяти, необходимой для Windows 8.
Влияние
Гостевая операционная система на следующих виртуальных машинах может не запускаться или может работать ненадежно:
Решение
Используйте диспетчер Hyper-V, чтобы увеличить минимальный объем памяти по крайней мере до 256 МБ, а также объем памяти при запуске и максимальный объем памяти не менее 512 МБ для этой виртуальной машины.
Увеличение памяти с помощью диспетчера Hyper-V
в списке виртуальных машин щелкните правой кнопкой мыши нужную, а затем выберите пункт Параметры.
В области навигации щелкните память.
Замените объем ОЗУ не менее 512 МБ.
В разделе Динамическая памятьизмените Минимальный объем ОЗУ — не менее 256 МБ, а максимальный объем ОЗУ — 512 МБ.
Нажмите кнопку ОК.
Увеличение объема памяти с помощью Windows PowerShell
Откройте Windows PowerShell. (На рабочем столе нажмите кнопку Пуск и начните ввод Windows PowerShell.)
щелкните правой кнопкой мыши Windows PowerShell и выберите команду запуск от имени администратора.
Выполните команду, аналогичную приведенной ниже, заменив MyVM именем виртуальной машины, а значения памяти — по крайней мере на значения, приведенные ниже.
Использование динамической памяти Hyper-V с SQL Server
Одним из самых важных факторов, влияющих на производительность SQL Server, является память. Это действительно так, и неважно, запускается экземпляр сервера SQL на физическом или виртуальном сервере. На физическом сервере лучший способ обезопасить себя от возможных узких мест в памяти – просто поместить в сервер столько оперативной памяти, сколько сможете. Однако не все так просто с экземпляром виртуального SQL Server
. Конечно, вы можете указать максимальный объем оперативной памяти для виртуальной машины 16 Гбайт для Hyper-V 2.0. Однако, устанавливая максимальный объем оперативной памяти в виртуальной машине, вы можете ограничить число виртуальных машин, которые могли бы запускать одновременно, поскольку оперативная память – ограничивающий фактор для плотности размещения виртуальных машин. К тому же, подобная практика наверняка приведет к неэффективному использованию ресурсов. Большинство систем имеют пиковые периоды использования, когда им необходим весь доступный объем оперативной памяти. Но в то же время бывают периоды, когда рабочая нагрузка снижается. Перенастройка оперативной памяти «связала» бы эти виртуальные ресурсы и предупредила бы их использование другими виртуальными машинами, когда им могут понадобиться дополнительные ресурсы.
Способность Hyper-V динамически назначать и отбирать память у работающих виртуальных машин выдвигает эту проблему на передний план. Как часть Windows Server 2008 R2 SP1, функция динамической памяти в Hyper-V изменяет способ распределения памяти гипервизором Hyper-V. Вместо назначения фиксированного объема оперативной памяти каждой виртуальной машине динамическая память позволяет рассматривать оперативную память как общий ресурс, который может динамически и автоматически разделяться между работающими виртуальными машинами. С поддержкой динамической памяти Hyper-V может динамически предоставить виртуальной машине больше или меньше памяти, реагируя на изменения в рабочей нагрузке запущенных виртуальных машин. Это способствует более эффективному распределению ресурсов между активными виртуальными машинами, повышает их производительность и позволяет достичь большей плотности виртуальных машин на том же физическом хосте.
Требования динамической памяти
Для использования динамической памяти Hyper-V хост Hyper-V должен запускаться на платформе Windows Server 2008 R2 SP1 или более новой версии. Кроме того, гостевая операционная система, работающая в виртуальной машине, должна поддерживать функцию hot-add оперативной памяти («горячее добавление памяти») – возможность добавления памяти на ходу, без перезапуска. Перечислим гостевые операционные системы, которые могут использовать динамическую память Hyper-V:
-Windows Server 2008 R2 SP1;
-Windows Server 2008 SP2;
-Windows Server 2003 R2 SP2;
-Windows Vista с пакетом обновления 1 SP1.
Так или иначе, вы должны быть уверены, что компоненты Windows Server 2008 R2 SP1 Hyper-V Integration Services установлены в гостевой операционной системе.
Как работает динамическая память
Динамическая память работает, распределяя всю физическую память хоста виртуализации из общего пула минус объем оперативной памяти, зарезервированной для хоста и предназначенной для родительского раздела. Актуальный объем оперативной памяти, зарезервированной для хоста, варьируется в соответствии с объемом физической памяти хоста виртуализации. Вы можете вычислить объем зарезервированной для хоста оперативной памяти по формуле:
Память хоста = 384 Мбайт + 30 Мбайт х число Гбайт памяти хоста
Память из пула динамической памяти распределяется между виртуальными машинами, запущенными на хосте. Гипервизор регулирует объем памяти, выданной каждой из виртуальных машин, на основе требований виртуальной машины. Если рабочая нагрузка виртуальной машины повышается, ей динамически добавляется память. Если рабочая нагрузка виртуальной машины понижается или другие виртуальные машины на этом же хосте Hyper-V имеют больший приоритет, память у виртуальной машины динамически высвобождается.
В производственных условиях при консолидации серверов разные виртуальные машины имеют различные приоритеты у рабочих нагрузок. Технология динамической памяти Hyper-V позволяет назначать различную память каждой из виртуальных машин по уровню ее приоритета. Виртуальным машинам с высокими требованиями к производительности назначается высокий приоритет на память по сравнению с виртуальными машинами с менее критичными задачами. Приоритет на выделение памяти конкретной виртуальной машине применяется, когда вся доступная физическая память хоста Hyper-V распределена между запущенными виртуальными машинами. Важно помнить, что когда вы повышаете приоритет выделения памяти виртуальной машине и вся память на хосте распределена, объем памяти, назначенный виртуальной машине с более низким приоритетом, будет уменьшен.
Динамическая память Hyper-V использует технологию под названием «вытеснение» (ballooning) для освобождения памяти. При вытеснении используется взаимодействие виртуальных машин с хостом для определения страниц памяти, которые не применяются гостевой операционной системой, при этом сокращается объем памяти, доступный гостю. Когда виртуальной машине требуется дополнительная память хоста, память, «вытесненная» ранее, освобождается, насколько нужно, пока вся «вытесненная» память не вернется гостевой операционной системе. Если гость продолжает просить дополнительную память, хост Hyper-V предоставит память из своего пула, пока виртуальная машина не достигнет своего порога памяти или пока другой виртуальной машине с высоким приоритетом выделения памяти не потребуется память хоста.
Hyper-V определяет объем памяти, необходимый виртуальной машине, при помощи параметра под названием memory pressure (загрузка). Hyper-V измеряет загрузку памяти, в первую очередь определяя полный объем выделенной памяти (total committed) гостевой операционной системы, запущенной в виртуальной машине, затем вычисляя соотношение между количеством памяти, запрашиваемым виртуальной машиной, и количеством имеющейся у нее памяти.
Объем памяти, назначаемый Hyper-V виртуальной машине, равен полному объему выделенной памяти плюс дополнительное количество из буфера памяти. Формула такова:
Память виртуальной машины = Запрос памяти + Запрос памяти * Процент памяти буфера
Объем буферной памяти на виртуальную машину рассчитывается как процент выделенной памяти. Величина буферной памяти 50% означает, что виртуальной машине будет назначено до 50% выделенной памяти для гостя.
Настройка динамической памяти
Чтобы разрешить виртуальной машине использовать динамическую память, откройте Hyper-V Manager и выберите виртуальную машину, которую хотите настроить, в панели Virtual Machines. Убедитесь, что виртуальная машина выключена. Вы не можете перестраивать параметры оперативной памяти виртуальной машины, если ее статус Running или Saved. Правой кнопкой мыши щелкните на виртуальной машине, чтобы вызвать контекстное меню, выберите Settings, и укажите раздел Memory. Страница Memory показана на экране 1.
Экран 1. Настройка динамической памяти Hyper-V |
В разделе Memory management («Управление памятью») страницы Memory укажите вариант Dynamic. Обратите внимание на поля Startup RAM и Maximum RAM. Вместо задания статического объема оперативной памяти, назначаемого виртуальной машине, динамическая память Hyper-V позволяет вам определить минимальный объем оперативной памяти, который будет использоваться при запуске виртуальной машины и максимальный объем оперативной памяти, который может быть предоставлен виртуальной машине. Значение Startup Startup RAM – это нижний предел памяти, который будет использоваться виртуальной машиной. В данном случае 512 Мбайт — это тот минимум, который требуется для запуска виртуальной машины в Windows Server 2008. Значение Maximum RAM – это верхний предел памяти, который может быть выделен виртуальной машине. На экране 1 вы видите значение Maximum RAM равное 3596 Мбайт. Для Hyper-V 2.0 (эта версия поставляется в составе Windows Server 2008 R2 SP1) максимальное значение для данного параметра 65536 Мбайт, или 64 Гбайт. Важно иметь в виду, что после того, как будет запущена виртуальная машина, оты значение выделенной ей памяти будет находиться где-то между этими двумя величинами.
Параметр Memory buffer («Буфер памяти») контролирует объем памяти Hyper-V, который будет зарезервирован в дополнение к требованиям памяти для виртуальной машины. На приведенном рисунке показана взаимосвязь параметров startup memory (объем оперативной памяти для запуска), maximum memory (максимально возможное количество памяти) и memory buffer.
Рисунок. Взаимосвязь startup memory, maximum memory и memory buffer |
В примере на экране 1 значение параметра буферной памяти установлено в 20%, поэтому Hyper-V выполнит следующие вычисления для определения количества памяти, которое нужно предоставить при первом запросе памяти:
20% / (100% — 20%) * 512 Мбайт = 128 Мбайт
Эта формула изменяется, когда увеличивается выделанная память (committed memory).
На экране 1 вы видите параметр Memory weight («Приоритет памяти»). Hyper-V использует этот параметр, чтобы определить, какой виртуальной машине назначать память после того, как вся буферная память распределена. Настройка параметра memory weight на высокое значение укажет Hyper-V давать этой системе приоритет при выделении памяти. Опять же, помните, что данные настройки играют роль только тогда, когда вся память хоста распределена.
После того, как настроены все желаемые параметры динамической памяти, щелкните команду Apply для завершения изменений параметров виртуальных машин. Изменения в настройки динамической памяти вносятся сразу же после перезапуска виртуальной машины.
Обратите внимание, что динамическая память не применяется по принципу «все или ничего». Вы свободно можете совмещать виртуальные машины, которые используют динамическую память, с виртуальными машинами, использующими статическую память на этом же хосте Hyper-V.
SQL Server и динамическая память
Хотя это и может показаться очевидным, однако стоит указать, что Microsoft всецело предназначает технологию динамической памяти Hyper-V для использования в рабочей среде. Microsoft не всегда полностью поддерживает предлагаемые ею разработки. К примеру, некоторые технологии, такие как NIC teaming в Windows Server 2008 R2, доступны, но если вы обращаетесь в службу поддержки Microsoft Customer Service and Support (CSS) с проблемой, первая рекомендация, которую дает вам CSS – выключить ее. Но совсем не так обстоит дело с динамической памятью Hyper-V. Microsoft полностью поддерживает динамическую память Hyper-V, ведь эта функция разработана непосредственно для производственного использования.
Для виртуализованных экземпляров SQL Server данная возможность Hyper-V особенно полезна, поскольку память – один из важнейших факторов, влияющих на производительность SQL Server. Чтобы оценить эффективность технологии динамической памяти Hyper-V, необходимо задействовать редакцию Enterprise SQL Server 2008 или более новой версии, либо Datacenter SQL Server 2008 R2 или SQL Server 2008. Только редакции Enterprise и Datacenter поддерживают такую возможность SQL Server, как «горячее добавление» оперативной памяти. Все другие редакции SQL Server должны использовать настройки статической памяти Hyper-V.
Когда новая память назначается гостевым виртуальным машинам функцией динамической памяти Hyper-V, это выглядит как «горячее добавление» физической памяти экземпляру SQL Server. SQL Server Enterprise и Datacenter могут динамически расти, если добавляется еще больше памяти гостевой виртуальной машине.
Когда SQL Server выполняет рабочие нагрузки, процесс sqlservr.exe process распределяет и передает память из операционной системы. На динамический рост памяти SQL Server влияют три фактора:
-параметр max server memory выше, чем текущее распределение памяти;
-сигналы превышения памяти из операционной системы.
По умолчанию значение параметра max server memory – 2 147 483 647 Мбайт. Когда рабочая нагрузка SQL Server приводит к росту процесса sqlserver.exe, счетчик памяти Hyper-V отмечает загрузку памяти в гостевой виртуальной машине и динамически добавляет ей памяти. SQL Server обнаружит добавленную память и будет использовать ее, чтобы соответствовать требованиям рабочей нагрузки. SQL Server контролирует память операционной системы каждую секунду, динамически регулируя ее, в соответствии с объемом доступной памяти и установленным значением параметра max server memory.
В официальном документе «Running SQL Server with Hyper-V Dynamic Memory» (http://msdn.microsoft.com/en-us/library/hh372970.aspx) Microsoft приводит результаты ряда тестов рабочей нагрузки, сравнивая восемь виртуальных машин SQL Server. В ряде испытаний специалисты компании измерили рабочую нагрузку восьми виртуальных машин с объемом статической памяти 7,5 Гбайт и восьми виртуальных машин с динамической памятью. Параметры динамической памяти имели значения 2 Гбайт для параметра startup memory и 12 Гбайт для параметра maximum memory. Рабочая нагрузка составила 12500 пакетов в секунду. В сценарии динамической памяти системы показали результат 7500 операций ввода/вывода в секунду (IOPS). В сценарии со статической памятью, системам потребовалось выполнить 12000 IOPS. Таким образом, динамическая память обеспечила такую же пропускную способность, но только с 60% от общего числа IOPS.
На экране 2 вы видите результаты теста динамической памяти в мониторе производительности Performance Monitor. Черная непрерывная линия показывает память буферного пула SQL Server. Зеленая линия обозначает количество операций чтения с диска в секунду. На начальном этапе теста вы можете видеть, что количество обращений для чтения было довольно высоким, но, как только виртуальной машине была назначена дополнительная память, SQL Server смог увеличить размер своего буферного пула. В результате количество операций чтения с диска снизилось приблизительно на 50%.
Экран 2. Мониторинг производительности во время теста динамической памяти |
SQL Server старается не отдавать память сразу после ее освобождения. Тем не менее, SQL Server начнет сжимать кэши в ответ на загрузку памяти, когда операционная система посылает сигналы о недостатке памяти. Resource Monitor («Монитор ресурсов») SQL Server отслеживает сигналы недостатка памяти каждые пять секунд и будет пытаться освободить память, пока сигналы не прекратятся. SQL Server также будет отдавать память по мере увеличения размера кэшей и распределения памяти, однако процессу SQL Server необходимо сохранять значение total memory внутри значения, установленного в параметре max server memory. Уменьшение значения параметра max server memory может создать нагрузку на его внутреннюю память, в результате чего SQL Server передаст память обратно операционной системе.
Если загрузка одних виртуальных машин заставляет динамическую память Hyper-V забирать память из других виртуальных машин, Windows Memory Manager начнет выгружать страницы неблокированных сегментов памяти и выдаст сообщение о нехватке памяти. Когда SQL Server обнаруживает эти события, он сжимает память до тех пор, пока сигналы о нехватке памяти не прекратятся.
Когда память гостевой виртуальной машины уменьшается, возможно, что гостевая операционная система начнет процесс выгрузки страниц памяти рабочего экземпляра SQL Server, что негативно скажется на производительности SQL Server. Чтобы этого не произошло, Microsoft рекомендует задействовать модель «блокировки страниц памяти» Locked Page Memory Model вместе с динамической памятью Hyper-V. Использование данной модели гарантирует, что страницы памяти SQL Server никогда не выгружаются. Увидеть, использует ли данную модель SQL Server, можно, выполнив запрос
EXEC (‘xp_readerrorlog 0, 1, »Using locked pages»’)
Вы можете разрешить Locked Page Memory Model для SQL Server при помощи инструмента Windows Group Policy («Политики групп»).
Перед внесением изменений получите разрешение системного администратора. Чтобы разрешить Locked Page Memory Model, выполните следующие шаги на гостевой виртуальной машине.
Мониторинг динамической памяти
В Hyper-V Manager вы можете контролировать использование динамической памяти. Hyper-V Manager выводит назначенную память, требования к памяти memory demand, а также статус памяти memory status для всех виртуальных машин. Эти параметры приведены на экране 3.
Экран 3. Наблюдение за использованием динамической памяти в Hyper-V Manager |
Кроме того, вы можете работать со счетчиками монитора производительности Windows Performance Monitor, чтобы отслеживать использование динамической памяти. На хосте виртуализации Hyper-V вы можете наблюдать за следующими счетчиками.
*Hyper-V Dynamic Memory Manager VM: Guest Visible Physical Memory. Этот счетчик позволяет оценить объем физической памяти, видимый выделенной виртуальной машиной.
*Hyper-V Dynamic Memory Balancer: Available Memory. Этот счетчик показывает оставленный на узле объем памяти, который может быть назначен виртуальным машинам.
Внутри гостевой операционной системы вы можете работать со следующими счетчиками производительности, чтобы отслеживать использование памяти сервера SQL.
— Process: Working Set. Этот счетчик позволяет увидеть объем физической памяти, используемой в данном процессе SQL Server в виртуальной машине. Не используется в случае применения Locked Page Memory Model.
— SQL Server: Memory Manager: Target Server Memory. Этот счетчик отображает текущее суммарное количество памяти буферного пула SQL Server. Изменения в его значении показывают, что SQL Server реагирует на уведомления о памяти от Windows.
— SQL Server: Memory Manager: Total Server Memory. Данный счетчик дает представление о текущем размере буферного пула SQL Server.
— Memory: Available Мбайт. Данный счетчик определяет объем доступной памяти внутри виртуальной машины.
— SQL Server: Buffer Cache Hit Ratio. Этот счетчик показывает количество страниц в процентном соотношении, найденных в буферном кэше, которые не понадобилось читать с диска. Желательный уровень попадания в буферный кэш – 90% и выше.
Увеличьте оперативную память
Если вы запускаете экземпляры виртуального SQL Server при консолидации серверов и у вас установлена редакция Enterprise SQL Server 2008 или более новая, либо редакция Datacenter SQL Server 2008 R2 или SQL Server 2008, вам стоит рассмотреть использование динамической памяти Hyper-V. С более детальной информацией можно ознакомиться в документе «Hyper-V Dynamic Memory Configuration Guide» (http://technet.microsoft.com/en-us/library/ff817651%28v=ws.10%29.aspx). Еще вы можете почитать блог из четырех частей «SQL Server and Hyper-V Dynamic Memory» на MSDN (http://blogs.msdn.com/b/sqlosteam/archive/2011/01/31/sql-server-and-hyper-v-dynamic-memory-part-1.aspx). Существует и официальное описание «Running SQL Server with Hyper-V Dynamic Memory» (http://msdn.microsoft.com/en-us/library/hh372970.aspx), где вы найдете самую подробную информацию о взаимодействии SQL Server и динамической памяти.
Поделитесь материалом с коллегами и друзьями