Виртуальная память windows server 2008 r2

Есть сервер Windows 2008 R2 Enterprise
  • Remove From My Forums
  • Общие обсуждения

  • Есть сервер Windows 2008 R2 Enterprise

    на борту 256GB ОЗУ, но нет возможности подключить большой диск, установили лимит файла подкачки до 15GB, сейчас возникли проблемы что некоторые приложения отказываются запускаться из-за нехватки виртуальной памяти, и это при том что еще больше половины физической
    памяти свободно согласно данным в Мониторе ресурсов.

    вопрос: как можно объяснить такое поведение системы. и как можно избавиться от такого ?

    • Изменен тип

      15 июня 2012 г. 12:09

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

0. Виртуальная память, что это такое?

Под понятием виртуальная память следует понимать сочетание памяти временного хранилища и оперативного запоминающего устройства (ОЗУ) на жестком диске (винчестере).

В том случае, когда все работающие на компьютере программы полностью занимают ОЗУ, оперативная память захватывает часть пространства на винчестере и создает там, так называемый, файл подкачки. Сразу же после перемещения информационных данных в этот файл, оперативная память освобождается. Этого достаточно для выполнения операций. Программы не «видят» разницы между виртуальной и оперативной памятью, единственным отличием является то, что настоящая оперативная память может обеспечивать значительно меньшее время доступа, нежели виртуальная.

virtualnaya_pamat_01

1. Влияние ОЗУ на скорость работы программ

Скорость работы всех программ во многом зависит от объема оперативной памяти, проще говоря, чем больше объем ОЗУ, установленного в компьютере, тем быстрее эти программы работают. Если вследствие нехватки оперативной памяти работа компьютера замедляется, то ее следует восполнить путем увеличения размера виртуальной памяти на винчестере. Однако здесь следует учитывать, что данные с ОЗУ считываются быстрее, нежели с жесткого диска. Потому предпочтительнее будет добавить ОЗУ.

2. Увеличение виртуальной памяти

Если всплывает окно с сообщением об ошибках, вызванных недостаточным размером виртуальной памяти, следует выполнить одно из двух действий, либо увеличить размер файла подкачки, либо добавить ОЗУ.

Как правило, операционная система автоматически меняет размер файла подкачки. Однако если размер этого файла все же недостаточный для правильной работы компьютера, то его можно увеличить вручную.

Чтобы это осуществить, необходимо выполнить следующие действия:

В Windows XP: Необходимо правой кнопкой мышки щелкнуть на значок «Мой компьютер» после чего перейти по пункту «Свойства».

В Windows Vista и старше: Перейдем в «Панель управления» — «Система и безопасность» — «Система» — «Дополнительные параметры системы»

virtualnaya_pamat_02

Откроется окно «Свойства системы». Перейдем на вкладку «Дополнительно» и нажмем «Параметры» быстродействия.

virtualnaya_pamat_03

Откроется окошко, в котором нужно выбрать вкладку «Дополнительно», затем нажать «Изменить» в группе «Виртуальная память».

virtualnaya_pamat_04

Снимем флаг «Автоматически выбирать объем файла подкачки» и, выбрав диск, с которого будет осуществляться подкачка файла, устанавливаем значения исходного и максимального размеров виртуальной памяти. Необходимо в исходный размер записать рекомендуемое число, а в максимальном размере установить большое значение, например число 7000. После этого нажать на кнопку «Задать».

virtualnaya_pamat_05

После этого следует принять все изменения, нажав в каждом окне кнопку «Ок» и перезагрузить компьютер.

This Microsoft article — How to determine the appropriate page file size for 64-bit versions of Windows Server 2008 and or Windows 2008 R2 provides guidance for calculating the page file size for 64 bit Windows 2008 and Windows 2008R2. This no doubt works fine for general purpose servers. I’m wondering what the guidance is for SQL Server 2008R2 running on Windows 2008/R2 64 bit?

I’m presuming we want as little in memory data to be hitting the page file otherwise SQL could be hitting the disk twice for data. Does SQL Server even allow data in memory to hit the page file? I’ve hunted through SQL Server 2008 R2 Books Online for guidance but haven’t yet found any mention of page file use.

Here’s a potential usage scenario: Given a physical server with 64GB of RAM, is a pagefile necessary for the entire 64GB of RAM? Should we gear it up for 96GB of pagefile? That does seem a bit excessive for a single file. I know conventional wisdom has been that Windows couples pagefile to memory in an attempt to make swapping out apps easier on RAM, but is that true? Will a less than 64GB pagefile hinder performance here?

Leigh Riffel's user avatar

Leigh Riffel

23.7k16 gold badges76 silver badges148 bronze badges

asked Jun 15, 2011 at 14:17

Kev's user avatar

0

There are no special settings for SQL Server which only uses physical memory normally

Just do what MS say for Windows and that’s it

Oh, and buy more RAM anyway while we’re one the subject… ;-)

answered Jun 15, 2011 at 14:21

gbn's user avatar

gbngbn

69.3k8 gold badges160 silver badges240 bronze badges

0

Look into lock pages in memory. This way, you can give preference for your SQL service account to use available RAM rather than paging to disk. To read more on lock pages in memory, check this link. A snippet follows:

The Windows policy Lock Pages in Memory option is disabled by default. This privilege must be enabled to configure Address Windowing Extensions (AWE). This policy determines which accounts can use a process to keep data in physical memory, preventing the system from paging the data to virtual memory on disk. On 32-bit operating systems, setting this privilege when not using AWE can significantly impair system performance. Locking pages in memory is not required on 64-bit operating systems.

