Объединение одной страницы ядра - Википедия - Kernel same-page merging
В вычисление, слияние одной страницы ядра (КСМ), также известный как разделяемая память ядра, слияние памяти, дедупликация памяти, и дедупликация страниц это ядро функция, которая позволяет гипервизор система поделиться страницы памяти которые имеют идентичное содержимое между несколькими процессы и / или виртуализированный гости. Хотя напрямую не связано, Виртуальная машина на основе ядра (KVM) может использовать KSM для объединения страниц памяти, занятых виртуальные машины.
KSM выполняет дедупликацию памяти путем сканирования основная память для физических страниц с идентичным содержимым и определяет виртуальные страницы, которые сопоставлены с этими физическими страницами. Он оставляет одну страницу без изменений и повторно отображает каждую повторяющуюся страницу, чтобы указывать на одну и ту же физическую страницу, после чего освобождает дополнительные физические страницы для повторного использования. Он также помечает обе виртуальные страницы как "копирование при записи "(COW), так что ядро автоматически переназначит виртуальную страницу обратно на отдельную физическую страницу, как только какой-либо процесс начнет писать на нее.[1]
KSM изначально предназначался для запуска большего количества виртуальных машин на одном хосте. совместное использование памяти между процессы а также виртуальные машины. По его выполнение, пользователи обнаружили, что KSM также может быть полезен в невиртуализированных средах, в которых память очень важна.[2][3] Экспериментальная реализация KSM от Red Hat показала, что 52 виртуальных экземпляра Windows XP с 1 ГБ памяти могут работать на главном компьютере, имеющем только 16 ГБ оперативной памяти.[4]
KSM был объединен с Ядро Linux mainline в версии 2.6.32, выпущенной 3 декабря 2009 года.[2][4] Чтобы быть эффективным, ядро операционной системы должно находить идентичные страницы памяти, удерживаемые разными процессами. Ядру также необходимо предсказать, будут ли страницы обновляться достаточно редко, чтобы слияние было эффективным использованием ресурсов процессора.[3] Обеспокоенность заключается в том, что, хотя использование памяти уменьшается, загрузка ЦП увеличивается, что сводит на нет потенциальное увеличение производительности.[1]
Риски безопасности
Безопасность также вызывает беспокойство:
- Позволяет обойти рандомизация разметки адресного пространства (ASLR)[5][6]
- Предоставляет информацию через время атаки[7]
- Позволяет заражать криптографические ресурсы других виртуализированных гостей через память гребной молот атака[8]
Смотрите также
- Дедупликация данных, уменьшение требований к хранилищу за счет совместного использования дублирующихся файлов
- Одноэкземплярное хранилище
Рекомендации
- ^ а б "KSM пытается снова". lwn.net. kernel.org. Получено 21 августа, 2010.
- ^ а б «Анатомия общей памяти ядра Linux». Разработчик IBM. IBM. Архивировано 9 июля 2016 года.. Получено 21 августа, 2010.CS1 maint: неподходящий URL (связь)
- ^ а б «Увеличение плотности памяти за счет использования KSM» (PDF). kernel.org. Получено 21 августа, 2010.
- ^ а б «Ядро Linux 2.6.32, раздел 1.3. Объединение одинаковых страниц ядра (дедупликация памяти)». kernelnewbies.org. 3 декабря 2009 г.. Получено 12 августа, 2015.
- ^ Куниясу Сузаки; Кенго Иидзима; Тошики Яги; Сирил Арто. «Дедупликация памяти как угроза для гостевой ОС» (PDF).
- ^ Баррези, Антонио; Разави, Кавех; Плательщик, Матиас; Гросс, Томас Р. (август 2015 г.). "CAIN: автоматическое прерывание ASLR в облаке" (PDF). USENIX. Получено 12 августа, 2015.
- ^ Красная шляпа; Поляков, Энди. «Это вопрос времени - атаки AES по времени на OpenSSL». access.redhat.com. Красная шляпа. Получено 4 августа, 2016.
- ^ «Новая атака FFS Rowhammer захватывает виртуальные машины Linux». Получено 17 августа, 2016.
внешняя ссылка
- Документация ядра Linux
- Использование KSM (архивировано 2 июля 2014 г.)
- Страница Fedora KSM
- Сайт виртуальной машины на основе ядра - KSM