MagicMirror² v2.7.0 is available! For more information about this release, check out this topic.

zram-conf



  • Don’t know if you know how generally stinky the ubuntu zram-conf-05.deb is but take it from me it contains high notes of cheese.

    I think I have completed at least a zram-conf that in name allows you to configure zram which might be useful for the magicmirror folder as mounting a zram drive at /magicmirror will cut sd blockwear to somewhere to nothing to extremely minimal whilst running at near ram speed.

    All the info is at https://github.com/StuartIanNaylor/zram-config

    sudo apt-get install git
    git clone https://github.com/StuartIanNaylor/zram-config
    cd zram-config
    sudo sh install.sh
    

    Will get you up and running but it all fairly easy runs from a ztab file in /etc where you can set as many drives or swaps as you wish even logs.

    If anyone fancies giving it a try please do as needing some testers but seem to be working fine.





  • Same in as they both use the same terrible outmoded methods that is essentially a copy of zram-conf-05.deb.

    Since kernel 3.15 zram has been multi-stream and partitioning by core just makes smaller swaps with smaller single page write ability for absolutely no reason.
    Also makes no check that any previous zram utils maybe in operation and overwrites.
    Ignores the important mem_limit property for sys_admins and completely ignores the hot_plug and remove methods.

    I have no idea why that bad script has been copied and emulated so much, but yeah the above are very much the same as zram-conf-05.deb.

    I suggest you have a look at https://github.com/StuartIanNaylor/zram-config as it combines many functions that are beneficial for MagicMirror and has a better implementation of zram for quite a few reasons.
    Uses /etc/ztab so if you wish you can set up as many zswaps, zdir and a zlog if you wish.
    Zlog creates a zram directory which is the upper in a OverlayFS file systems so only on write is a file copied up. It also uses the olddir directive of logrotate so oldlogs are shipped to persistent.
    Provides negligible flash wear and an extremely small Zram memory footprint.
    Zdir is the same as zlog without the logrotate directives where the MagicMirror directory is loaded via a OverlayFS mount with the upper mounted on zram.
    Due to the copyup of COW only files that are write accessed use upper so again the whole MagicMirror dir can be provided with zero SD writes in an extremely small memory footprint.
    You can make as many Zdir as you need.
    Zswap does actually use the kernel doc methods of hot_plug and hot_remove for zram devices and will work with other zram services.
    Also includes the important mem-Limit for sysadmin and Zswap is multi-stream and there is little point making swaps per core but you can make as many as you like.
    Linux swapiness and page-cache settings are also based the assumption of HDD like swap and zram is mem not disk so swapiness needs to be increased to 80-100 and page-cache set to 0 for single pages to help cut latency as the default of 3 = caches of 8 pages for disk based caching.
    None of the scripts ever seem to provide the tuneables to actually utilise zram performance and again you can set both in the ztab as you set up your swap.

    Hopefully the likes of the above will actually read the kernel docs for zram https://www.kernel.org/doc/Documentation/blockdev/zram.txt before they just copy and paste a bad Ubuntu script again.

    Not really sure how zram will in anyway give you smooth youtube/video playback though… ? But if its caching locally then yes.
    But yeah you can get near memcpy speed with compression rations of up 3:1 or even use deflate or ztstd which are slower and prob not for swap but for text such as logs or much of the data format that nodejs uses the compression can be much higher than the performance base of LZO/4.

    https://github.com/StuartIanNaylor/zram-config

    pi@raspberrypi:~ $ zramctl
    NAME       ALGORITHM DISKSIZE  DATA COMPR TOTAL STREAMS MOUNTPOINT
    /dev/zram0 lz4           1.2G    4K   76B    4K       4 [SWAP]
    /dev/zram1 lz4           150M 16.3M 25.1K  208K       4 /opt/zram/zram1
    /dev/zram2 lz4            60M  7.5M  1.2M  1.7M       4 /opt/zram/zram2
    
    pi@raspberrypi:~ $ df
    Filesystem     1K-blocks    Used Available Use% Mounted on
    /dev/root       14803620 2558152  11611220  19% /
    devtmpfs          470116       0    470116   0% /dev
    tmpfs             474724  223868    250856  48% /dev/shm
    tmpfs             474724   12284    462440   3% /run
    tmpfs               5120       4      5116   1% /run/lock
    tmpfs             474724       0    474724   0% /sys/fs/cgroup
    /dev/mmcblk0p1     44220   22390     21831  51% /boot
    /dev/zram1        132384     280    121352   1% /opt/zram/zram1
    overlay1          132384     280    121352   1% /home/pi/MagicMirror
    /dev/zram2         55408    3460     47648   7% /opt/zram/zram2
    overlay2           55408    3460     47648   7% /var/log
    tmpfs              94944       0     94944   0% /run/user/1000
    
    cat /etc/ztab
    # swap  alg     mem_limit       disk_size       swap_priority   page-cluster    swappiness
    swap    lz4     400M            1200M           75              0               90
    
    # dir   alg     mem_limit       disk_size       target_dir              bind_dir
    dir     lz4     50M             150M            /home/pi/MagicMirror    /magicmirror.bind
    
    # log   alg     mem_limit       disk_size       target_dir              bind_dir                oldlog_dir
    log     lz4     20M             60M             /var/log                /log.bind               /oldlog
    
    pi@raspberrypi:~ $ free -h
                  total        used        free      shared  buff/cache   available
    Mem:           927M        206M        184M        233M        535M        434M
    Swap:          1.3G          0B        1.3G
    
    pi@raspberrypi:~ $ swapon
    NAME       TYPE      SIZE USED PRIO
    /dev/zram0 partition 1.2G   0B   75
    /var/swap  file      100M   0B   -2
    
    pi@raspberrypi:/opt/zram $ ls
    log.bind  magicmirror.bind  oldlog  zram1  zram2
    
    pi@raspberrypi:/opt/zram $ top
    top - 23:18:21 up  1:28,  2 users,  load average: 0.31, 0.29, 0.29
    Tasks: 114 total,   1 running,  68 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  1.9 us,  0.1 sy,  0.0 ni, 98.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    KiB Mem :   949448 total,   153464 free,   223452 used,   572532 buff/cache
    KiB Swap:  1331192 total,  1331192 free,        0 used.   412052 avail Mem
    
      PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
     1215 pi        20   0  600844 325968 287276 S   5.3 34.3   8:09.51 chromium-browse
     2536 pi        20   0    8104   3204   2728 R   1.6  0.3   0:00.11 top
      970 pi        20   0  775108 156128 112876 S   1.0 16.4  11:17.06 chromium-browse
     1611 pi        20   0   11656   3772   3056 S   0.3  0.4   0:00.30 sshd
        1 root      20   0   27072   5964   4824 S   0.0  0.6   0:02.51 systemd
        2 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kthreadd
        4 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 kworker/0:0H
        6 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 mm_percpu_wq
        7 root      20   0       0      0      0 S   0.0  0.0   0:00.24 ksoftirqd/0
        8 root      20   0       0      0      0 I   0.0  0.0   0:00.87 rcu_sched
        9 root      20   0       0      0      0 I   0.0  0.0   0:00.00 rcu_bh