Created
January 11, 2017 19:19
-
-
Save rbary/e41f452f71d217bbca90ca64870aacc1 to your computer and use it in GitHub Desktop.
Install zRAM on Debian(8)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# | |
not_root() { | |
echo "ERROR: You have to be root to execute this script" | |
exit 1 | |
} | |
zram_exists() { | |
echo "ERROR: /etc/init.d/zram already exists" | |
exit 1 | |
} | |
# Check if user is root | |
[ $EUID != 0 ] && not_root | |
# Check if zram file already exists | |
[ -f /etc/init.d/zram ] && zram_exists | |
cat >/etc/init.d/zram <<EOL | |
#!/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 <[email protected]> | |
# 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 | |
EOL | |
chmod +x /etc/init.d/zram | |
insserv zram | |
/etc/init.d/zram start | |
exit 0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment