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].
Примечания
править- ↑ 1 2 KSM tries again . lwn.net. kernel.org. Дата обращения: 21 августа 2010. Архивировано из оригинала 16 сентября 2012 года.
- ↑ 1 2 Anatomy of Linux Kernel Shared Memory . IBM DeveloperWorks. IBM. Дата обращения: 21 августа 2010. Архивировано из оригинала 16 сентября 2012 года.
- ↑ 1 2 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 года.
Ссылки
править- Using KSM
- Fedora KSM page Архивная копия от 28 апреля 2012 на Wayback Machine
- Kernel-based virtual machine site Архивная копия от 17 марта 2012 на Wayback Machine
- Detail Overview of the KSM merging process