Альтернативаная реализация KSM.
UKSM является расширенной реализацией технологии KSM (Kernel Shared Memory). Напомню что KSM позволяет исключить дублирование данных в памяти через совместное использование процессами одинаковых страниц памяти. UKSM, также как и стандартный KSM, автоматически выявляет дубликаты данных находящихся в памяти и физически сохранять только одну копию, привязывая остальные копии через ссылки. Но существуют особенности которые отличают UKSM от KSM:1. UKSM сканирует анонимную память всех пользовательских процессов.
2. Алгоритм обнаружения участков памяти с большим дублированием страниц. Такие участки обрабатываются более интенсивно, чем те где дублирование не так велико.
3. Расширенный алгоритм сканирования позволяет с большей скоростью обрабатывать участки памяти и выполнять слияние дублирующихся страниц.
4. Фильтрация участков памяти где наиболее часто происходит изменение страниц. Такие участки в процессе сканирования пропускаются.
5. Реализована "нулевая" страница, это специальная страница куда ссылаются все обнаруженные страницы с нулевым размером.
6. Также реализованы различные надстройки над оригинальным KSM.
Итак устанавливаем. Использовался следующий патч uksm-0.1.1.1-for-v3.4.ge.0.patch. Патч заявлен для ядра версии 3.4 и успешно наложился на ядря версий 3.2.12 и 3.4.2. На версию 3.5.0 патч не наложился, другие версии я не пробовал.
# cd /usr/src/linux
# wget http://kerneldedup.org/download/uksm/0.1.1.1/patches/uksm-0.1.1.1-for-v3.4.ge.0.patch
# patch -p1 < uksm-0.1.1.1-for-v3.4.ge.0.patch
# make menuconfig
Далее в меню конфигурирования ядра выбираем UKSM и собираем ядро
Processor type and features --->
Enable KSM for page merging
Choose UKSM/KSM strategy (Ultra-KSM for page merging) --->
Ultra-KSM for page merging
# make && make modules_install
Вот и все полученное ядро нужно установить, соответствующим для вас образом и перезагрузиться в него. Включение uksmd происходит аналогично ksmd
# echo 1 > /sys/kernel/mm/uksm/run
# ps u -C uksmd
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1654 5.2 0.0 0 0 ? SN Jul02 34:13 [uksmd]
Также стоит отметить что в /sys/kernel/mm/uksm добавилось несколько новых ключей.
На главную "Virtualizing Linux"
Комментариев нет:
Отправить комментарий