Please test this feature before using on your systems.

answered Jun 15, 2011 at 18:13

StanleyJohns's user avatar

StanleyJohnsStanleyJohns

5,9322 gold badges20 silver badges44 bronze badges

1

Yes, for 64GB RAM you need at least 64GB swap file (96GB recommended). Not because of potential swapping, but because of the design of the Windows Memory Manager. I’ve wrote about this issue before in System pagefile size on machines with large RAM:

When a process asks for MEM_COMMIT memory via
VirtualAlloc/VirtualAllocEx, the requested size needs to be reserved
in the pagefile. This was true in the first Win NT system, and is
still true today see Managing Virtual Memory in Win32:

When memory is committed, physical pages of memory are allocated and space is reserved in a pagefile.

The alternative would be something like the oom_killer.

So do follow the recommendation, sometimes things are a bit more complex than they look. And I haven’t even touched the complications brought by AWE and the lock pages privilege…

Community's user avatar

answered Aug 6, 2011 at 17:24

Remus Rusanu's user avatar

Remus RusanuRemus Rusanu

51.3k3 gold badges93 silver badges171 bronze badges

5

This Microsoft article — How to determine the appropriate page file size for 64-bit versions of Windows Server 2008 and or Windows 2008 R2 provides guidance for calculating the page file size for 64 bit Windows 2008 and Windows 2008R2. This no doubt works fine for general purpose servers. I’m wondering what the guidance is for SQL Server 2008R2 running on Windows 2008/R2 64 bit?

I’m presuming we want as little in memory data to be hitting the page file otherwise SQL could be hitting the disk twice for data. Does SQL Server even allow data in memory to hit the page file? I’ve hunted through SQL Server 2008 R2 Books Online for guidance but haven’t yet found any mention of page file use.

Here’s a potential usage scenario: Given a physical server with 64GB of RAM, is a pagefile necessary for the entire 64GB of RAM? Should we gear it up for 96GB of pagefile? That does seem a bit excessive for a single file. I know conventional wisdom has been that Windows couples pagefile to memory in an attempt to make swapping out apps easier on RAM, but is that true? Will a less than 64GB pagefile hinder performance here?

Leigh Riffel's user avatar

Leigh Riffel

23.7k16 gold badges76 silver badges148 bronze badges

asked Jun 15, 2011 at 14:17

Kev's user avatar

0

There are no special settings for SQL Server which only uses physical memory normally

Just do what MS say for Windows and that’s it

Oh, and buy more RAM anyway while we’re one the subject… ;-)

answered Jun 15, 2011 at 14:21

gbn's user avatar

gbngbn

69.3k8 gold badges160 silver badges240 bronze badges

0

Look into lock pages in memory. This way, you can give preference for your SQL service account to use available RAM rather than paging to disk. To read more on lock pages in memory, check this link. A snippet follows:

The Windows policy Lock Pages in Memory option is disabled by default. This privilege must be enabled to configure Address Windowing Extensions (AWE). This policy determines which accounts can use a process to keep data in physical memory, preventing the system from paging the data to virtual memory on disk. On 32-bit operating systems, setting this privilege when not using AWE can significantly impair system performance. Locking pages in memory is not required on 64-bit operating systems.

Please test this feature before using on your systems.

answered Jun 15, 2011 at 18:13

StanleyJohns's user avatar

StanleyJohnsStanleyJohns

5,9322 gold badges20 silver badges44 bronze badges

1

Yes, for 64GB RAM you need at least 64GB swap file (96GB recommended). Not because of potential swapping, but because of the design of the Windows Memory Manager. I’ve wrote about this issue before in System pagefile size on machines with large RAM:

When a process asks for MEM_COMMIT memory via
VirtualAlloc/VirtualAllocEx, the requested size needs to be reserved
in the pagefile. This was true in the first Win NT system, and is
still true today see Managing Virtual Memory in Win32:

When memory is committed, physical pages of memory are allocated and space is reserved in a pagefile.

The alternative would be something like the oom_killer.

So do follow the recommendation, sometimes things are a bit more complex than they look. And I haven’t even touched the complications brought by AWE and the lock pages privilege…

Community's user avatar

answered Aug 6, 2011 at 17:24

Remus Rusanu's user avatar

Remus RusanuRemus Rusanu

51.3k3 gold badges93 silver badges171 bronze badges

5

Вики IT-KB

Пошаговые руководства, шпаргалки, полезные ссылки.

Инструменты пользователя

Инструменты сайта

Боковая панель

Настройка файла подкачки Windows на сервере SQL Server

К настройке файла подкачки Windows нужно подходить индивидуально в каждом отдельном случае. Общие рекомендации по этому поводу можно найти в статье KB2860880 — Определение размера файла подкачки для 64-разрядных версий Windows. Так как на серверах с СУБД SQL Server зачастую используется большой объём оперативной памяти, может потребоваться настройка ограничения размера файла подкачки. Это связано с тем, что автоматически рассчитываемый ОС Windows размер файла даже при полном отсутствии нагрузки на систему на только что установленной системе может оказаться крайне нескромным.

Вызовем апплет управления свойствами системы sysdm.cpl. В открывшейся форме переходим на закладку управления расширенными настройками Advanced и в блоке Performance нажимаем кнопку Settings. В дополнительно открывшейся форме переходим на вкладку Advanced и в разделе Virtual memory используем кнопку Change, чтобы изменить параметры файла подкачки.

