#!/bin/sh

# Disable THP
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

# load dependency modules
NRDEVICES=$(grep -c ^processor /proc/cpuinfo | sed 's/^0$/1/')
if modinfo zram | grep -q ' zram_num_devices:' 2>/dev/null; then
  MODPROBE_ARGS="zram_num_devices=${NRDEVICES}"
elif modinfo zram | grep -q ' num_devices:' 2>/dev/null; then
  MODPROBE_ARGS="num_devices=${NRDEVICES}"
else
  exit 1
fi
modprobe zram $MODPROBE_ARGS
memtotal="$[$(grep MemTotal /proc/meminfo | awk '{ print $2 }') / 10 * 3]"
mem=$((($memtotal / ${NRDEVICES}) * 1024))

# initialize the devices
for i in $(seq ${NRDEVICES}); do
  DEVNUMBER=$((i - 1))
#  echo zstd > /sys/block/zram${DEVNUMBER}/comp_algorithm
   echo $mem > /sys/block/zram${DEVNUMBER}/disksize
#  echo 0 >/sys/block/zram${DEVNUMBER}/queue/read_ahead_kb
#  echo 2 >/sys/block/zram${DEVNUMBER}/queue/nomerges
#  echo 2 >/sys/block/zram${DEVNUMBER}/queue/rq_affinity
  mkswap /dev/zram${DEVNUMBER}
  swapon -p 100 /dev/zram${DEVNUMBER}
done


# Start swap in disk

for i in $(blkid | grep 'TYPE="swap"' | grep -v zram | cut -f1 -d:); do
  swapon $i 2> /dev/null
done
