Применимо к редакции: МСВСфера 9 (ФСТЭК)

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