Initial commit.
This commit is contained in:
parent
5c2b827d0a
commit
a35fd28d4b
|
|
@ -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 <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
|
||||
;;
|
||||
"status")
|
||||
swapon -s
|
||||
;;
|
||||
*)
|
||||
echo "Usage: `basename $0` (start | stop)"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
EOF
|
||||
|
||||
chmod +x /etc/init.d/zram
|
||||
|
||||
insserv zram
|
||||
Loading…
Reference in New Issue