Forum

Full Version: RAM disk/drive on Xbian, how to use zramswap?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hello,

one Kodi plugin downloads repeatedly a file worth tens of MB data and to save SDHC card writing cycles, I have found using "df -Th", that only tmpfs (RAM based filesystem per my understanding) is /dev and /run
# df -Th|grep tmpfs
Code:
devtmpfs       devtmpfs  1.6G   71M  1.5G   5% /dev
none           tmpfs     360M  748K  359M   1% /run
none           tmpfs     4.0K     0  4.0K   0% /sys/fs/cgroup

I may utilize /dev/bigfile.name if i "chown xbian /dev", but since it may not be good practice, but /run seems to have already writing permissions for all users "Access: (1777/drwxrwxrwt)". Beside that I was able to do:

Code:
mkdir -p /mnt/tmpfs
echo "tmpfs /mnt/tmpfs tmpfs size=100M,mode=0755,uid=xbian 0 0" >> /etc/fstab
mount -a
(allowing me to utilize /mnt/tmpfs/ directory as a RAM disk storage)

Yet someone suggested me to use zram with lz4 compression (claiming to be better compression than Xbian default lzo-rle) to save the space. Though i have doubts about this approach since zram is slower than regular tmpfs and if tmps/memory pressure is high, it will then move to zram swap per my understanding). But anyway if i want to do it, i tried these steps (failed):

# zramctl --output-all
Code:
NAME       DISKSIZE DATA COMPR ALGORITHM STREAMS ZERO-PAGES TOTAL MEM-LIMIT MEM-USED MIGRATED MOUNTPOINT
/dev/zram0     128M   4K   73B lzo-rle         4          0    4K        0B       4K       0B [SWAP]

# mount -t ext4 /dev/zram0 /mnt/zram
Code:
mount: /mnt/zram: /dev/zram0 already mounted or mount point busy.

# mount -t tmpfs /dev/zram0 /mnt/zram
# df -h
Code:
/dev/zram0      1.8G     0  1.8G   0% /mnt/zram
tmpfs           100M   26M   75M  26% /mnt/tmpfs

I am able to mount it automatically using /etc/fstab line:
Code:
/dev/zram0 /mnt/zram tmpfs size=100M,mode=0755,uid=xbian 0 0

I could do:
# swapoff -a;zramctl --algorithm lz4 --streams 4 --size 128M /dev/zram0 && swapon
# zramctl --output-all
Code:
NAME       DISKSIZE DATA COMPR ALGORITHM STREAMS ZERO-PAGES TOTAL MEM-LIMIT MEM-USED MIGRATED MOUNTPOINT
/dev/zram0     128M   0B    0B lz4             4          0    0B        0B       0B       0B
# free -h
Code:
Swap:             0B          0B          0B

I could write file to /mnt/zram/ but i see no zram usage:

# df -h /mnt/zram /mnt/tmpfs
Code:
Filesystem      Size  Used Avail Use% Mounted on
/dev/zram0      100M   26M   75M  26% /mnt/zram
tmpfs           100M   26M   75M  26% /mnt/tmpfs

# zramctl
Code:
NAME       ALGORITHM DISKSIZE DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram0 lz4           128M   0B    0B    0B       4

# free -h
Code:
total        used        free      shared  buff/cache   available
Mem:           3.5Gi       330Mi       2.4Gi       160Mi       808Mi       2.8Gi
Swap:             0B          0B          0B

and test the speed:

ioping -R /mnt/zram
-R, -rapid test with rapid I/O during 3s (-q -i 0 -w 3)

Code:
--- /mnt/zram (tmpfs /dev/zram0 100 MiB) ioping statistics ---
311.8 k requests completed in 2.45 s, 1.19 GiB read, 127.1 k iops, 496.6 MiB/s
generated 311.8 k requests in 3.00 s, 1.19 GiB, 103.9 k iops, 405.9 MiB/s
min/avg/max/mdev = 6.41 us / 7.87 us / 1.78 ms / 6.88 us

vs regular tmpfs:

Code:
--- /mnt/tmpfs (tmpfs tmpfs 100 MiB) ioping statistics ---
314.2 k requests completed in 2.46 s, 1.20 GiB read, 127.9 k iops, 499.6 MiB/s
generated 314.2 k requests in 3.00 s, 1.20 GiB, 104.7 k iops, 409.2 MiB/s
min/avg/max/mdev = 6.39 us / 7.82 us / 1.36 ms / 4.46 us

# fdisk -x /dev/zram0
Code:
Disk /dev/zram0: 128 MiB, 134217728 bytes, 32768 sectors
Units: sectors of 1 * 4096 = 4096 bytes
Sector size (logical/physical): 4096 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

# lsblk -a
Code:
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
ram0          1:0    0    4M  0 disk
ram1          1:1    0    4M  0 disk
...
zram0       254:0    0  128M  0 disk /mnt/zram
zram1       254:1    0    0B  0 disk
zram2       254:2    0    0B  0 disk
zram3       254:3    0    0B  0 disk

Do you have idea on /etc/fstab line to mount zram based filesystem please?
Simple answer:

xbian-package-zram-swap

/etc/default/zram-swap
> xbian-package-zram-swap

did "apt install xbian-package-zram-swap" -> "xbian-package-zram-swap is already the newest version (1.0.8)."

> /etc/default/zram-swap

is a config. file apparently, thanks. Being unsure how to modify it, i assumed i need to somehow activate zram so i did:

Quote:ZRUNSHM=1

After reboot, it caused following in "zramctl --output-all" output:
Quote:/dev/zram2 1M 44K 743B lzo-rle 4 1 24K 0B 24K 0B /run/shm

(only 1MB? Copying file to it says: No space left on device)
Quote:# grep -v "#" /etc/default/zram-swap|grep .
SIZE=128
SWAPFILE=
ZRUNSHM=1
ZTEMPXBMC=0
SWAPNOUSE='/dev/sda21,/dev/mmcblk0p99'

and mount:
Quote:/dev/zram2 on /run/shm type ext2 (rw,nosuid,noatime)

Quote:# swapon
NAME TYPE SIZE USED PRIO
/dev/zram0 partition 128M 0B 20
/dev/mmcblk0p3 partition 245M 0B 0

Setting SWAPFILE=/mnt/zram
not apparently changed outputs of above commands (file existed before reboot, after reboot not exist)

I wanted to have proper zram 128M partition and proper grow-able zramswap... any idea what to try please?
Moving shm to zram is complete nonsense in my opinion

Ever googled for zswap?

Since you obviously want to do everything yourself I can't help you there. and - please don't be angry - I don't have much desire to do that anymore either
I learned about zswap on Google. I'm still having problems, but thanks for your feedback anyway.
(12th Jun, 2023 08:11 PM)Nachteule Wrote: [ -> ]Moving shm to zram is complete nonsense in my opinion

Ever googled for zswap?

Since you obviously want to do everything yourself I can't help you there. and - please don't be angry - I don't have much desire to do that anymore either

I find it necessary to search for the right keywords to extract data. I'm doing research based on your suggestion. Looking forward to finding a solution.
Reference URL's