Differences between revisions 10 and 15 (spanning 5 versions)
Revision 10 as of 2016-02-27 08:52:22
Size: 1997
Editor: ?InterUser
Comment:
Revision 15 as of 2018-10-29 21:58:29
Size: 1984
Comment: Some updates
Deletions are marked like this. Additions are marked like this.
Line 2: Line 2:
'''zram''' (previously called '''compcache''') can create RAM based block devices. It is an experimental (staging) module of the Linux kernel since 3.2. '''zram''' (previously called '''compcache''') can create RAM based block devices. It is a module of the Linux kernel since 3.2.
Line 4: Line 4:
== Background information == See https://code.google.com/p/compcache/ and WikiPedia:Zram for more info.
Line 6: Line 6:
 * https://code.google.com/p/compcache/
 * WikiPedia:Zram
== Installation and use ==
Line 9: Line 8:
== Startup script == Starting at buster (current testing) it's possible to simply install the '''zram-tools''' package and customize '''/etc/default/zramswap''' for your needs.
Line 11: Line 10:
Copy the following script to ''/etc/init.d/zram'': For systems using a standard SysV-based init system, it's possible to copy the following script to ''/etc/init.d/zram'':
Line 33: Line 32:
CPUS=`grep -c processor /proc/cpuinfo` CPUS=`nproc`
Line 63: Line 62:
then you may have to make the script executable: then make the script executable:
Line 72: Line 71:

== NB! ==

For the version with the systemd should be used package [[http://packages.ubuntu.com/tr/vivid/zram-config|Ubuntu zram-config_0.3_all.deb]] and newer.

zram (previously called compcache) can create RAM based block devices. It is a module of the Linux kernel since 3.2.

See https://code.google.com/p/compcache/ and Zram for more info.

Installation and use

Starting at buster (current testing) it's possible to simply install the zram-tools package and customize /etc/default/zramswap for your needs.

For systems using a standard SysV-based init system, it's possible to copy the following script to /etc/init.d/zram:

#!/bin/sh
### 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
# Distributed under the GPL version 3 or above, see terms at
#      https://gnu.org/licenses/gpl-3.0.txt

FRACTION=75

MEMORY=`perl -ne'/^MemTotal:\s+(\d+)/ && print $1*1024;' < /proc/meminfo`
CPUS=`nproc`
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

then make the script executable:

chmod +x /etc/init.d/zram

then instruct your system to start it at boot time, with the command

  insserv zram