KSM
KSM (англ. kernel same-page merging, иногда трактуется как kernel shared memory) — технология ядра Linux, которая позволяет ядру объединять одинаковые страницы памяти между различными процессами или виртуальными гостевыми системами в одну для совместного использования; реализация дедупликации данных для оперативной памяти. Технология предусматривает сканирование памяти в целях поиска дубликатов страниц, каждая пара дубликатов объединяется в одну страницу, помечаемую как подлежащую копированию при записи, таким образом ядро будет автоматически разделять страницы памяти, как только один процесс изменит данные[1].
Впервые появилась в версии ядра 2.6.32[2]. На первых порах применения были опасения, что функция может быть использована в качестве уязвимости, в последующих выпусках обеспокоенность была учтена. Другой проблемой является то, что поиск дубликатов накладывает дополнительную нагрузку на процессорные ресурсы[1], поэтому в технологии была предусмотрена оценка — насколько часто будут те или иные страницы памяти изменяться, чтобы в тех случаях, когда ресурсные издержки сравнительно высоки не прибегать к слиянию страниц[3].
Наиболее широко применяется в системах виртуализации на базе ядра Linux, изначально — в KVM, впоследствии поддержана в Xen и Virtuozzo (в гипервизорах VMware, также построенных на базе ядра Linux, используется собственная технология дедупликации страниц оперативной памяти). Вместе с техниками вытеснения неиспользуемой памяти, подкачки на стороне гипервизора и непосредственного сжатия, KSM обеспечивает системам виртуализации возможность перезакладки ресурсов оперативной памяти (англ. memory overcommitment); в условиях достаточно однородных экземпляров гостевых операционных систем возможен значительный эффект, в частности, экспериментальная реализация KSM от Red Hat показала, что 52 виртуальных экземпляра Windows XP с выделенными 1 ГБ памяти, могут работать на компьютере с 16 ГБ оперативной памяти[4].
Также установлена применимость и эффективность в определённых случаях вне рамок задач виртуализации[2][3].
Примечания
- KSM tries again (недоступная ссылка). lwn.net. kernel.org. Дата обращения: 21 августа 2010. Архивировано 16 сентября 2012 года.
- Anatomy of Linux Kernel Shared Memory (недоступная ссылка). IBM DeveloperWorks. IBM. Дата обращения: 21 августа 2010. Архивировано 16 сентября 2012 года.
- Increasing memory density by using KSM (недоступная ссылка). kernel.org. kernel.org. Дата обращения: 21 августа 2010. Архивировано 16 сентября 2012 года.
- Kernel Samepage Merging (memory deduplication) (недоступная ссылка). kernelnewbies. kernelnewbies. Дата обращения: 21 августа 2010. Архивировано 16 сентября 2012 года.