SLAT

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

SLAT (англ. Second Level Address Translation), также известный как вложенный пейджинг, представляет собой технологию виртуализации с аппаратным обеспечением, которая позволяет избежать накладных расходов, связанных с управляемыми программным обеспечением таблицами теневых страниц.

AMD поддерживает SLAT с помощью технологии Rapid Virtualization Indexing (RVI) с момента появления своих процессоров третьего поколения Opteron (кодовое имя Barcelona). Реализация Intel SLAT, известной как таблица расширенных страниц (EPT), была представлена в микроархитектуре Nehalem, обнаруженной в некоторых процессорах Core i7, Core i5 и Core i3.

Расширения виртуализации ARM поддерживают SLAT, известные как page-tables Stage 2, предоставляемые MMU Stage-2. Гость использует MMU Stage-1. Поддержка была добавлена как дополнительная в архитектуре ARMv7ve и также поддерживается в ARMv8 (32-разрядной и 64-разрядной) архитектурах.

Обзор[править | править код]

Современные процессоры используют концепции физической памяти и виртуальной памяти; Запущенные процессы используют виртуальные адреса и когда команда запрашивает доступ к памяти, процессор переводит виртуальный адрес на физический адрес, используя таблицу страниц или TLB. При запуске виртуальной системы она выделяет виртуальную память хост-системы, которая служит физической памятью для гостевой системы, и тот же процесс преобразования адресов продолжается и в гостевой системе. Это увеличивает стоимость доступа к памяти, поскольку преобразование адреса необходимо выполнить дважды - один раз внутри гостевой системы (с использованием эмуляции теневой страницы) и один раз внутри хост-системы (используя таблицу аппаратных страниц).

Чтобы сделать этот перевод более эффективным, поставщики процессоров реализовали технологии, обычно называемые SLAT. Рассматривая каждый физический адрес-гость в качестве виртуального хоста-хоста, небольшое расширение аппаратного обеспечения, используемого для прохода не виртуализованной таблицы страниц (теперь это таблица гостевых страниц), может пройти таблицу главной страницы. В многоуровневых таблицах страниц таблицу главной страницы можно рассматривать концептуально как вложенную в таблицу гостевых страниц. Аппаратный хост таблицы страниц может обработать дополнительный уровень трансляции почти как добавление уровней в таблицу страниц.

Используя SLAT и многоуровневые таблицы страниц, количество уровней, необходимых для перехода, чтобы найти перевод, удваивается, когда физический адрес гостя имеет тот же размер, что и гостевой виртуальный адрес, и используются страницы одинакового размера. Это повышает важность кэширования значений из промежуточных уровней таблиц главной и гостевой страниц. Также полезно использовать большие страницы в таблицах главной страницы для уменьшения количества уровней (например, в x86-64, используя 2 МБ страницы, удаляет один уровень в таблице страниц). Поскольку память обычно выделяется виртуальным машинам с грубой детализацией, использование больших страниц для физического перевода гостя является очевидной оптимизацией, уменьшая глубину поиска и память, необходимую для таблиц главной страницы.

Реализации[править | править код]

Индексирование быстрой виртуализации[править | править код]

Индексирование быстрого виртуализации (RVI), известное как Nested Pages Tables (NPT) во время его разработки, является технологией виртуализации второго поколения аппаратного обеспечения AMD для блока управления памятью процессора (MMU).

Исследовательский документ VMware показал, что RVI обеспечивает прирост производительности до 42% по сравнению с реализацией программного обеспечения (таблицы теневых страниц). Тесты, проведенные Red Hat, показали удвоение производительности для тестов OLTP.

RVI был представлен в третьем поколении процессоров Opteron под кодовым названием Barcelona.

Расширенные таблицы страниц[править | править код]

Расширенные таблицы страниц (EPT) - это технология виртуализации x86 второго поколения для модуля управления памятью (MMU). Поддержка EPT встречается среди процессоров Intel Core i3, Core i5 и Core i7.

EPT необходим для запуска логического процессора непосредственно в реальном режиме, который называется «неограниченный гость» на жаргоне Intel и представлен в микроархитектуре Westmere.

Согласно оценочному документу VMware: «EPT обеспечивает прирост производительности до 48% для тестов интенсивного MMU и до 600% для микрообъектов с интенсивным MMU», хотя на самом деле он может заставить код работать медленнее, чем программная реализация в некоторых "угловых" (corner case) случаях.

Теневые страницы[править | править код]

Теневой механизм или механизм теневых страниц — это метод, предоставляющий атомарность и надёжность (два из четырёх требований ACID) в системах баз данных.

Под «страницей» в этом контексте подразумевается участок памяти в физическом хранилище (на внешней памяти), обычно размером от 210 до 216 байт.

Механизм теневых страниц — это метод для предотвращения локального обновления страниц. Во время редактирования некоторой страницы выделяется память под теневую страницу. Поскольку на теневую страницу нет ссылок с других страниц на диске, она может быть отредактирована без опасений за соблюдение ограничений, связанных с согласованностью данных. Когда страница готова приобрести свойство «долговечности» (англ. durability), то все страницы, которые обращаются к оригиналу, должны быть обновлены, чтобы ссылаться на новую страницу.

Если ссылающиеся страницы должны также быть обновлены через теневое оповещение, эта процедура может повторяться много раз, приводя к существенным затратам времени. Единственное решение, произведенное WAFL — файловая система облегчает создание страниц. (кэширование «write-behind»). Это увеличивает производительность, избегая множества записей на горячих точках и выше ссылочной иерархии (суперблок файловой системы) совершают за счет высокой латентности.

WAL более популярное решение, которое использует локальные обновления.

Механизм теневых страниц «old master-new master», использован в системах базы данных центрального процессора. В этих системах, продукция каждого batch пробега (возможно работа дня) была написана двум отдельным дискам или другой форме носителя данных. Один из них хранится для резервного копирования, а другой был использован в качестве отправной точки для работы на следующий день.

Механизм теневых страниц также сходен с чисто функциональной структурой данных, в том, что избегает локальных обновлений.

Поддержка в программном обеспечении[править | править код]

Гипервизоры, которые поддерживают SLAT, включают следующее:

  • Hyper-V для Windows Server 2008 R2, Windows 8 и выше. Hyper-V для Windows 8 фактически требует SLAT.
  • KVM, начиная с версии ядра Linux 2.6.26
  • Parallels Desktop для Mac, начиная с версии 5
  • VirtualBox, начиная с версии 2.0.0
  • VMware ESX, начиная с версии 3.5
  • Xen, начиная с версии 3.2.0
  • Bhyve (SLAT обязателен)
  • VMM, собственный гипервизор на OpenBSD (SLAT обязателен)

Некоторым из вышеупомянутых гипервизоров на самом деле требуется SLAT, чтобы работать вообще (а не только быстрее), поскольку они не реализуют программно таблицу теневых страниц. Список не полностью обновлен, чтобы отразить это.