Отключим используемое по умолчанию автоматическое определение размера файла подкачки, укажем первичный (Initial size) и максимально допустимый (Maximum size) размеры файла через опцию Custom size (например, от 2GB, но не больше 4GB) и нажмём Set, затем OK.

Устанавливая файл подкачки ограниченного размера следуют выполнять дальнейший контроль процента его использования, чтобы не получилось так, что системе под продуктивными нагрузками на самом деле требуется больший объём подкачки, чем установлен. Следить за этим показателем можно с помощью консоли Performance Monitor и счётчиков производительности:

После добавления визуализации указанных счётчиков в нашем примере становится видно, что текущее использование файла подкачки на нулевом уровне.

Так как в системах Windows Server 2012 и выше на размер файла подкачки влияют требования, выставляемые к аварийному дампу системы (memory.dmp), мы можем сократить эти требования за счёт изменения параметров создания аварийного дампа. Для этого в том же апплете управления свойствами системы sysdm.cpl на закладке управления расширенными настройками Advanced в блоке Startup and Recovery нажимаем кнопку Settings. В открывшейся форме в разделе System failure вместо Automatic memory dump выбираем Small memory dump

Дополнительные источники информации:

Проверено на следующих конфигурациях:

Автор первичной редакции:
Алексей Максимов
Время публикации: 10.02.2019 20:51

Источник

Увеличение файла подкачки или зачем нужна виртуальная память?

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

0. Виртуальная память, что это такое?

Под понятием виртуальная память следует понимать сочетание памяти временного хранилища и оперативного запоминающего устройства (ОЗУ) на жестком диске (винчестере).

В том случае, когда все работающие на компьютере программы полностью занимают ОЗУ, оперативная память захватывает часть пространства на винчестере и создает там, так называемый, файл подкачки. Сразу же после перемещения информационных данных в этот файл, оперативная память освобождается. Этого достаточно для выполнения операций. Программы не «видят» разницы между виртуальной и оперативной памятью, единственным отличием является то, что настоящая оперативная память может обеспечивать значительно меньшее время доступа, нежели виртуальная.

1. Влияние ОЗУ на скорость работы программ

Скорость работы всех программ во многом зависит от объема оперативной памяти, проще говоря, чем больше объем ОЗУ, установленного в компьютере, тем быстрее эти программы работают. Если вследствие нехватки оперативной памяти работа компьютера замедляется, то ее следует восполнить путем увеличения размера виртуальной памяти на винчестере. Однако здесь следует учитывать, что данные с ОЗУ считываются быстрее, нежели с жесткого диска. Потому предпочтительнее будет добавить ОЗУ.

2. Увеличение виртуальной памяти

Если всплывает окно с сообщением об ошибках, вызванных недостаточным размером виртуальной памяти, следует выполнить одно из двух действий, либо увеличить размер файла подкачки, либо добавить ОЗУ.

Как правило, операционная система автоматически меняет размер файла подкачки. Однако если размер этого файла все же недостаточный для правильной работы компьютера, то его можно увеличить вручную.

Чтобы это осуществить, необходимо выполнить следующие действия:

В Windows XP: Необходимо правой кнопкой мышки щелкнуть на значок «Мой компьютер» после чего перейти по пункту «Свойства».

В Windows Vista и старше: Перейдем в «Панель управления» — «Система и безопасность» — «Система» — «Дополнительные параметры системы»

Откроется окно «Свойства системы». Перейдем на вкладку «Дополнительно» и нажмем «Параметры» быстродействия.

Откроется окошко, в котором нужно выбрать вкладку «Дополнительно», затем нажать «Изменить» в группе «Виртуальная память».

Снимем флаг «Автоматически выбирать объем файла подкачки» и, выбрав диск, с которого будет осуществляться подкачка файла, устанавливаем значения исходного и максимального размеров виртуальной памяти. Необходимо в исходный размер записать рекомендуемое число, а в максимальном размере установить большое значение, например число 7000. После этого нажать на кнопку «Задать».

После этого следует принять все изменения, нажав в каждом окне кнопку «Ок» и перезагрузить компьютер.

Смотрите также:

Иногда в Windows 7 нужно изменить расширение вручную, например, превратить файл “txt” в “bat”. Первое, что приходит на ум, — переименовать (F2). Но оказывается, что расширение «.bat» ты вроде бы…

По умолчанию в гипервизоре Hyper-V в Windows Server 2008 для отдельной виртуальной машины число логических процессоров можно устанавливать в диапазоне от 1 до 4. С помощью нехитрых манипуляций можно обойти…

Переустановка операционной системы или смена компьютерного устройства не означает конец работы с установленными гостевыми ОС в программе VirtualBox. Правда, исключением может быть случай, когда файлы жёстких дисков виртуальных машин находятся на…

Источник

Размер файла подкачки windows server 2008 r2

Вопрос

Назначенный файл подкачки не используется ОС и не виден в диспетчере задач, однако виден в дополнительный свойствах системы и на диске на который он назначен. Сервер терминалов 16 Юзверей + Одмин 16- гигов физической памяти не хватает для одновременной работы всех в 1С 8.2

Помогите пожалуйста как можно сделать что бы файл подкачки использовался системой!

Ответы

Предложу другой вариант, мой коллега — Mikhail_Komarov написал хорошую статью, которую Вы могли бы применить в своей ситуации.

Правильно понимаю, что роль RD Session Host, SQL Server и 1С установлены на одном сервере?Параметр Maximum server memory в SQL Server задействует всю физическую память или только часть? Похожая проблема разбирается здесь.

