-
-
Save sultanqasim/79799883c6b81c710e36a38008dfa374 to your computer and use it in GitHub Desktop.
#!/bin/bash | |
# Raspberry Pi ZRAM script | |
# Tuned for quad core, 1 GB RAM models | |
# put me in /etc/init.d/zram.sh and make me executable | |
# then run "sudo update-rc.d zram.sh defaults" | |
modprobe zram | |
echo 3 >/sys/devices/virtual/block/zram0/max_comp_streams | |
echo lz4 >/sys/devices/virtual/block/zram0/comp_algorithm | |
echo 268435456 >/sys/devices/virtual/block/zram0/mem_limit | |
echo 536870912 >/sys/devices/virtual/block/zram0/disksize | |
mkswap /dev/zram0 | |
swapon -p 0 /dev/zram0 | |
sysctl vm.swappiness=70 |
I second that, works great on mint I am now testing on osmc.
I secound that. Thanks for this little script.
This was useful - thanks! Is there a way to turn it off once I don't need it anymore? I don't really understand what it's doing.
it is increasing your swap.
@mfranzs You can disable it by
swapoff /dev/zram0
modprobe -r zram
For a more detailed reference: https://github.com/openSUSE/kernel/blob/master/Documentation/blockdev/zram.txt
You might want to update your script to benefit from the new zram backing device -- where uncompressible pages get stored without agressive flushing. I'm getting wonderful results -- better yet when combining parallel backing devices. Here is what I use on my setup of an sd card plus 4 cheap usb pendrives with a dedicated partition to serve as the backing device on each:
modprobe zram num_devices=5; ((z=0)); for d in /dev/mmcblk0pX /dev/sdaX /dev/sdbX /dev/sdcX /dev/sddX; do echo
Notes:
- If not set, max_comp_streams will default to the number of CPUs, which is the optimum setting
- Those particular numbers are good for a 512mb ram old raspberry Pi.
- Swapping in this way attended to the requisites for my server software -- and also for compiling and testing it. Didn't test on a desktop setup.
When "sudo update-rc.d zram.sh defaults" I get:
insserv: warning: script 'zram.sh' missing LSB tags and overrides
insserv: There is a loop between service watchdog and zram.sh if stopped
insserv: loop involving service zram.sh at depth 2
insserv: loop involving service watchdog at depth 1
insserv: Stopping zram.sh depends on watchdog and therefore on system facility `$all' which can not be true!
insserv: exiting now without changing boot order!
update-rc.d: error: insserv rejected the script header
So... what now?
Thank you so much for doing the work to figure this out and create the script. This has been a life saver for the project I'm working on.