| #!/bin/sh |
| set -e |
| |
| device=$1 |
| if [ "$device" = "" ]; then |
| echo "Usage: zram-swap-init <device>" |
| exit 1 |
| fi |
| |
| # Allocate zram to be size of actual system memory |
| # Note: zram is only allocated when used. When swapped pages compress with a |
| # a 2:1 ratio zram will require 50% of system memory (while allowing to use |
| # 150% memory). |
| ZRAM_SIZE_PERCENT=100 |
| ZRAM_ALGORITHM=lz4 |
| |
| [ -f /etc/default/zram ] && . /etc/default/zram || true |
| |
| memtotal=$(grep MemTotal /proc/meminfo | awk ' { print $2 } ') |
| memzram=$(($memtotal*${ZRAM_SIZE_PERCENT}/100)) |
| |
| # Try loading zram module |
| modprobe -q zram || true |
| |
| zramctl -a ${ZRAM_ALGORITHM} -s ${memzram}KB $device |
| mkswap -L "zram-swap" $device |
| |
| devname="${device##*/}" |
| if [ ! -z ${ZRAM_SIZE_LIMIT+x} ]; then |
| echo ${ZRAM_SIZE_LIMIT} > /sys/block/$devname/mem_limit |
| fi |