Также еще можно задать ваш вопрос на специализированном форуме по 1С.

  • Изменено osr_ MVP, Moderator 22 января 2016 г. 12:59
  • Предложено в качестве ответа Alexander Rusinov Moderator 22 января 2016 г. 21:47
  • Помечено в качестве ответа Petko Krushev Microsoft contingent staff, Moderator 1 февраля 2016 г. 12:29

Вы не ответили на мой вопрос про значение параметра Maximum Server Memory

Чтобы не раздражать глупыми вопросами, давайте поступим так. На Форумах TechNet я нашел два результативных обсуждения, относящихся к повышению производительности конфигураций сервера 1С, похожего на ваш. Ознакомьтесь с обсуждениями и укажите, какие настройки вы уже выполняли, и они не привели к повышению производительности.

Если судить по картинке, Вашему серверу хватает памяти, в строке Free еще 2625MB, был бы 0 — другое дело.

Где отклик от дисковой подсистемы?

Все ответы

16- гигов физической памяти не хватает для одновременной работы всех в 1С 8.2

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

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

Сервер начинает тормозить при достижении 85-90% загрузки физической памяти.

Вы наверное не сталкивались с работой SQL-server и особенностью его работы, база данных 14ГБ и ему в принципе не хватит 16 ГБ для работы одного пользователя в течении одной рабочей недели (он забьет всю память своими процессами).

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

Правильно понимаю, что роль RD Session Host, SQL Server и 1С установлены на одном сервере?Параметр Maximum server memory в SQL Server задействует всю физическую память или только часть? Похожая проблема разбирается здесь.

Также еще можно задать ваш вопрос на специализированном форуме по 1С.

  • Изменено osr_ MVP, Moderator 22 января 2016 г. 12:59
  • Предложено в качестве ответа Alexander Rusinov Moderator 22 января 2016 г. 21:47
  • Помечено в качестве ответа Petko Krushev Microsoft contingent staff, Moderator 1 февраля 2016 г. 12:29

Правильно понимаю, что роль RD Session Host, SQL Server и 1С установлены на одном сервере?Параметр Maximum server memory в SQL Server задействует всю физическую память или только часть? Похожая проблема разбирается здесь.

Также еще можно задать ваш вопрос на специализированном форуме по 1С.

Я не задаю вопросы на форумах если на нем есть ответы.

sqlservr.exe — 240 Мб

1cv8.exe каждый от 130 до 280 Мб

Все остальное рабочие процессы пользователей рабочих столов, включая Exel, Word и тд

Все параметры проверены трижды — это было сделано в первую очередь, перед тем как искать ответы в интернете!

Источник

Настройка виртуальной памяти
Виртуальная память позволяет расширить объем доступной оперативной памяти (RAM) за счет дискового пространства. Эта возможность впервые появилась в процессорах Intel 386. Запись содержимого RAM на диски называется подкачкой. Определенный объем памяти, скажем, 1024 Мб, записывается на диск в виде файла. При необходимости обращения к нему чтение осуществляется с диска, а не из физической RAM.

Исходный файл подкачки автоматически создается на диске, содержащем операционную систему. По умолчанию на других дисках файлов подкачки нет. Если они нужны, вам придется создать их вручную. Создавая файл подкачки, вы задаете начальный и максимальный размеры. Файлы подкачки записываются на том под именем PAGEFILE.SYS.

Чтобы вручную сконфигурировать виртуальную память, выполните следующие действия:

1. Перейдите на вкладку Дополнительно (Advanced) диалогового окна Свойства системы (System Properties) и щелкните кнопку Параметры (Settings) в разделе Быстродействие (Performance). Откроется диалоговое окно Параметры быстродействия (Performance Options). Тут Вы так же сможете найти счетчик посещаемости сайта, если Ваш сервер так же имеет Веб-интерфейс и счётчик настроен.

2. В диалоговом окне Параметры быстродействия (Performance Options) перейдите на вкладку Дополнительно (Advanced). Щелкните кнопку Изменить (Change), чтобы открыть диалоговое окно Виртуальная память (Virtual Memory). На нем представлена следующая информация:

• Диск [Метка тома] (Drive [Volume Label]) и Файл подкачки (Мб) (Paging File Size (MB)) Текущие параметры виртуальной памяти. Каждый том выводится с соответствующим файлом подкачки (если он присутствует). Диапазон указывает значения начального и максимального размера, заданные для файла подкачки.

• Размер файла подкачки для каждого диска (Paging File Size For Each Drive) Здесь показаны сведения по выбранному диску, и задаются размеры файла подкачки на нем. В поле Свободно (Space Available) показано, сколько пространства доступно на диске.

• Общий объем файла подкачки на всех дисках (Total Paging File Size For All Drives) Рекомендуемый для системы размер виртуальной памяти и реальный объем, выделенный в данный момент. Если вы впервые настраиваете виртуальную память, обратите внимание, что файл рекомендуемого размера уже есть на системном диске (в большинстве случаев).

3. По умолчанию Windows Server 2008 управляет размером файла подкачки для всех дисков. Чтобы настроить виртуальную память вручную, сбросьте флажок Автоматически выбирать объем файла подкачки (Automatically Manage Paging File Size For All Drives).

4. В списке Диск (Drive) выберите том, с которым хотите работать.

5. Установите переключатель Указать размер (Custom Size) и заполните поля Исходный размер (Initial Size) и Максимальный размер (Maximum Size).

6. Щелкните кнопку Задать (Set) для сохранения изменений.

7. Повторите шаги 4-6 для каждого тома, который хотите сконфигурировать.

