PINE64
zram swap support for the PBP; aka: "how to download more RAM" - Printable Version

+- PINE64 (https://forum.pine64.org)
+-- Forum: Pinebook Pro (https://forum.pine64.org/forumdisplay.php?fid=111)
+--- Forum: Linux on Pinebook Pro (https://forum.pine64.org/forumdisplay.php?fid=114)
+--- Thread: zram swap support for the PBP; aka: "how to download more RAM" (/showthread.php?tid=8812)

Pages: 1 2


zram swap support for the PBP; aka: "how to download more RAM" - Arglebargle - 01-16-2020

Hey all,

Last month I posted a simple zram-swap script that I wrote for my PBP on IRC for people to use. I took some time to package it and make it "release worthy" and pushed it to github with updates today: https://github.com/foundObjects/zram-swap

This makes a huge difference if you're memory constrained on your PBP, and even if you aren't I encourage you to check it out simply to avoid the NAND wear of swapping to your eMMC when you eventually do need to swap.

I also added a fixed-size swap feature for people who know ahead of time exactly how much swap they want, so if you're doing something like building GCC with -lto on the PBP and need 10+G swap I've got you covered: just set "_zram_fixed_size=10G" in the /etc/default/zram-swap config file along with your prefered swap algorithm and you're good to go. Yes, you can use lzo-rle.

README.md:
Code:
# zram-swap
Simple zram swap setup + teardown script for modern systemd Linux systems

https://github.com/foundObjects/zram-swap

### Why?

There are dozens of zram swap scripts out there, but most of them are overly
complicated and do things that haven't been neccessary since linux 3.X or have
massive logic errors in their swap size calculations. This script is simple and
reliable, modern and easy to configure.

### Installation

```
git clone https://github.com/foundObjects/zram-swap.git
cd zram-swap && sudo ./install.sh
```

### Usage

zram-swap.service will be started automatically after installation and during
each subsequent boot. The default allocation creates a zram device that should
use around half of physical memory when completely full.

The default configuration using lz4 should work well for most people. lzo may
provide slightly better RAM utilization at a cost of slightly more expensive
decompression. zstd should provide better compression than lz* and still be
moderately fast on most machines. On very modern kernels the best overall
choice is probably lzo-rle.

Edit `/etc/default/zram-swap` if you'd like to change compression algorithms or
swap allocation and then restart zram-swap with `systemctl restart
zram-swap.service`.

Run `zramctl` during use to monitor swap compression and real memory usage.

### Debugging

Start zram-swap.sh with `zram-swap.sh -x (start|stop)` to view the debug trace
and determine what's going wrong.

To dump the full execution trace during service start/stop edit
`/etc/systemd/systemd/zram-swap.service` and add -x to the following two lines:

```
ExecStart=/usr/local/sbin/zram-swap.sh -x init
ExecStop=/usr/local/sbin/zram-swap.sh -x  end
```

### Compatibility

This should run on pretty much any recent (4.0+? kernel) Linux system using
systemd. If anyone wants to try it on something really old and let me know how
far back compatibility goes I'm interested, but I don't have any legacy systems
to test on at the moment.

The script will also work on non-systemd Linux without issue and I welcome PRs
supporting SysVinit.



RE: zram swap support for the PBP; aka: "how to download more RAM" - Tazdevl - 01-17-2020

Nice!!!


RE: zram swap support for the PBP; aka: "how to download more RAM" - IoSer - 01-17-2020

Thank you. I find it very useful for Gnome. I thought I'd use it too.


RE: zram swap support for the PBP; aka: "how to download more RAM" - as400 - 01-17-2020

@Arglebargle thanks. Just great.



RE: zram swap support for the PBP; aka: "how to download more RAM" - james64 - 01-21-2020

Thanks. I've applied this. I had a bad day yesterday after about 10 tabs in chrome and swapping while syncing about 1GB to my storage at the same time.

Looking forward to see how it works.


RE: zram swap support for the PBP; aka: "how to download more RAM" - Arglebargle - 01-21-2020

Copying your question from PM here so everyone can benefit from the answer-

james64 Wrote:I just installed zram yesterday. Thanks!

Question: Should the 500M default swap be removed?

Will swap happen to zram first? then zram?

That'll depend on the swap priority set on the default swapfile. Swaps with a higher priority are used first, when the high priority swap is full then lower priority swap will be used. Check your existing swaps by running `swapon` with no arguments or `cat /proc/swaps` to see the priorities:

Code:
root@pinebookpro:~/work/zram-swap# cat /proc/swaps
Filename                                Type            Size    Used    Priority
/dev/zram0                              partition       6291452 0       5

I'm pretty sure the default swapfile has a priority of 1, 0 or -1; I can't remember which. The zram-swap script sets priority 5 which should be higher.

You can safely disable the default swapfile and remove it.


RE: zram swap support for the PBP; aka: "how to download more RAM" - james64 - 01-24-2020

ah. i didn't see you post since my previous post here so pm'd. Cool. I confirmed it was working yesterday once I got back to the pinebook. thanks


RE: zram swap support for the PBP; aka: "how to download more RAM" - llsf - 01-24-2020

I've made a quick PKGBUILD for it, if anyone else has some use for it.


Code:
pkgname=zram-swap-git
_pkgname=zram-swap
pkgver=01a.r0.gd70751d
pkgrel=1
pkgdesc="A simple zram swap service for modern systemd Linux"
arch=('any')
url="https://github.com/foundObjects/zram-swap.git"
license=('MIT')
depends=('systemd' 'bash')
backup=('etc/default/zram-swap')
source=('git+https://github.com/foundObjects/zram-swap.git')
sha512sums=('SKIP')

pkgver() {
cd ${_pkgname}
git describe --long | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-/./g'
}

prepare() {
cd ${_pkgname}
sed -i 's/local\/sbin/bin/g' ./service/zram-swap.service
}

package() {
cd ${_pkgname}
install -Dm0644 "$srcdir/${_pkgname}"/service/zram-swap.service "$pkgdir"/usr/lib/systemd/system/zram-swap.service
install -Dm0644 "$srcdir/${_pkgname}"/service/zram-swap.config "$pkgdir"/etc/default/zram-swap
install -Dm0755 "$srcdir/${_pkgname}"/zram-swap.sh "$pkgdir"/usr/bin/zram-swap.sh
}



RE: zram swap support for the PBP; aka: "how to download more RAM" - icecream95 - 01-24-2020

I use zram with zstd, and it usually compresses RAM to better than half the size.

For kernel compiling, I resize /tmp to 8G (sudo mount -o remount,size=8G /tmp) then do an overlay mount over the kernel source, so that all the build files are in RAM.


RE: zram swap support for the PBP; aka: "how to download more RAM" - wasgurd - 02-01-2020

(01-21-2020, 11:39 PM)Arglebarg Wrote:
Code:
root@pinebookpro:~/work/zram-swap# cat /proc/swaps
Filename                                Type            Size    Used    Priority
/dev/zram0                              partition       6291452 0       5

I'm pretty sure the default swapfile has a priority of 1, 0 or -1; I can't remember which. The zram-swap script sets priority 5 which should be higher.

You can safely disable the default swapfile and remove it.

What size of zram do you recommend?