Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/sh
- start() {
- cpus=$(ls -ld /sys/devices/system/cpu/cpu[0-9]* 2>/dev/null| grep -cEw 'cpu[0-9]+')
- exec awk -v cpus=$cpus '
- FILENAME == "/proc/cpuinfo" && $1 == "processor" {
- cpucount++
- next
- }
- FILENAME == "/proc/meminfo" && $1 == "MemTotal:" {
- mem_total = (0 + $2) * 1024
- next
- }
- END {
- if (cpucount == 0){
- if (cpus == 0) {
- cpus = 1;
- print "Warning no CPUs detected, defaulting to 1 CPU"
- }
- cpucount = cpus
- }
- mem_per_cpu = sprintf("%d", mem_total / cpucount)
- system("modprobe zram num_devices=" cpucount)
- for (i = 0; i < cpucount; i++) {
- print mem_per_cpu > "/sys/block/zram" i "/disksize"
- system("mkswap /dev/zram" i " -L zram" i)
- swapdevs = swapdevs " /dev/zram" i
- }
- system("swapon -p 100" swapdevs)
- }
- ' /proc/cpuinfo /proc/meminfo
- }
- stop() {
- exec awk '
- FNR > 1 && $1 ~ /^\/dev\/zram[0-9]+$/ {
- activeswaps = activeswaps " " $1
- }
- END {
- system("swapoff" activeswaps)
- system("rmmod zram")
- }
- ' /proc/swaps
- }
- case $1 in
- start|stop) "$1" ;;
- esac
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement