Как навсегда включить сжатый обмен оперативной памяти? Какую версию использовать?
РЕДАКТИРОВАТЬ: в точном есть сейчас zram-config
, Это сложная задача - сжать до половины объема оперативной памяти на $(количество ядер ЦП) устройств подкачки. Он не всегда запускался при загрузке, но выдавал sudo service zram-config start
работает.
Я включил compcache="256 M" в /etc/initramfs-tools/initramfs.conf
как описано здесь (мной:P). Это - я считаю - создает /dev/ramzswap0
но он никогда не включается как своп. Работает только после mkswap
&& swapon
,
Тогда есть модуль Zram, который создает /dev/zram
, Это что-то еще? Работает так же, но /dev/ramzswap
создается из модуля ramzswap.
В конце дня я хочу получить сжатый своп в оперативной памяти и использовать лучшее из двух, и для этого мне нужно знать, как включить его на постоянной основе без хакерских атак. Как это сделать?
Я писал о ramzswap в Lucid, но в Natty все изменилось. Вы все еще можете включить ramzswap в initramfs.conf, но он не активируется.
PS: я просмотрел все правила udev в /lib и /etc, но ничего интересного не нашел.
4 ответа
Я боролся с той же проблемой.
Сегодня я нашел отличный пост об этом в блоге. http://weirdfellow.wordpress.com/2011/05/04/compressed-ram-with-zram/
Хотя "sudo start zramswap" не работал, когда я перезагружал свой компьютер, он отлично решил мою проблему.
Попытайся.
Теперь есть PPA, который устанавливает правильный скрипт Upstart для включения zram во время загрузки. Он выбирает правильный размер и количество сжатых устройств подкачки для вашей системы.
Прямо из вики Debian. Для меня это самое простое.
Сначала скопируйте и вставьте этот код в /etc/init.d/zram
### BEGIN INIT INFO
# Provides: zram
# Required-Start: $local_fs
# Required-Stop: $local_fs
# Default-Start: S
# Default-Stop: 0 1 6
# Short-Description: Use compressed RAM as in-memory swap
# Description: Use compressed RAM as in-memory swap
### END INIT INFO
# Author: Antonio Galea <antonio.galea@gmail.com>
# Thanks to Przemysław Tomczyk for suggesting swapoff parallelization
FRACTION=75
MEMORY=`perl -ne'/^MemTotal:\s+(\d+)/ && print $1*1024;' < /proc/meminfo`
CPUS=`grep -c processor /proc/cpuinfo`
SIZE=$(( MEMORY * FRACTION / 100 / CPUS ))
case "$1" in
"start")
param=`modinfo zram|grep num_devices|cut -f2 -d:|tr -d ' '`
modprobe zram $param=$CPUS
for n in `seq $CPUS`; do
i=$((n - 1))
echo $SIZE > /sys/block/zram$i/disksize
mkswap /dev/zram$i
swapon /dev/zram$i -p 10
done
;;
"stop")
for n in `seq $CPUS`; do
i=$((n - 1))
swapoff /dev/zram$i && echo "disabled disk $n of $CPUS" &
done
wait
sleep .5
modprobe -r zram
;;
*)
echo "Usage: `basename $0` (start | stop)"
exit 1
;;
esac
Затем выполните эти две команды:
sudo chmod +x /etc/init.d/zram
sudo /etc/init.d/zram start
Наконец, чтобы добавить zram при запуске:
sudo update-rc.d zram defaults
Готово.
Вот дешевое решение. Добавьте следующую строку в /etc/rc.local
, перед exit 0
:
find /dev/ -maxdepth 1 -name 'ramzswap*' | while read dev; do
mkswap $dev
swapon -p 1000 $dev
done