#!/bin/bash
### BEGIN INIT INFO
# Provides: zram
# Required-Start: $local_fs
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Increased Performance In Linux With zRam (Virtual Swap Compressed in RAM)
# Description: Adapted from systemd scripts at https://github.com/mystilleef/FedoraZram
# Included as part of antix-goodies package by anticapitalista <antiX@operamail.com>
# This script was written by tradetaxfree and is found at http://crunchbanglinux.org/forums/topic/15344/zram-a-good-idea/
# Extraneous commented (disabled) commands removed by djohnston at http://linuxvillage.net/
# Copy this script (as root) from /usr/local/bin to /etc/init.d and then #update-rc.d zram defaults
# After booting verify the module is loaded with: lsmod | grep zram
### END INIT INFO
start() {
# get the number of CPUs
num_cpus=$(grep -c processor /proc/cpuinfo)
# if something goes wrong, assume we have 1
[ "$num_cpus" != 0 ] || num_cpus=1
# set decremented number of CPUs
last_cpu=$((num_cpus - 1))
#default Factor % = 90 change this value here or create /etc/default/zram[/b][/color]
FACTOR=90
#& put the above single line in /etc/default/zram with the value you want
[ -f /etc/default/zram ] && source /etc/default/zram || true
factor=$FACTOR # percentage
# get the amount of memory in the machine
memtotal=$(grep MemTotal /proc/meminfo | sed 's/[^0-9]\+//g')
mem_by_cpu=$(($memtotal/$num_cpus*$factor/100*1024))
# load dependency modules
modprobe zram num_devices=$num_cpus
if [ $? -gt 0 ]; then
echo -e "Your Kernel needs to be compiled with ZRAM support:" \
"\n\nDevice Drivers --> Staging Drivers --> Compressed RAM block device support (M)" \
"\nDevice Drivers --> Staging Drivers --> Dynamic compression of swap pages and clean pagecache pages (*)" \
"\n\nThe Liquorix Kernel (http://liquorix.net) has ZRAM support built in."
exit 1
fi
echo "zram devices probed successfully"
# initialize the devices
for i in $(seq 0 $last_cpu); do
echo $mem_by_cpu > /sys/block/zram$i/disksize
# Creating swap filesystems
mkswap /dev/zram$i
# Switch the swaps on
swapon -p 100 /dev/zram$i
done
}
stop() {
# get the number of CPUs
num_cpus=$(grep -c processor /proc/cpuinfo)
# set decremented number of CPUs
last_cpu=$((num_cpus - 1))
# Switching off swap
for i in $(seq 0 $last_cpu); do
if [ "$(grep /dev/zram$i /proc/swaps)" != "" ]; then
swapoff /dev/zram$i
sleep 1
fi
done
sleep 1
rmmod zram
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep 3
start
;;
*)
echo "Usage: $0 {start|stop|restart}"
RETVAL=1
esac
exit $RETVAL