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].

Примечания

[править | править код]
  1. 1 2 KSM tries again. lwn.net. kernel.org. Дата обращения: 21 августа 2010. Архивировано из оригинала 16 сентября 2012 года.
  2. 1 2 Anatomy of Linux Kernel Shared Memory. IBM DeveloperWorks. IBM. Дата обращения: 21 августа 2010. Архивировано из оригинала 16 сентября 2012 года.
  3. 1 2 Increasing memory density by using KSM. kernel.org. kernel.org. Дата обращения: 21 августа 2010. Архивировано из оригинала 16 сентября 2012 года.
  4. Kernel Samepage Merging (memory deduplication). kernelnewbies. kernelnewbies. Дата обращения: 21 августа 2010. Архивировано из оригинала 16 сентября 2012 года.