8. Щелкните ОК. Если на экране появится сообщение о перезаписи существующего файла PAGEFILE.SYS, щелкните Да (Yes).

9. Если вы, обновили настройки файла подкачки, который используется в данный момент, на экране появится сообщение о том, что изменения вступят в силу после перезагрузки системы. Щелкните ОК.

10. Дважды щелкните ОК, чтобы закрыть открытые диалоговые окна. Закрывая окно Система (System), вы увидите сообщение с запросом, хотите ли вы перезапустить систему. Щелкните Перезагрузить (Restart).

Чтобы Windows Server 2008 автоматически управляла виртуальной памятью, выполните следующие действия:

1. Перейдите на вкладку Дополнительно (Advanced) диалогового окна Свойства системы (System Properties) и щелкните кнопку Параметры (Settings) в разделе Быстродействие (Performance). Откроется диалоговое окно Параметры быстродействия (Performance Options).

2. В диалоговом окне Параметры быстродействия (Performance Options) перейдите на вкладку Дополнительно (Advanced). Щелкните кнопку Изменить (Change), чтобы открыть диалоговое окно Виртуальная память (Virtual Memory).

3. Установите флажок Автоматически выбирать объем файла подкачки (Automatically Manage Paging File Size For All Drives).

4. Трижды щелкните OK, чтобы закрыть открытые диалоговые окна.

Dynamic Memory подобен молотку, которым умеючи можно забить гвоздь, а неумеючи — отбить себе пальцы. Цель данной статьи — подробно рассказать о функции Dynamic Memory и особенностях ее работы, тем самым сводя число «отбитых пальцев» к минимуму

Каждому специалисту по ИТ приходилось подбирать сервер для какой-либо задачи, и наверняка вопрос о том, сколько ставить на него памяти, заставлял призадуматься. Дело в том, что наперед сказать, сколько памяти потребуется для тех или иных задач, не всегда легко. А поручиться за то, что спустя некоторое время этой памяти будет все еще достаточно, — практически невозможно. Взять хотя бы простой пример: файл-сервер, на котором хранятся документы пользователей. Сколько понадобится памяти для файл-сервера в небольшой организации, с 10–20 пользователями? А сколько потребуется, когда организация разрастется, и штат сотрудников увеличится, скажем, до 100 человек? Другой пример — корпоративный веб-сайт. Нормальный режим работы предполагает 50–100 посещений в день, но тут запускается рекламная кампания, и наплыв посетителей резко возрастает до десятков тысяч посещений в день. В таких ситуациях нехватка памяти, приводящая к падению производительности, случается довольно часто. Заранее, на этапе проектирования, предсказать такие ситуации невозможно, поэтому обычно память берется с некоторым запасом. Теперь представим, что мы решили перейти на виртуальную инфраструктуру. Всего у нас, к примеру, десять серверов. И все эти серверы мы хотим перенести в виртуальную среду. Если для каждой из виртуальных машин делать такой же запас по памяти, как и раньше, придется закупать память для сервера с десятикратным (!) запасом. Стоит ли говорить о том, что использоваться из этого громадного объема памяти будет от силы 10%, а остальное будет лежать мертвым грузом, и руководству ИТ-отдела будет мучительно больно за бессмысленно потраченные средства.

Простой пример

Возьмем для примера хост с 16 Гбайт памяти (рисунок 1). Путем гадания на кофейной гуще мы установили, что одной виртуальной машине может потребоваться максимум 3 Гбайт памяти. Ну и еще гигабайт — «про запас», на всякий случай. Получаем по 4 Гбайт на каждую виртуальную машину. В итоге на нашем хосте будут комфортно работать три виртуальные машины. При этом большую часть времени использоваться будет не так и много (3,5 Гбайт в нашем случае), но доступно будет лишь 4 Гбайт памяти. Максимум это позволит создать еще одну виртуальную машину, и то если «потесниться» — уменьшить объем памяти других виртуальных машин или выделить 3 Гбайт вместо 4 Гбайт. Ведь операционная система хоста тоже «хочет кушать», и для нормальной работы ей нужен как минимум 1 Гбайт памяти.

 Рисунок 1. Сравнение статической и динамической памяти

А теперь, если мы используем динамическую память, то благодаря рациональному использованию памяти сможем запустить на том же самом хосте еще две виртуальные машины, которые могут спокойно переносить пиковые (потребление 3 Гбайт памяти) и сверхпиковые (4,5 Гбайт) нагрузки. И при этом теоретически можно запустить еще три виртуальных машины (при условии, что у них объем оперативной памяти для запуска равен 512 Мбайт). Забегая немного вперед, скажу, что в примере взяты настройки динамической памяти по умолчанию: Startup RAM = 512 Мбайт, Maximum RAM = 64 Гбайт, Free Buffer = 20%.

Высокая доступность

Возьмем другой пример: кластер с обработкой отказа из трех узлов. Каждый из узлов имеет 3 Гбайт памяти, и запущено на каждом узле по три виртуальных машины с объемом памяти по 3 и 4 Гбайт (рисунок 2).

Рисунок 2. Конфигурация кластера и виртуальных машин

Допустим, узел NODE3 выходит из строя, и виртуальные машины перезапускаются на других узлах. Как видно, одной из виртуальных машин не хватает памяти, и она не может стартовать (рисунок 3).

Рисунок 3. Перезапуск виртуальных машин при выходе из строя одного из узлов — одна из виртуальных машин не может запуститься из-за нехватки памяти

