14.16. Оптимизация
Данный раздел описывает методы оптимизации работы гипервизора и виртуальных машин.
14.16.1. Kernel Same-Page Merging
14.16.1.1. Описание технологии KSM
KSM (Kernel Same-Page Merging) — это технология ядра Linux, позволяющая объединять одинаковые страницы памяти между различными пользовательскими процессами и виртуальными машинами в одну для совместного использования, реализуя таким образом дедупликацию данных для оперативной памяти.
Соответственно, использование KSM позволяет более эффективно расходовать оперативную память повышая тем самым плотность виртуальных машин на одном физическом сервере.
Однако, дедупликация данных — это ресурсоёмкий процесс, который увеличивает нагрузку на центральный процессор, что в свою очередь может привести к ухудшению производительности для некоторых классов задач.
Также в прошлом известны случаи успешных атак из одной виртуальной машины на другую в пределах одного физического сервера. Один из таких случаев описан в статье Gorka Irazoqui, Mehmet Sinan Inci, Thomas Eisenbarth and Berk Sunar - Wait a minute! A fast, Cross-VM attack on AES. В настоящий момент информации об открытых уязвимостях, связанных с KSM, нет. Однако, использование данной технологии не рекомендуется в сертифицированных системах, системах с повышенными требованиями к защищённости и/или работающих с конфиденциальными данными.
По умолчанию технология KSM отключена в МСВСфера ОС, проверить её статус можно с помощью следующей команды:
$ cat /sys/kernel/mm/ksm/run
0
возможные значения:
0
— поддержка KSM выключена, все ранее объединённые страницы остаются объединёнными;1
— поддержка KSM включена;2
— поддержка KSM выключена, все ранее объединённые страницы разъединяются.
14.16.1.2. Включение поддержки KSM
Для включения поддержки KSM необходимо установить пакет ksmtuned
:
$ sudo dnf install -y ksmtuned
И активировать сервисы ksm
и ksmtuned
:
$ sudo systemctl enable --now ksm
$ sudo systemctl enable --now ksmtuned
После этого проверьте включена ли технология KSM в ядре:
$ cat /sys/kernel/mm/ksm/run
1
Следить за количеством объединённых страниц памяти (одна страница — 4096 байт) можно с помощью следующей команды:
$ watch cat /sys/kernel/mm/ksm/pages_sharing
После включения KSM вам необходимо некоторое время следить за производительностью и потреблением ресурсов на сервере виртуализации, особенно за использованием центрального процессора. Если желаемый эффект не достигнут, значит KSM не подходит под ваш сценарий использования и эту технологию необходимо выключить.
14.16.1.3. Отключение поддержки KSM
Для отключения KSM необходимо остановить соответствующие сервисы:
$ sudo systemctl disable --now ksmtuned
$ sudo systemctl disable --now ksm
Опционально, можно также отменить уже выполненное объединение страниц памяти:
$ echo 2 | sudo tee /sys/kernel/mm/ksm/run
При необходимости, для удаления пакета ksmtuned
выполните следующую команду:
$ sudo dnf erase -y ksmtuned