From a35fd28d4ba023e60443500751f484e8baa0a145 Mon Sep 17 00:00:00 2001 From: Cyteen Date: Thu, 24 May 2018 17:05:11 +0100 Subject: [PATCH] Initial commit. --- 010_zram.sh | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 010_zram.sh diff --git a/010_zram.sh b/010_zram.sh new file mode 100644 index 0000000..ffe8bcb --- /dev/null +++ b/010_zram.sh @@ -0,0 +1,57 @@ +#!/bin/sh +cat > /etc/init.d/zram <<'EOF' +#!/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 +# 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 + ;; + "status") + swapon -s + ;; + *) + echo "Usage: `basename $0` (start | stop)" + exit 1 + ;; +esac +EOF + +chmod +x /etc/init.d/zram + +insserv zram