Lupo Alberto⇓ пишет:Сегодня прочитал на «хабре», прикрутил, наблюдаю...
Если использовать встроенный zram в ядро, то в загрузчике следует использовать опцию:
zram.num_devices=4 где 4 количество ядер в процессоре.
Ну и под это состряпал скрипт запуска zram, который считает количество ядер и количество памяти для каждого устройства /dev/zram(i) а затем монтирует.
/sbin/zram.sh:
#!/bin/bash
zram_start() {
cpu=`awk -v cpu=0 '$1 == "processor" {cpu=cpu+1} END {print cpu}' /proc/cpuinfo`
SIZE=`awk -v cpu=$cpu '$1 == "MemTotal:" {print ((0 + $2) * 1024)/cpu}' /proc/meminfo`
echo $SIZE
for ((a=0; a<cpu; a++))
do
echo $SIZE >/sys/block/zram$a/disksize
echo "$SIZE >/sys/block/zram$a/disksize"
done
for ((a=0; a<cpu; a++))
do
mkswap /dev/zram$a
done
for ((a=0; a<cpu; a++))
do
swapon /dev/zram$a -p 10
done
}
zram_start >/dev/null &
ну и для gentoo скрипт автозагрузки.
#!/sbin/runscript
depend()
{
before xdm
}
start()
{
ebegin "Starting zram"
zram.sh
eend 0 "Failed to start zram"
}
Предполагается что перед началом выполнения данного скрипта, уже настроено загрузка модуля либо ядра с нужным количеством устройств /dev/zram
Проверил сжатие действительно работает в режиме компиляции тормоза пропали. Ну и память используется теперь значительно меньше.