Sign in

Зарегистрируйтесь, чтобы стать полноправным участником сообщества Masterpro.ws.

Fedora. Собираем ядро с поддержкой zcache

Данное руководство предназначено целиком и полностью тем, кто никогда еще ничего подобного не делал... никогда не пересобирал ядро linux; но очень хотел бы узнать, как же это делается. Нет, вы не поверите, ничего особо сложного! Давайте попробуем; глядишь - дальше будет еще проще.

Building a custom kernel

В помощь - вот эта страничка на fedoraproject.org. Но - внимание - мы будем с вами работать чуть иначе, нежели в описании по ссылке... итак, поехали. Для начала пересоберем ядро Fedora таким образом, чтобы включить поддержку zcache! Производительность системы - действительно, что может быть актуальнее? -

 

Like its predecessors, zcache lives to store compressed copies of pages in memory. It no longer looks like a swap device, though; instead, it is set up as a backing store provider for the Cleancache framework. Cleancache uses a set of hooks into the page cache and filesystem code; when a page is evicted from the cache, it is passed to Cleancache, which might (or might not) save a copy somewhere. When pages are needed again, Cleancache gets a chance to restore them before the kernel reads them from disk. If Cleancache (and its backing store) is able to quickly save and restore pages, the potential exists for a real improvement in system performance. Zcache uses LZO to compress pages passed to it by Cleancache; only pages which compress to less than half their original size are stored. There is also a special test for pages containing only zeros; those compress exceptionally well, requiring no storage space at all. There is not, at this point, any other attempt at the unification of pages with duplicated contents (as is done by KSM), though.

 

Сказано - сделано. Начинаем.

Готовим окружение для создания пакетов в домашнем каталоге:

$ rpmdev-setuptree

Далее:

$ yumdownloader --source kernel-3.10.10-200.hu.1.fc19.i686.src.rpm

 

В примере использована актуальная на момент написания статьи версия ядра; меняйте на любую другую.

 

Ставим зависимости исходников для сборки:

su -c 'yum-builddep kernel-3.10.10-200.hu.1.fc19.i686.src.rpm'

И теперь вот так:

$ rpm -Uvh kernel-3.10.10-200.hu.1.fc19.src.rpm

Цепочку варнингов при этом, как водится, игнорируем.

Переходим:

cd ~/rpmbuild/SPECS

И привносим в config-local всего одну только строчку CONFIG_ZCACHE=y

echo CONFIG_ZCACHE=y >> ~/rpmbuild/SOURCES/config-local

Пожалуй, это все, что нам понадобится. Достаточно для начала, теперь собираем:

rpmbuild -ba kernel.spec

Стоит набраться терпения, последняя из введенных команд может выполняться у вас часов семь-восемь. Не удивляйтесь. Зато в итоге вы получите уже бинарник, который очень легко установить, перейдя в соответствующую директорию; например - вот так:

$ cd ~/rpmbuild/RPMS/i686/

и выполнив:

$ su -c 'rpm -ivh kernel-3.10.10-200.hu.1.fc19.i686.rpm'

В принципе, там будет много ядер, увидите. Выбирайте любое. Вполне возможно, что вам придется удалить рабочее ядро из системы, для того чтобы поставить вновь собранное.

Да, но это еще не все. Необходимо добавить строчку загрузки zcache в конфиге граба. В репах RussianFedora существует, конечно, Grub-customizer и вы можете воспользоваться им; но возможно, вы попросту предпочтете отредактировать /boot/grub2/grub.cfg , добавив опцию zcache ; измененная часть конфига будет выглядеть у вас в итоге следующим образом:


linux /vmlinuz-3.10.10-200.hu.1.fc19.i686 root=/dev/mapper/fedora-root ro rd.lvm.lv=fedora/swap rd.md=0 rd.dm=0 rd.luks=0 vconsole.keymap=us rd.lvm.lv=fedora/root rhgb quiet LANG=ru_RU.UTF-8 zcache

 

Все, ребут.
Да, но как убедиться, что у нас действительно получилось и zcache работает? Что же, попробуйте вот так, скажем:

$ dmesg | tail -n 22
[ 14.524016] zcache: created ephemeral local tmem pool, id=4

Или попросту вот эдак:

dmesg | grep -i zcache

 

На сегодня это все, удачи! Продолжение следует.

2 комментарии

  • Aleksej

    написал Aleksej

    Воскресенье, 29 сентября 2013 15:41

    Да, разумеется. При написании статьи и в ходе экспериментов использовалось твое ядро, но я специально оговорился, что это частность. Описанный механизм к тому и описан, чтобы не просто скачать твое самое лучшее в мире ядро из твоего репа, это ведь совсем несложно... а - понять принцип и суметь, используя данное руководство, работать с любым дефолтным ядром.

  • Hubbitus

    написал Hubbitus

    Воскресенье, 29 сентября 2013 13:40

    Ух ты.
    В статье используется в примерах моё ядро kernel-3.10.10-200.hu.1.fc19.i686.src.rpm, круто. Его можно просто пересобрать, там уже эта опция есть. Или просто поставить это ядро бинарное из моего репа (http://hubbitus.info). Там есть и другие плюшки как UKSM, BFQ, TuxOnIce…

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

Добавьте ваш комментарий