Страницы

Сохранить статью у себя в соцсети:

вторник, 3 июля 2012 г.

§ Ultra KSM.

Альтернативаная реализация 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"

Комментариев нет:

Отправить комментарий

Популярные сообщения

Профиль в Google+ Яндекс цитирования Яндекс.Метрика