Преимущества преобразования адресов второго уровня в Hyper-V R2

Опубликовано: 22 Апреля, 2023


Физическая память, виртуальная память и трансляция адресов


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




  • Схема преобразования адресов (или сопоставление) между адресным пространством виртуальной памяти и адресным пространством физической памяти.


  • Таблица страниц, в которой хранится информация о сопоставлении адресного пространства виртуальной памяти с физической памятью.


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


На аппаратной стороне процессора резервный буфер трансляции (TLB) поддерживает трансляцию адресов виртуальной памяти в физическую память. TLB — это кэш процессора, который содержит недавно использованные сопоставления из таблицы страниц. Когда требуется преобразование виртуального адреса в физический, проверяется TLB, чтобы определить, содержит ли он информацию о сопоставлении. Если совпадение найдено, предоставляется адрес физической памяти, и доступ к данным продолжается. Если совпадений не найдено, возникает ошибка страницы, и операционная система проверяет таблицу страниц на наличие информации о сопоставлении. Если информация об отображении найдена, она записывается в TLB, выполняется преобразование адреса, а затем продолжается доступ к данным. На рис. 1 показаны этапы преобразования адресов, когда сопоставление должно быть загружено в TLB из информации в таблице страниц.


Изображение 27970
Рис. 1. Сопоставление виртуальных и физических адресов с поиском в таблице страниц


Преобразование адресов в Windows Server 2008 Hyper-V


Виртуализация усложняет сопоставление адресных пространств виртуальной и физической памяти. В Windows Server 2008 Hyper-V виртуальные машины загружаются и работают одновременно в фактической физической памяти (т. е. без превышения лимита памяти или совместного использования страниц между виртуальными машинами). Объем памяти, настроенный и используемый виртуальной машиной, определяется при ее создании и сохранении в настройках виртуальной машины. Гипервизор Windows выполняет выделение из физической памяти, когда виртуальная машина включена, и объем системной памяти виртуальной машины не может быть изменен во время работы виртуальной машины. Кроме того, гипервизор Windows управляет следующими адресными пространствами памяти:




  • Физический адрес системы (SPA)


  • Гостевой физический адрес (GPA)


  • Гостевой виртуальный адрес (GVA)

Пространство SPA — это адресное пространство физической памяти компьютера, на котором выполняется гипервизор Windows. Пространство GPA — это адресное пространство физической памяти дочернего раздела (виртуальной машины). Каждый дочерний раздел имеет одно пространство GPA, как и каждый физический компьютер имеет одно пространство SPA. Для каждого дочернего раздела также существует виртуальное адресное пространство, называемое пространством GVA. Как и в физической среде, пространство GVA предоставляет адресное пространство, которое намного больше, чем пространство GPA, и страницы памяти, которые не сопоставлены с расположением GPA, выгружаются на диск.


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


Как видно на рис. 2, гипервизор Windows управляет не одним, а двумя уровнями трансляции адресного пространства для гостевой операционной системы, работающей на виртуальной машине. Первый уровень перевода отображает пространство GVA в пространство GPA. Второй уровень перевода отображает пространство GPA в пространство SPA. Для этого гипервизор Windows поддерживает таблицу теневых страниц, которая объединяет два уровня преобразования адресного пространства в одну таблицу страниц. Каждый раз, когда гостевая операционная система изменяет сопоставление страниц, гипервизор корректирует таблицу теневых страниц, чтобы отразить изменение. С точки зрения накладных расходов, непрерывные обновления таблицы теневых страниц требуют много циклов процессора. Для приложений, интенсивно использующих память, этот процесс может составлять наибольшую часть накладных расходов на производительность для виртуализации.


Изображение 27971
Рисунок 2: Пример сопоставления между SPA, GPA и GVA в Windows Server 2008 Hyper-V


Преобразование адресов второго уровня в Windows Server 2008 R2 Hyper-V


