В помощь - вот эта страничка на 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
На сегодня это все, удачи! Продолжение следует.