Ярлыки

gentoo (19) kde (7) btrfs (5) nvidia (4) portage (3) zfs (3) clementine (2) compiz (2) fs (2) kernel (2) windows (2) zram (2) сеть (2) bash (1) chattr (1) conky (1) cow (1) cpufreq (1) cryptsetup (1) dns (1) dnsmasq (1) dolphin (1) emerald (1) ext4 (1) f2fs (1) ffmpeg (1) firefox (1) kdm (1) kexec (1) kvm (1) lsattr (1) lvm (1) networkmanager (1) noop (1) openrc (1) pulseaudio (1) qemu (1) qtcurve (1) ram (1) reiserfs (1) s2ram (1) samba (1) sed (1) ssd (1) systemd (1) tmpfs (1) vlc (1) webdav (1) zcache (1) игры (1) шифрование (1)

ZRAM вместо tmpfs

При наличии мощных многоядерных процессоров и охочих до памяти программ возникает логичная идея ужать занимаемую память. В ядре Linux для этого существуют два механизма: ZSwap и ZRam. Первый сжимает страницы памяти, уходящие в своп, а второй предназначен для создания в оперативной памяти полноценных разделов с обычными файловыми системами. Особенность ZRam в том, что данные, записываемые на такие разделы, сжимаются на лету быстрыми алгоритмами lzo или lz4.

Активация ZRam в ядре:



После этого можно установить скрипты и юниты для systemd:
# emerge -av zram-init
К услугам пользователя - 3 юнита systemd: для свопа, для /tmp и для /var/tmp. По дефолту в юнитах количество потоков сжатия/распаковки равно 2, поэтому при наличии процессора с большим количеством ядер стоит соответственно увеличить этот показатель. За количество потоков отвечает ключ -s:
ExecStart=/usr/sbin/zram-init -d1 -s8 -alz4 -text4 -ostrictatime -m1777 2048 /tmp
Как видно, по умолчанию используется алгоритм сжатия lz4 - очень быстрый и удачный алгоритм.

После этого останется только активировать загрузку нужных юнитов (здесь своп не был активирован):
# systemctl enable zram_tmp.service
# systemctl enable zram_var_tmp.service
И после перезагрузки можно убедиться, что ZRam задействован вместо традиционной tmpfs:


Здесь видно, что в /var/tmp данные сжатые более, чем в 2 раза: столбец DATA отображает размер несжатых данных, столбец TOTAL показывает фактическое занимаемое данными место. С данными в /tmp ситуация хуже - там, в числе прочего, располагается кэш Chromium с его массой несжимаемых данных вроде картинок.

Можно попробовать собрать какой-нибудь пакет в ZRam. Например, Amarok.


Что ж, сборочные файлы сжимаются в 2 раза. Отражается ли это на скорости сборки пакета?

# genlop -t amarok
 * media-sound/amarok

     Sat Sep 12 18:29:56 2015 >>> media-sound/amarok-2.8.0-r3
       merge time: 2 minutes and 38 seconds.

     Tue Oct  6 23:09:05 2015 >>> media-sound/amarok-2.8.0-r3
       merge time: 2 minutes and 35 seconds.
Удивительно, но дополнительная нагрузка на процессор - сжатие всё-таки небесплатно обходится - никак не отразилась на времени сборки пакета.

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

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