Рекомендации по файлам подкачки Hyper-V
Введение
Насколько большим должен быть ваш файл подкачки в системе Windows Server, которая используется в качестве хоста Hyper-V? Должны ли вы настраивать размер файла подкачки вручную или позволить системе управлять им? Существуют ли разные рекомендации по файлам подкачки для узлов Hyper-V под управлением Windows Server 2012 R2 по сравнению с узлами под управлением Windows Server 2008 R2?
Это должны быть простые вопросы, на которые нужно ответить, не так ли? К сожалению, похоже, что Microsoft не дает жестких и быстрых рекомендаций по этим вопросам, поэтому давайте рассмотрим это подробнее.
Общие рекомендации для файла подкачки
«Официальные» рекомендации Microsoft относительно файла подкачки для Windows Server можно найти в KB 2860880. Microsoft указывает, что есть две основные причины наличия файла подкачки в системах Windows Server:
- Расширить системную память фиксации, чтобы данные можно было выгружать на диск, когда в системе недостаточно физической оперативной памяти.
- Чтобы разрешить сохранение дампа сбоя системы для устранения неполадок при сбое Windows.
Обратите внимание, что второе требование можно обойти в Windows Server 2008 R2 и более поздних версиях, настроив значение реестра DedicatedDumpFile на сервере. Что это делает, так это создает специальный файл подкачки, который используется исключительно для хранения файла аварийного дампа системы, если он будет создан. В блоге NTdebugging на MSDN есть хорошее объяснение того, как это работает. Эта функциональность была впервые представлена в исправлении для Windows Server 2008 R2, описанном здесь.
Конечно, файлы подкачки также служат для третьей цели на компьютерах под управлением Microsoft Windows, а именно для резервного копирования страниц памяти, к которым Windows редко обращается, чтобы эти страницы можно было удалить из физической оперативной памяти, чтобы освободить место для более часто используемых страниц. Это восходит к ранним дням Microsoft Windows, когда оперативная память была дорогой, и такая подкачка памяти была необходима, чтобы разрешить запуск большего количества приложений на компьютере. Но поскольку производительность снижается, когда выгружаемые файлы необходимо извлекать с диска, поэтому, если вы хотите, чтобы ваши приложения реагировали и работали как можно лучше, лучший подход — просто увеличить объем оперативной памяти на вашем сервере, потому что, как говорит Microsoft в своем Статья в базе знаний:
Этот последний бит относится к особым типам серверов, где по-прежнему требуется файл подкачки. Примерами таких серверов являются контроллеры домена и серверы Microsoft Exchange, и вы можете прочитать статью базы знаний, чтобы узнать о других подобных исключениях.
Но обратите внимание на то, что Microsoft только что сказала: если на вашем сервере достаточно оперативной памяти, вам может вообще не понадобиться файл подкачки. Означает ли это, что вы можете просто отключить файл подкачки на своем четырехпроцессорном сервере с 512 ГБ оперативной памяти?
Подождите минутку. Вернемся к рассмотрению серверов, которые используются исключительно как хосты Hyper-V без каких-либо других установленных ролей. В той же статье базы знаний есть следующая рекомендация относительно таких серверов:
Кажется, это отвечает на вопрос о размере файла подкачки для хостов Hyper-V под управлением Windows Server 2012 и более поздних версий, но что насчет хостов под управлением Windows Server 2008 R2?
Особенности файла подкачки для хостов Windows Server 2008 R2
Главное, что нужно понять, это то, что гипервизор Microsoft на самом деле не использует файл подкачки в системах Windows Server. Таким образом, если вы являетесь хостом Hyper-V, на котором установлена установка Server Core и у вас не установлены другие серверные роли, кроме роли Hyper-V, вы можете подумать, что файл подкачки вообще не нужен, верно?
Ну это почти правда. Хотя в родительском разделе у вас нет других ролей сервера, кроме Hyper-V, у вас могут быть запущены некоторые дополнительные службы. Примеры таких служб могут включать агенты резервного копирования, агенты мониторинга системы и другие службы Microsoft, сторонних независимых поставщиков программного обеспечения или собственный код. Мало того, что некоторые из этих служб могут работать лучше с файлом подкачки, есть еще одна важная причина, по которой вы можете захотеть настроить файл подкачки, когда у вас запущены такие службы: утечки памяти. Если одна из ваших служб нестабильна и в процессе ее работы происходит утечка памяти, возможно, доступная оперативная память будет постепенно использоваться до тех пор, пока производительность и надежность виртуальных машин, работающих на вашем хосте, не пострадают. Плохо спроектированные драйверы для сетевых устройств и устройств хранения также могут привести к утечке памяти и, в конечном итоге, оказать аналогичное негативное влияние на способность вашего хоста выполнять свои виртуализированные рабочие нагрузки.
Настройка файла подкачки со значением по умолчанию «Управляемый системой» может решить эту проблему, позволив файлу подкачки увеличиваться для компенсации таких утечек памяти, но это не устраняет корень проблемы. А в некоторых сценариях использование параметра файла подкачки «Управляемый системой» может иметь другие негативные последствия. Например, предположим, что вы загружаете свой узел Hyper-V с 100-гигабайтного LUN в SAN. Вы выбрали этот размер для загрузочного тома хоста по двум причинам: Windows Server требуется всего несколько десятков ГБ свободного места на диске в соответствии с системными требованиями для платформы, а хранилище SAN стоит дорого, поэтому вы хотите использовать как можно меньше его для загрузочный том вашего хоста. Но что, если Windows решит, что настройка «Управляемая системой» требует, чтобы файл подкачки был больше доступного свободного места на томе? В этом случае Windows будет вынуждена использовать размер файла подкачки, который не является оптимальным в соответствии с ее собственными расчетами. И по мере того, как эффект утечки памяти ухудшается, Windows может дополнительно «управлять» размером своего «Управляемого системой» таким образом, что со временем производительность файла подкачки становится еще менее необязательной, что приводит к снижению производительности вашего хоста и его рабочих нагрузок. Все это может усугубиться, если проблемный драйвер или служба использует файлы с отображением памяти.
Решение в этом случае представляется двояким:
- Вручную настройте максимальный размер вашего файла подкачки, чтобы вместе с установкой Windows он не превышал свободного места на вашем загрузочном томе (также оставьте себе запас места).
- Отслеживайте память выгружаемого пула, память невыгружаемого пула и другие счетчики производительности памяти, чтобы обнаруживать утечки памяти по мере их возникновения. Если обнаружена утечка, свяжитесь с поставщиком драйвера или службы и попросите их немедленно устранить ее.
Каковы хорошие значения начального и максимального размера файла подкачки для хоста Windows Server 2008 R2 Hyper-V? Я слышал разные рекомендации от своих контактов на местах, но все они сводятся к настройке около 8 ГБ для начального размера файла подкачки и 12 ГБ для максимального. Эти рекомендации предназначены для пользователей, использующих узлы Windows Server 2008 R2 Hyper-V, в системах которых установлено до 128 ГБ физической оперативной памяти. Я знаю гораздо меньше людей, у которых установлены хосты с 256 или 512 ГБ ОЗУ, и их рекомендации труднее обобщить, поэтому я не буду вдаваться в подробности здесь, но могу написать дополнительную статью в будущем, если узнаю что-нибудь, что может быть полезно. полезно для читателей, у которых в среде развернуты подобные системы.
Два предостережения, однако, относительно вышеизложенного:
- Не забывайте, что максимальный размер файла подкачки 12 ГБ на самом деле означает 12 x 1024 x = 12288 МБ, а не 12 x 1000 = 12000 МБ.
- При желании вы можете установить как начальный, так и максимальный размер файла подкачки на одно и то же значение (например, 12288 МБ).
Последние мысли
Помните, что файлы страниц «Управляемые системой» намного меньше в Windows Server 2012 и более поздних версиях. Для получения дополнительной информации см. этот пост в блоге Ask The Core Team. Я упоминаю об этом здесь только для того, чтобы пояснить, что то, о чем я говорил в предыдущем разделе (т. е. ручная настройка размеров файлов пользовательских страниц), применимо только к хостам Hyper-V, работающим под управлением Windows Server 2008 R2. Для хостов под управлением Windows Server 2012 и более поздних версий следует следовать рекомендации Microsoft оставлять для файла подкачки хоста значение «Управляемый системой».
Если вы хотите отслеживать утечки памяти на узле Hyper-V, вы можете использовать шаблон Hyper-V для средства анализа журналов производительности (PAL), доступного в CodePlex. Используйте это в течение пары недель для отслеживания утечек памяти, и если они не будут обнаружены, отключите мониторинг. Однако, если для службы выпущено исправление или доступна обновленная версия драйвера, снова включите мониторинг после применения исправления или обновления драйвера и наблюдайте еще несколько недель, чтобы убедиться, что новая утечка не появится.
Наконец, включение динамической памяти на узле Hyper-V требует некоторого внимания в отношении настройки файла подкачки на узле Windows Server 2008 R2 Hyper-V. Подробнее об этой проблеме можно прочитать в следующем посте в блоге Марка Газая. Однако вам не нужно беспокоиться о таких настройках на хостах, работающих под управлением Windows Server 2012 и более поздних версий, поскольку логика корневого резерва и файла подкачки на этих платформах была значительно улучшена.