Группа исследователей из Нанкинского университета (Китай) представила проект Ultra KSM (UKSM), в рамках которого для ядра Linux создан менеджер памяти с поддержкой системы дедуплицирования данных. UKSM является альтернативной реализацией созданной в рамках проекта KVM технологии KSM (Kernel Shared Memory), позволяющей исключить дублирование данных в памяти через совместное использование одинаковых блоков в разных виртуальных окружениях. UKSM позволяет автоматически выявлять дубликаты помещаемых в память данных и физически сохранять только одну копию, привязывая остальные копии через ссылки, используя структуры данных аналогичные KSM. В настоящее время проектом подготовлен набор патчей для ядра 3.4, а также сформированы готовые пакеты для Debian, Ubuntu и Fedora.
Наибольшей эффективности UKSM достигает при использовании в сочетании с системами виртуализации, позволяя экономить значительный объём памяти в ситуации запуска множества типовых гостевых окружений, ценой незначительного повышения нагрузки на CPU. В отличие от KSM и похожего проекта Xen Dedup, UKSM использует более быстрый и эффективный в плане снижения нагрузки на CPU алгоритм сканирования, производящий фоновое выявление и объединение областей памяти. Дубликаты могут объединяться не только для виртуальных машин (UKSM не привязан к KVM), но и для любых пользовательских процессов и системных данных. Все операции производятся в прозрачном режиме и не заметны для пользователей и компонентов системы.
Особенности UKSM:
- Сканирование дубликатов для всей системы - UKSM автоматически сканирует содержимое всей памяти, используемой для маппинга пользовательских процессов, что позволяет обеспечить дудупликацию данных стандартных пользовательских процессов, без модификации кода. Для работы дедупликации требуется только установить специальный патч к ядру Linux, при желании можно осуществить тонкую настройку параметров UKSM через sysfs;
- Минимальное влияние на производительность. Сканирование ведётся в фоновом режиме, используя моменты простоя процессора, учитывая характер избыточных данных и проверяя только ещё не проверенные области. Для областей в которых выявлено небольшое число избыточных данных проверка ведётся с минимальной интенсивностью, а для областей в которых выявлено много дубликатов выделяется больше ресурсов.
- Эффективный алгоритм выявления избыточных данных. При тестировании системы на базе Intel core 2 Q9300 CPU, KSM показал пиковую производительность слияния областей памяти на уровне 260 Mб/сек, в тов время как средняя производительность была значительно ниже. На той же системе UKSM, использующих иной метод хэширования, позволил достигнуть производительности от 477 до 923 Мб/сек для областей с наличием дубликатов и до 2445 Мб/сек для областей не содержащих избыточных данных.
- Избегание проверки часто меняющихся областей памяти - в процессе сканирования UKSM учитывает области, в которых производится активное изменение данных, и пропускает их чтобы не тратить время зря.