На узле NODE1 виртуальные машины уже используют 13 Гбайт памяти, и, поскольку операционная система сервера тоже «хочет кушать», то свободных 3 Гбайт для VM8 нет. То есть для полной отказоустойчивости нам нужно выполнить одно из следующих действий:

  • добавить еще один узел;
  • уменьшить количество виртуальных машин;
  • уменьшить объем памяти одной или нескольких виртуальных машин.

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

А теперь посмотрим, как будет выглядеть ситуация с использованием технологии Dynamic Memory. Допустим, что параметр Startup RAM установлен в 1 Гбайт. Это означает, что виртуальной машине при запуске будет выделяться 1 Гбайт памяти и для успешного запуска не нужны все 4 Гбайт свободной памяти. Как показано на рисунке 4, при использовании Dynamic Memory все виртуальные машины успешно стартуют на узлах NODE1 и NODE2.

Рисунок 4. При использовании Dynamic Memory все виртуальные машины успешно перезапускаются на других узлах

Как это работает?

До недавнего времени, как уже было замечено, статическое выделение памяти было одним из камней преткновения при внедрении инфраструктуры на базе Microsoft Hyper-V. С выходом Windows Server 2008 R2 Service Pack 1 ситуация значительно улучшилась: благодаря функции Dynamic Memory память теперь может перераспределяться между виртуальными машинами «на лету» в зависимости от потребностей. Соответственно, нужда в «десятикратном запасе» отпадает. Несмотря на это, .

Давайте познакомимся с основными принципами работы Dynamic Memory.

Архитектура

С точки зрения архитектуры (рисунок 5) работа Dynamic Memory основывается на взаимодействии служб, работающих в родительском разделе, Parent Partition, то есть в операционной системе хоста, и компонентов уровня ядра, так называемых «улучшений» в гостевой операционной системе. Внутри гостевой операционной системы работает компонент Dynamic Memory VSC (DMVSC), взаимодействующий непосредственно с диспетчером памяти гостевой операционной системы. VSC получает сведения о том, как используется в данный момент память гостевой операционной системы, и передает их посредством виртуальной шины VMBus провайдеру Dynamic Memory VSP (DMVSP), работающему в окружении базовой операционной системы хоста. Он в свою очередь передает данные балансировщику памяти Dynamic Memory Balancer. Балансировщик на основании полученных данных, а также настроек (Free Buffer, Weight, Startup/Max RAM) принимает решение о том, надо ли виртуальной машине добавить памяти или же, наоборот, у нее слишком много памяти и излишек можно «отобрать и поделить».

Рисунок 5. Архитектура Dynamic Memory

Команда на удаление или добавление памяти передается обратно по цепочке: Balancer — DMVSP — VMBus — DMVSC. Дальше происходит следующее.

Добавление памяти. Если нужно добавить память, диспетчер памяти стека виртуализации выделяет виртуальной машине дополнительную память. Компонент DMVSC, используя технологию «горячего добавления памяти», расширяет адресное пространство виртуальной машины, и после этого соответствующие виртуальные адреса сопоставляются с выделенными физическими адресами. Для того чтобы все это работало, необходима поддержка Hot Add RAM на уровне гостевой операционной системы. Именно этим обусловлен достаточно скромный список поддерживаемых операционных систем, о чем я расскажу ниже.

Удаление памяти. Для удаления памяти используется механизм, известный как ballooning. Когда поступает команда на удаление памяти, DMVSC проверяет, какие области памяти на данный момент не используются. Из них отбирается объем, предназначенный для удаления, и затем эти адреса «захватываются» DMVSC в монопольный доступ. После этого «захвата» область памяти помечается как Driver Locked и становится недоступной для использования операционной системой и приложениями. Как только память «захвачена», соответствующие виртуальные адреса «отвязываются» от физических адресов, и соответствующие ячейки памяти могут быть переданы другим виртуальным машинам. В дальнейшем, если виртуальной машине нужно добавить память, соответствующее адресное пространство «освобождается» и связывается с выделенной областью памяти. Важно отметить, что удаление памяти происходит для операционной системы абсолютно незаметно: «захваченная» память по-прежнему остается «видна» системе, хотя и помечается как Driver Locked. Поэтому программы типа Task Manager в гостевой операционной системе не покажут, сколько памяти выделено в данный момент на самом деле. Чтобы увидеть, сколько было выделено памяти виртуальной машине, следует задействовать оснастку консоли Hyper-V Manager или счетчики производительности (подробнее о них будет рассказано далее).

Параметры настройки

После установки SP1 на закладке Memory в свойствах виртуальной машины появится возможность выбора режима выделения памяти: Static или Dynamic. При выборе Static память будет задаваться «жестко», как было до SP1. При выборе Dynamic станут активными новые параметры настройки:

  • Startup RAM;
  • Maximum RAM;
  • Memory Buffer;
  • Memory Weight.

Рассмотрим эти параметры подробнее.

Startup RAM. Объем памяти, выделяемый виртуальной машине при ее запуске. По умолчанию равен 512 Мбайт. Если система не сможет выделить соответствующий объем памяти, виртуальная машина не запустится.

Maximum RAM. Максимальный объем памяти, который теоретически может быть выделен виртуальной машине. По умолчанию это 64 Гбайт.

