Как теперь работает технология дедупликации страниц памяти Transparent Page Sharing в vSphere 6.0.
Какое-то время назад мы писали о том, что технология дедупликации страниц памяти Transparent Page Sharing (TPS) с приходом больших страниц памяти становится ненужной (а в последних версиях vSphere и вовсе она отключена). Но это не значит, что сейчас TPS нигде не используется совсем - ведь большие страницы, при условии недостатка ресурсов памяти на хост-сервере, гипервизор ESXi может разламывать на маленькие, после чего дедуплицировать их.
Между тем, в последних релизах VMware vSphere, включая ESXi 6.0, появилась более гранулярная модель управления механизмом TPS, который можно задействовать для отдельных групп виртуальных машин (например, серверы обрабатывающие одни и те же данные, где вероятность дубликатов страниц высока). Называется этот механизм Salting (хэширование с солью).
Как известно, TPS производит хэширование страниц памяти виртуальных машин, после чего происходит сравнение хэшей на предмет их совпадения. Если они совпадают, то начинается побитовое сравнение этих страниц памяти, чтобы исключить ложное срабатывание дедупликации страниц (потому что, как известно, у двух разных исходных строчек теоретически может быть один хэш).
Если страницы полностью совпадают - вносятся изменения в таблицу страниц памяти, где для второй копии ставится просто ссылка на первую, а физически вторая копия страницы уничтожается.
При любой попытке записи в такую страницу со стороны виртуальной машины - мгновенно создается ее физическая копия с помощью механизма copy-on-write (CoW), и она уже перестает быть шаренной (каждая машина начинает использовать свою копию).
Так вот в последних версиях VMware vSphere механизм TPS работает не так просто. По умолчанию используется Salting, а в качестве этой самой соли используется UDID виртуальной машины, который всегда уникален для данного сервера vCenter. То есть перед снятием хэша со страницы памяти происходит добавление соли к исходным данным, а поскольку соль одинакова только для конкретной ВМ, то и дедупликация страниц со стороны TPS происходит только на уровне отдельной виртуальной машины (Intra-VM TPS).
Механизм Salting используется по умолчанию, начиная со следующих версий гипервизоров:
- ESXi 5.0 Patch ESXi500-201502001
- ESXi 5.1 Update 3
- ESXi 5.5, Patch ESXi550-201501001
- ESXi 6.0
Управлять этим механизмом можно из расширенных настроек хоста VMware ESXi (Advanced Settings, раздел Mem). По умолчанию используется расширенная настройка Mem.ShareForceSalting в значении 2. Это означает, что salting включен и работает Intra-VM TPS.
Если же мы поставим эту настройку в значение 0, как на рисунке выше, то соль перестанет добавляться к хэшу при работе алгоритма TPS, а значит он будет работать для всех виртуальных машин на хосте (Inter-VM TPS).
Ну и, как становится понятным, TPS можно включить для отдельной группы виртуальных машин на хосте ESXi, для чего нужно использовать одинаковую соль для этих виртуальных машин. Для этого в расширенных настройках виртуальной машины нужно добавить параметр sched.mem.pshare.salt с одинаковым значением у всех нужных вам ВМ (это также можно сделать и в vmx-файле).
В этом случае значением настройки Mem.ShareForceSalting должно быть 1 или 2 (разницы тут особой нет, кроме того, что если у вас используется значение 1, то при отсутствии соли включится Inter-VM sharing).
Ну и в таблице ниже приведем различия в работе алгоритма TPS для различных значений Mem.ShareForceSalting и в зависимости от заполненности sched.mem.pshare.salt для виртуальных машин.
Значение Mem. ShareForceSalting (настройка уровня хоста)
| Значение sched.mem.pshare.salt (настройка уровня ВМ)
| vc.uuid (свойство ВМ)
| Значение соли в настройках ВМ
| TPS между виртуальными машинами (Inter-VM)
| TPS внутри каждой из ВМ (Intra-VM)
|
0 |
Игнорируется |
Игнорируется |
0 |
Да, между всеми машинами на хосте |
Да |
1 |
Установлено |
Игнорируется |
Используется sched.mem.pshare.salt |
Только между ВМ с одинаковой солью |
Да |
1 |
Не установлено |
Игнорируется |
0 |
Да, между всеми машинами на хосте |
Да |
2 |
Установлено |
Игнорируется |
sched.mem.pshare.salt |
Только между ВМ с одинаковой солью |
Да |
2
(по умолчанию) |
Не установлено (по умолчанию) |
Используется |
Используется vc.uuid |
No inter-VM TPS |
Да |
2 |
Не установлено |
Отсутствует по какой-либо причине |
Используется случайный номер для каждой ВМ |
No inter-VM TPS |
Да |
Для более детальной информации вы можете обратиться к статье KB 2097593.
Таги: VMware, vSphere, Memory, Обучение, TPS, Performance, ESXi, VMachines
Отключенный Transparent Page Sharing на хосте VMware ESXi - сколько можно сэкономить, если включить его?
Осенью мы писали о том, что компания VMware планирует отключить технологию Transparent Page Sharing (TPS) в новых релизах платформы виртуализации VMware vSphere. Напомним, что TPS - это механизм поиска и удаления дубликатов страниц памяти в целях экономии физического пространства RAM (вместо самой дублирующейся страницы хранится только ссылка на нее).
Технологию TPS было решено прекратить использовать по двум причинам:
- Использование в современных ОС больших страниц памяти (large memory pages) размером в 2 МБ делает намного менее вероятным появление дубликатов.
- Использование одной копии страницы памяти несколькими ВМ создает потенциальные проблемы безопасности.
На данный момент статус отключенности TPS по умолчанию на хостах VMware ESXi таков:
- В ESXi 5.5 U2d, запланированном на первый квартал 2015 года, TPS будет отключен.
- В ESXi 5.1 U3, выпущенном 4 декабря 2014 года, TPS уже отключен.
- В ESXi 5.0 U3d, запланированном на первый квартал 2015 года, TPS будет отключен.
Однако не стоит сбрасывать TPS со счетов - возможно, если вы используете старые ОС (Windows 2003) и инфраструктуру VDI на базе старых клиентских ОС, TPS сможет сэкономить вам какое-то количество памяти (если безопасность TPS вас не особенно заботит). Ну и напомним, что TPS отключена только для межмашинного взаимодействия и продолжает работать для внутримашинного.
Для этого в VMware сделали скрипт Host Memory Assessment Tool.ps1, который показывает количество памяти на хостах, которую можно сэкономить с помощью TPS.
Вот что он делает:
- Соединяется с vCenter и определяет хосты ESXi
- Позволяет включить SSH на хостах
- Генерирует отчет об обследовании на экономию по TPS
- Можно экспортировать результаты в CSV
- Можно снова включить SSH, если нужно
Пока скрипт позволяет указать только одну пару логин-пароль на хостах ESXi, но надеемся это будет исправлено в следующих версиях.
Здесь вот какие значения в колонках:
- Total Host Memory – объем физической памяти хоста (доступной vmkernel).
- Host Mem Saved via TPS – объем памяти, которая сэкономлена TPS.
- Host Mem Saved via TPS Zero Pages – объем памяти, которая экономится на нулевых страницах. Фактически такая экономия не актуальна для большинства случаев, так как сэкономленные нули означают, что недостатка ресурсов не наблюдается.
- Potential Host Mem Savings Lost – а вот эта экономия уже на реально используемых страницах. Объем, указанный тут, показывает сколько можно потерять, отключив TPS на хосте.
- Host Free Mem – объем свободной оперативной памяти (по данным vmkernel). Если свободной памяти меньше, чем значение в предыдущей колонке, то при отключении TPS будет своппинг.
Вот такая штука, можно проводить эксперименты (особенно полезно это будет для крупной инфраструктуры). Скрипт безопасен для памяти хостов, так как использует режим доступа к памяти только для чтения.
После запуска скрипта вам может потребоваться отключить или включить Transparent Page Sharing на хосте ESXi. В этом случае вам пригодится KB 2097593. Таги: VMware, TPS, Memory, ESXi, vSphere
Технология Transparent Page Sharng (TPS) будет отключена по умолчанию в следующих релизах и обновлениях VMware vSphere.
Четыре с половиной года назад мы писали про то, что у технологии Transparent Page Sharing (TPS), которая по-умолчанию используется в VMware vSphere, нет будущего. Напомним, что TPS - это механизм поиска и удаления дубликатов страниц памяти в целях экономии физического пространства RAM (вместо самой дублирующейся страницы хранится ссылка на нее).
Технолония потеряла актуальность, когда вовсю стали применяться большие страницы памяти (Large Memory Pages), для которых размер страницы равен 2 МБ, а значит вероятность появления двух полностью одинаковых страниц очень низка.
Ну вот и пришло время эту технологию отключать. На днях компания VMware выпустила статью базы знаний "Security considerations and disallowing inter-Virtual Machine Transparent Page Sharing", в которой заявляется о том, что в будущих релизах платформы виртуализации VMware vSphere функции TPS будут по умолчанию отключены (хотя и доступны).
Это во многом связано с тем, что TPS (помимо негативного влияния на производительность хоста) - это еще и потенциальный источник проблем, связанных с неавторизованным доступом к данным оперативной памяти. Эти моменты основаны на аналитическом исследовании, выводы из которого опубликованы в статье базы знаний "Additional Transparent Page Sharing management capabilities in ESXi 5.5 patch October 16, 2014 and ESXi 5.1 and 5.0 patches in Q4, 2014 (2091682)".
Вот когда TPS будет отключен в VMware vSphere:
- ESXi 5.5 Update release – Q1 2015
- ESXi 5.1 Update release – Q4 2014
- ESXi 5.0 Update release – Q1 2015
- VMware ESX 6.x и более поздние версии
Более подробно о проблемах с TPS написано вот в этой статье на блогах VMware.
Если же вы хотите отключить этот механизм уже прямо сейчас, то нужно сделать следующее:
- Залогиниться на ESX\ESXi или vCenter Server через vSphere Client.
- Выбрать нужный хост и зайти на вкладку Configuration, затем перейти в Advanced Settings в секции Software.
- Выбираем раздел Mem и в нем устанавливаем значение параметра Mem.ShareScanGHz в 0.
После патча и обновлений ESXi механизм TPS можно будет включить следующим образом (Advanced Settings в секции Software):
- Параметр Mem.ShareForceSalting (включение TPS на уровне всего хоста ESXi). Если значение стоит 0 - то значит TPS по-прежнему работает на хосте, если 1 - механизм отключен.
- Параметр sched.mem.pshare.salt (ставится на уровне ВМ) позволяет включать/отключать TPS для отдельных виртуальных машин (например, старые Windows или линуксы - для них можно было бы включить). Когда параметр ShareForceSalting установлен в значение 1, то для нуждающихся в TPS машин в их Advanced Configuration нужно установить одинаковые значения "соли". Без этого TPS не работает - соответственно, он отключен.
Таги: VMware, vSphere, TPS, Memory, Performance, Security, Update
Возможности Dynamic Memory в Microsoft Hyper-V.
Мы уже писали о том, какими возможностями будет обладать технология Dynamic Memory в гипервизоре Hyper-V и почему в ней будет отсутствовать аналог Transparent Page Sharing (TPS) от VMware. Совсем недавно компания Microsoft раскрыла подробности работы техник Dynamic Memory, которые теперь доступны в виде презентации, которую можно скачать с сайта TechEd:
Таги: Microsoft, Hyper-V, Dymanic Memory, VMachines, Server, VDI, TPS
Важная информация от Microsoft - техники Dynamic Memory в Hyper-V и есть ли будущее Transparent Page Sharing в VMware vSphere 4?
Многим пользователям VMware должна быть известна техника Memory Overcommit, которая представляет собой, по-сути, совокупность трех технологий:
- Memory Balooning - выдергивание неиспользуемой памяти из гостевой системы и ее передача нуждающимся виртуальным машинам
- Технологии использования файлов подкачки (swap) и Memory Compression (появится в следующих релизах vSphere)
- Transparent Page Sharing - техника поиска и удаления дубликатов страниц памяти виртуальных машин (остаются только ссылки на них)
Сегодня мы как раз и поговорим о последней технологии - Transparent Page Sharing. По статистике она позволяет экономить до 15% и более оперативной памяти хост-сервера VMware ESX, что, естественно, ведет к большему (по сравнению с другими платформами) коэффициенту консолидации виртуальных машин.
Отчасти, именно благодаря Transparent Page Sharing, продуктам компании VMware удавалось выгодно отличаться от конкурирующих платформ виртуализации. Page Sharing работает со страницами памяти размером 4 килобайта, что практически не влияет на производительность сервера виртуализации.
Так вот, согласно вот этой статье Alessandro Perilli, операционные системы Windows 7 и Windows Server 2008 R2 уже поддерживают технологию Large Memory Pages, которая позволяет использовать страницы памяти размером 2 мегабайта (чувствуете разницу на 2 с половиной порядка?). Кроме того, эта технология поддерживается и в процессорах Intel Nehalem, а также последних моделях AMD Opteron. Так вот исследование показало, что большие страницы памяти Large Memory Pages работают на 20% производительнее маленьких на новом железе. Что позволяет говорить о том, что эта техника использования памяти в операционных системах скоро станет стандартной.
Теперь вернемся к Transparent Page Sharing. Во-первых, подумайте - сколько дубликатов страниц вы найдете, если размер страницы увеличился в 500 раз? Наверное, процент этих страниц будет очень и очень близок к нулю. Во-вторых, по заверениям Microsoft (объяснявшей возможности функций Dynamic Memory в новой версии Hyper-V), процесс исследования двухмегабайтовых страниц памяти побитно, их хэширование и сохранение в таблице учета дубликатов может занять часы!
Данные факты подтверждаются и сотрудником самой VMware, который говорит о том, что ESX не трогает большие страницы:
The only problem is that when large pages is used, Page Sharing needs to find identical 2M chunks (as compared to 4K chunks when small pages is used) and the likelihood of finding this is less (unless guest writes all zeroes to 2M chunk) so ESX does not attempt collapses large pages and thats [sic] why memory savings due to TPS goes down when all the guest pages are mapped by large pages by the hypervisor.
Понимаете о чем это? Это о том, что технология Transparent Page Sharing в ее нынешнем виде может умереть... Таги: TPS, VMware, ESX, vSphere, Memory Overcommit, Dynamic Memory, Hyper-V, Microsoft, vSphere, Blogs, RAM, Производительность, Performance
|