Kernel SamePage Merging

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

Kernel SamePage Merging (KSM, также: Kernel Shared Memory, Memory Merging) — технология ядра Linux, которая позволяет ядру объединять одинаковые страницы памяти между различными процессами или виртуальными гостевыми системами в одну для совместного использования. Эта возможность используется KVM для того, чтобы несколько аналогичных гостевых виртуальных машин могли занимать меньше памяти. Поскольку память используется совместно, общее её использование гостевыми системами снижается.

Это осуществляется путем сканирования памяти и поиска дубликатов страниц. Затем пара дубликатов объединяется в одну страницу, и сопоставляется прежним местам. Эта страница помечается как "copy-on-write", так что ядро будет автоматически разделять их снова, как только один процесс изменит данные.[1]

KSM первоначально была предназначена для запуска нескольких виртуальных машин на одном хосте, чтобы память процессов, а также виртуальных машин использовалась совместно. После реализации, было также установлено, что технология может быть полезна не только для использования в виртуальных средах.[2][3] Экспериментальная реализация KSM от Red Hat показала, что 52 виртуальных экземпляра Windows XP с 1 Гб памяти, могут работать на компьютере с 16 Гб оперативной памяти.[4]

KSM впервые появилась в версии 2.6.32 ядра Linux.[2] Для эффективной работы, ядро операционной системы должно найти похожие страницы памяти, принадлежащие разным процессам. Также оно должно решить, будут ли страницы обновляться достаточно часто, чтобы слияние памяти эффективно использовало ресурсы процессора.[3] Первоначально были опасения, что эта функция может быть использована в качестве уязвимости (эта обеспокоенность в последующем была учтена). Еще одной проблемой является то, что хотя использование памяти снижается, загрузка процессора увеличивается, тем самым отрицая потенциал увеличения производительности.[1]

Ссылки[править | править исходный текст]

Внешние ссылки[править | править исходный текст]