Memory Buffer. Самый интересный параметр. Задается в процентах и может принимать значения от 5 до 2000%. Дело в том, что система выделяет виртуальной машине память, основываясь на текущем потреблении памяти. Но выдавать памяти в соответствии с учением Маркса «каждому — по потребностям» — не совсем хорошая идея. Например, виртуальная машина может периодически испытывать пиковые нагрузки. Разумеется, система тут же постарается выделить необходимый объем памяти, но, во-первых, его может не оказаться под рукой, а во-вторых, потребление памяти может возрасти настолько резко, что механизм Dynamic Memory просто не успеет среагировать, и на какое-то время производительность упадет за счет выгрузки данных из оперативной памяти на диск. Для того чтобы избежать подобных ситуаций, предусмотрен параметр Free Buffer, позволяющий держать определенный объем памяти свободным. Это означает, что, к примеру, если Free Buffer равен 20%, система всегда будет пытаться обеспечить, чтобы у виртуальной машины было свободно не менее 20% памяти. Free Buffer задается именно в процентах, а не в мегабайтах, поскольку зависит от текущего потребления памяти. Значение в мегабайтах можно вычислить по формуле:

где Current Commit — суммарное потребление памяти гостевой операционной системой и всеми запущенными приложениями. Надо заметить, что формула эта верна для Windows Server 2008 RC. В бета-версии формула была немного другая, более сложная.

Memory Weight. В случае если вся память, имеющаяся у сервера, используется виртуальными машинами и одной или нескольким из них требуется дополнительная память, системе приходится у кого-то память забирать и кому-то отдавать. Именно этот параметр определяет, у кого память будет в первую очередь отобрана и кому в первую очередь будет добавлена. До тех пор пока у сервера имеется свободная память, веса виртуальных машин не играют ровно никакой роли. Но как только память подходит к концу, и нужно у кого-то забрать и кому-то дать, система в первую очередь отбирает память у виртуальных машин с наименьшим приоритетом и отдает тем, у кого приоритет выше.

Memory Reserve

Может возникнуть такая ситуация, когда виртуальные машины потихоньку «съедят» всю память, и свободной памяти у операционной системы хоста не останется. В силу особенностей архитектуры Hyper-V нехватка памяти в базовой операционной системе может иметь неприятные последствия для всех виртуальных машин, которые на ней запущены. Чтобы этого избежать, можно задействовать параметр Memory Reserve, позволяющий зарезервировать определенный объем памяти для использования базовой операционной системой. Зарезервированный объем будет недоступен для использования виртуальными машинами. К сожалению, данный параметр нельзя изменить через настройки в графической интерфейсе, это можно сделать только через редактирование реестра. Параметр можно найти в разделе HKLMSOFTWAREMicrosoftWindowsNTCurrentVersionVirtualization, называется он MemoryReserve и имеет тип DWORD. Он определяет объем резервируемой памяти в мегабайтах. Максимальное значение — 4096, то есть 4 Гбайт. Даже если установить 8192, все равно система зарезервирует только 4 Гбайт памяти.

Работа балансировщика

Теперь посмотрим, как работает Dynamic Memory Balancer и как он определяет, кому сколько выдать и у кого сколько забрать.

Ideal Target Memory. Для каждой виртуальной машины определяется «идеальный объем памяти». Вычисляется он по формуле:

Это значение — идеал: столько, сколько нужно виртуальной машине для нормальной работы. И именно этот объем памяти система попытается ей выделить. А вот выделит ли, вопрос интересный.

Memory Pressure. Ключевой критерий — нагрузка Memory Pressure. Нагрузка — это не что иное, как отношение Ideal Target Memory к фактически выделенной памяти:

Этот параметр показывает, что именно происходит в данный момент с памятью на виртуальной машине: малые значения показывают, что памяти более чем достаточно, большие — что использование памяти подходит к пределу. Значения, превышающие 100%, говорят о том, что памяти сильно не хватает, и виртуальная машина активно использует файлы подкачки.

Pressure Band. Так когда же память нужно добавить, а когда — убрать? На основании изменений нагрузки с течением времени, по каким-то одним разработчикам известным хитрым формулам система рассчитывает максимальное и минимальное допустимые значения нагрузки, образующие диапазон — Pressure Band. До тех пор пока текущее значение нагрузки в этот диапазон укладывается, не происходит ничего, но как только выходит за рамки — мы видим следующее:

  • если нагрузка больше максимально допустимого значения — виртуальной машине добавляется память;
  • если нагрузка меньше минимально допустимого значения — излишки памяти отнимаются.

Рекомендации по использованию

Поскольку механизм Dynamic Memory задействует как компоненты базовой операционной системы, так и компоненты уровня ядра в гостевых операционных системах, список поддерживаемых операционных систем невелик. Со стороны хоста это следующие операционные системы (разумеется, с установленным SP1):

  • Microsoft Windows Server 2008 R2 редакций Standard, Enterprise, Datacenter;
  • Microsoft Hyper-V Server 2008 R2.

Гостевые операционные системы следующие (при условии установки интеграционных служб):

  • Windows Server 2003 редакций Standard, Web, Enterprise, Datacenter SP2;
  • Windows Server 2008 редакций Standard, Web, Enterprise, Datacenter SP2;
  • Windows Server 2008 R2 редакций Standard, Web, Enterprise, Datacenter SP2;
  • Windows Vista редакций Enterprise, Ultimate;
  • Windows 7 редакций Enterprise, Ultimate.

Для гостевых операционных систем Windows Server 2008 R2 и Windows 7 необходимо вместо обновления интеграционных компонентов установить SP1.

Настройка

Собственно, ничего особо сложного здесь нет — все настройки (за исключением Memory Reserve) как на ладони, что они значат — уже было описано выше (рисунок 6).

