28 February 2016
lz4
and restart
for the init script.
Using zram
(formerly compcache
) it is possible to slice a portion of the available RAM and create a compressed swap device that will eat some CPU cycles but will overall increase the amount of available RAM.
/etc/init.d/zram
.chmod +x /etc/init.d/zram
.update-rc.d zram defaults
.#!/bin/sh ### BEGIN INIT INFO # Provides: zram # Required-Start: $local_fs $syslog # Required-Stop: $local_fs $syslog # Default-Start: 2 3 4 5 # 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 Przemyslaw Tomczyk for suggesting swapoff parallelization # Added LZ4 support, added restart suport # - Wizardry and Steamworks <office@grimore.org> FRACTION=75 USE_LZ4=true # Skip systemd redirect. _SYSTEMCTL_SKIP_REDIRECT=OHYES # Load the VERBOSE setting and other rcS variables . /lib/init/vars.sh # Define LSB log_* functions. # Depend on lsb-base (>= 3.0-6) to ensure that this file is present. . /lib/lsb/init-functions 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)) if [ $USE_LZ4 = "true" ]; then echo "lz4" > /sys/block/zram$i/comp_algorithm fi 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 ;; restart|reload|force-reload) ${0:-} stop ${0:-} start ;; *) echo "Usage: `basename $0` (start | stop)" exit 1 ;; esac
Alternatively, ZSWAP is a kernel space solution to compressing RAM.