Что касается управления памятью, Windows Server 2008 R2 Hyper-V поддерживает новую функцию, называемую преобразованием адресов второго уровня (SLAT). SLAT использует технологии AMD-V Rapid Virtualization Indexing (RVI) и Intel VT Extended Page Tables (NPT) для снижения накладных расходов, возникающих при сопоставлении виртуальных и физических адресов, выполняемом для виртуальных машин. Через RVI или EPT соответственно процессоры AMD-V и Intel VT поддерживают сопоставление адресов и выполняют (аппаратно) два уровня преобразования адресного пространства, необходимые для каждой виртуальной машины, уменьшая сложность гипервизора Windows и переключателей контекста, необходимых для управления виртуальными машинами. ошибки страницы машины. Благодаря SLAT гипервизору Windows не нужно дублировать отображения страниц гостевой операционной системы. Снижение нагрузки на процессор и память, связанное с SLAT, улучшает масштабируемость по отношению к количеству виртуальных машин, которые могут одновременно выполняться на одном сервере Hyper-V. Например, группа Microsoft Remote Desktop Services (RDS) недавно опубликовала в блоге информацию о тестах производительности, проведенных с использованием внутреннего инструмента моделирования в конфигурации служб терминалов Windows Server 2008, работающих в качестве виртуальной машины на Windows Server 2008 R2 Hyper-V. Результаты показали, что процессорная платформа с поддержкой SLAT увеличила количество поддерживаемых сеансов в 1,6–2,5 раза по сравнению с процессорной платформой без SLAT. В целом Microsoft сообщает, что при использовании процессоров с поддержкой SLAT накладные расходы процессора гипервизора Windows снижаются примерно с 10% до примерно 2%, а использование памяти сокращается примерно на 1 МБ для каждой виртуальной машины.


Хотя RVI не требуется для поддержки рабочих нагрузок, выполняемых в Windows Server 2008 R2 Hyper-V, если вы собираетесь запускать ресурсоемкие рабочие нагрузки, такие как службы удаленных рабочих столов, SQL Server или веб-службы, вам следует выполнить тестирование на платформах с поддержкой SLAT, чтобы определить сможете ли вы добиться значительных улучшений производительности.


Поддержка процессоров AMD-V RVI


Если вы оцениваете платформу AMD-V для своего развертывания Windows Server 2008 R2 Hyper-V, AMD впервые представила RVI в 2007 году со своим четырехъядерным процессором AMD Opteron под кодовым названием «Barcelona». В настоящее время RVI поддерживается во всех моделях четырехъядерных и шестиядерных процессоров AMD Opteron.


Помимо RVI, еще одной функцией AMD-V, поддерживающей SLAT, является Tagged TLB, который расширяет функциональные возможности TLB. Первоначально TLB был разработан для хранения сопоставлений виртуальных и физических адресов для одной операционной системы. Архитектура AMD-V расширяет эту функциональность, добавляя идентификатор адресного пространства или ASID. ASID — это присвоение уникального идентификатора в TLB, позволяющее различать сосуществующие записи сопоставления памяти сервера Hyper-V и виртуальной машины, и это помогает повысить производительность переключения контекста, устраняя необходимость сбрасывать TLB каждый раз, когда обработка переключается между виртуальными машинами. машины. Важно отметить, что для многоядерных процессоров каждое ядро процессора поддерживает отдельный TLB.


Поддержка процессоров Intel VT EPT


Intel поддерживает EPT в двухъядерных и четырехъядерных процессорах Xeon 5500 (кодовое название Nehalem-EP), а также в следующем выпуске процессора Xeon (кодовое название Nehalem-EX), который будет иметь до восьми ядер. Процессоры Nehalem-EX планируется выпустить в начале 2010 года.


Подобно функции AMD-V Tagged TLB, записи сопоставления адресов TLB процессора Nehalem включают в себя идентификатор виртуального процессора (VPID), который является уникальным идентификатором, который назначает запись преобразования адреса конкретной виртуальной машине.


Вывод


В Windows Server 2008 R2 Hyper-V поддержка процессоров с поддержкой SLAT позволяет снизить нагрузку на гипервизор Windows, связанную с преобразованием адресов виртуальных машин. А поскольку виртуальные машины можно легко перемещать между процессорными платформами с поддержкой SLAT и без нее, эту функцию легко использовать. При планировании развертывания Windows Server 2008 R2 Hyper-V настоятельно рекомендуется использовать платформу AMD-V или Intel VT с поддержкой SLAT, чтобы воспользоваться преимуществами повышения производительности для виртуализированных рабочих нагрузок.