Рисунок 6. Настройки памяти для виртуальной машины

Подводные камни

А вот теперь я упомяну о некоторых «подводных камнях», на которые можно наткнуться при использовании Dynamic Memory.

Достаточно ли для всех Startup RAM 512 Мбайт? При запуске виртуальной машины ей выделяется объем памяти, равный значению Startup RAM. Если требуемого объема свободной памяти нет, система попытается «отобрать» память у других виртуальных машин. Сделано это будет в первую очередь, независимо от приоритета запускаемой виртуальной машины. Если набрать требуемый объем памяти все равно не удастся — виртуальная машина не запустится. Особенно важно об этом помнить при планировании отказоустойчивых кластеров: может возникнуть такая ситуация, что при обработке отказа и переносе виртуальных машин с одного узла на другой для запуска некоторых виртуальных машин не хватит памяти. Поэтому значение Startup RAM желательно устанавливать на минимум, необходимый для запуска гостевых операционных систем. И только в случае, если используются «тяжелые приложения», требующие много памяти сразу на старте, значение Startup RAM можно увеличить.

Maximum RAM. Значение Maximum RAM по умолчанию равно 64 Гбайт. Это значение можно и нужно уменьшить, если используются приложения, очень «прожорливые» в отношении памяти, или если виртуальная машина используется в тестовых целях, чтобы одна маленькая «утечка памяти» не заняла всю доступную память на сервере.

Memory Buffer & Weight. Самое главное, о чем необходимо помнить, — большой вес виртуальной машины не гарантирует того, что ей будет выделен требуемый объем памяти. Это обеспечивает лишь Free Buffer, да и он, на самом деле, не гарантирует. К примеру, у нас есть две виртуальные машины. Одна из них совсем не критична, и вес у нее установлен минимальный. Но Free Buffer у нее стоит на максимальном значении — 2000%. Другая же виртуальная машина для нас очень важна, и мы дали ей максимальный вес, но Free Buffer — минимальный — 5%. Что же произойдет? А вот что: виртуальная машина с большим Free Buffer, несмотря на свой маленький вес, заберет себе практически всю доступную память, и, когда виртуальная машина с высоким приоритетом захочет получить дополнительную память, система не сможет ей эту память выделить. Чтобы избежать подобных ситуаций, нужно грамотно выставлять значение Free Buffer и увеличивать его только тогда, когда это реально необходимо. Например, если виртуальная машина может испытывать периодические пиковые нагрузки. Или, например, если требуется некоторый объем свободной памяти для файлового кэша. Ну а если не хочется «играть с настройками», всегда можно задать статический объем памяти.

Файлы подкачки. Для работы Dynamic Memory необходим файл подкачки гостевой операционной системы. Минимальный его размер должен «перекрывать» наиболее ресурсоемкие приложения. Что это означает? Допустим, у нашей виртуальной машины остается всего 100 Мбайт свободной памяти. И указан размер файла подкачки — 100 Мбайт. Если некое приложение попытается запросить за один раз 400 Мбайт памяти, система просто не сможет столько выделить: лимит выделения всего 200 Мбайт. Если же приложение будет запрашивать два раза по 200 Мбайт, то 200 Мбайт система выделит за счет файла подкачки, в это время виртуальной машине будет выделена дополнительная память и второй раз 200 Мбайт будет выделено приложению. Поэтому минимальный размер файла подкачки должен быть таким, чтобы перекрыть и «большие запросы».

Мониторинг

Как же понять, что именно происходит с нашими виртуальными машинами? Как уже было сказано, изнутри гостевой операционной системы ничего увидеть не возможно. Увидеть можно из базовой операционной системы — через консоль Hyper-V Manager и через счетчики производительности.

Hyper-V Manager

В оснастке Hyper-V Manager имеются следующие столбцы (рисунок 7).

Рисунок 7. Оснастка Hyper-V Manager
  • Assigned Memory — сколько памяти было фактически выделено виртуальной машине.
  • Memory Demand — сколько памяти виртуальная машина запрашивает у системы (та самая Ideal Target Memory).
  • Memory Status — состояние памяти: «ОК» — все в порядке, «Warning» — памяти не вполне достаточно (Memory Demand немного больше, чем Assigned Memory), «Low» — все плохо, памяти не хватает.

Счетчики производительности

Для более детального анализа можно использовать счетчики производительности из оснастки монитора производительности Perfmon. С Dynamic Memory связаны две группы счетчиков: Hyper-V Dynamic Memory Balancer и Hyper-V Dynamic Memory VM, как показано в таблице. Первая группа относится ко всему хосту в целом, а вторая позволяет отслеживать параметры отдельных виртуальных машин.

Таблица. Счетчики производительности Dynamic Memory

Заключение

Итак, мы разобрали, для чего нужна Dynamic Memory, чего можно достичь с ее помощью и как с этим вообще работать. Смею надеяться, что кому-то из читателей пригодятся советы, данные в этой статье. В любом случае, если у вас возникнут какие-либо вопросы, пишите мне на lcd.admin@gmail.com.

Александр Косивченко (lcd.admin@gmail.com) — системный администратор в компании «Эльдорадо». Круг профессиональных интересов: ИТ, преимущественно технологии Microsoft, виртуализация, Hyper-V

Like this post? Please share to your friends:
  • Виртуальная память windows 7 сколько ставить файл подкачки
  • Виртуальная память windows 10 что это такое
  • Виртуальная память windows 10 сколько ставить 16гб
  • Виртуальная память windows 10 как работает
  • Виртуальная память windows 10 как настроить для игр