#!/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 # This script was written by tradetaxfree from http://crunchbanglinux.org/forums modified with the # contributions from mimas in 2012 and captnfab in 2012 and 2013 (debian-facile.org community). # 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 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 # kernels 3.4 onwards # The following command line allows the system to detect and use the appropriate # parameter supported by a kernel: # See https://aur.archlinux.org/packages/zramswap/?comments=all # Comment by dront78 (2012-08-31 09:59) modprobe zram $(modinfo zram | grep -E -o '(num_devices|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