diff options
author | takeshi_hoshina <takeshi_hoshina@mail.toyota.co.jp> | 2020-11-02 11:07:33 +0900 |
---|---|---|
committer | takeshi_hoshina <takeshi_hoshina@mail.toyota.co.jp> | 2020-11-02 11:07:33 +0900 |
commit | 1c7d6584a7811b7785ae5c1e378f14b5ba0971cf (patch) | |
tree | cd70a267a5ef105ba32f200aa088e281fbd85747 /external/meta-openembedded/meta-oe/recipes-extended/zram/zram | |
parent | 4204309872da5cb401cbb2729d9e2d4869a87f42 (diff) |
basesystem-jjsandbox/ToshikazuOhiwa/master-jj
recipes
Diffstat (limited to 'external/meta-openembedded/meta-oe/recipes-extended/zram/zram')
6 files changed, 70 insertions, 12 deletions
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/zram/zram/dev-zram0.swap b/external/meta-openembedded/meta-oe/recipes-extended/zram/zram/dev-zram0.swap new file mode 100644 index 00000000..05eae7ee --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-extended/zram/zram/dev-zram0.swap @@ -0,0 +1,10 @@ +[Unit] +Description=Enable compressed swap in memory using zram +Requires=zram-swap.service +After=zram-swap.service + +[Swap] +What=/dev/zram0 + +[Install] +WantedBy=swap.target diff --git a/external/meta-openembedded/meta-oe/recipes-extended/zram/zram/zram-swap-deinit b/external/meta-openembedded/meta-oe/recipes-extended/zram/zram/zram-swap-deinit new file mode 100755 index 00000000..46248c40 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-extended/zram/zram/zram-swap-deinit @@ -0,0 +1,19 @@ +#!/bin/sh +set -e + +device=$1 +if [ "$device" = "" ]; then + echo "Usage: zram-swap-deinit <device>" + exit 1 +fi + +sysblockdev=/sys/block/$(basename $device) +if [ ! -d $sysblockdev ]; then + echo "Block device not found in sysfs" + exit 1 +fi + +# zramctl -r is not suitable as it also removes the actual device. Recreating +# it is non-trivial, especially if not /dev/zram0 is used... +echo 1 > ${sysblockdev}/reset + diff --git a/external/meta-openembedded/meta-oe/recipes-extended/zram/zram/zram-swap-init b/external/meta-openembedded/meta-oe/recipes-extended/zram/zram/zram-swap-init new file mode 100755 index 00000000..0643dbca --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-extended/zram/zram/zram-swap-init @@ -0,0 +1,26 @@ +#!/bin/sh +set -e + +device=$1 +if [ "$device" = "" ]; then + echo "Usage: zram-swap-init <device>" + exit 1 +fi + +# Allocate zram to be size of actual system memory +# Note: zram is only allocated when used. When swapped pages compress with a +# a 2:1 ratio zram will require 50% of system memory (while allowing to use +# 150% memory). +ZRAM_SIZE_PERCENT=100 +ZRAM_ALGORITHM=lz4 + +[ -f /etc/default/zram ] && ./etc/default/zram || true + +memtotal=$(grep MemTotal /proc/meminfo | awk ' { print $2 } ') +memzram=$(($memtotal*${ZRAM_SIZE_PERCENT}/100)) + +# Try loading zram module +modprobe -q zram || true + +zramctl -a ${ZRAM_ALGORITHM} -s ${memzram}KB $device +mkswap -L "zram-swap" $device diff --git a/external/meta-openembedded/meta-oe/recipes-extended/zram/zram/zram-swap.service b/external/meta-openembedded/meta-oe/recipes-extended/zram/zram/zram-swap.service new file mode 100644 index 00000000..a4dc9514 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-extended/zram/zram/zram-swap.service @@ -0,0 +1,10 @@ +[Unit] +Description=Create compressed swap in memory using zram +DefaultDependencies=no + +[Service] +Type=oneshot +RemainAfterExit=yes +TimeoutStartSec=30sec +ExecStart=@LIBEXECDIR@/zram-swap-init /dev/zram0 +ExecStop=@LIBEXECDIR@/zram-swap-deinit /dev/zram0 diff --git a/external/meta-openembedded/meta-oe/recipes-extended/zram/zram/zram.service b/external/meta-openembedded/meta-oe/recipes-extended/zram/zram/zram.service deleted file mode 100644 index 4a19367d..00000000 --- a/external/meta-openembedded/meta-oe/recipes-extended/zram/zram/zram.service +++ /dev/null @@ -1,12 +0,0 @@ -[Unit] -Description=Enable zram compressed in-memory swap. -After=multi-user.target - -[Service] -RemainAfterExit=yes -ExecStart=/usr/bin/zram-load.sh --load -ExecStop=/usr/bin/zram-load.sh --unload -Type=oneshot - -[Install] -WantedBy=multi-user.target diff --git a/external/meta-openembedded/meta-oe/recipes-extended/zram/zram/zramstop b/external/meta-openembedded/meta-oe/recipes-extended/zram/zram/zramstop new file mode 100644 index 00000000..07777978 --- /dev/null +++ b/external/meta-openembedded/meta-oe/recipes-extended/zram/zram/zramstop @@ -0,0 +1,5 @@ +#!/bin/sh + +for i in $(grep '^/dev/zram' /proc/swaps | awk '{ print $1 }'); do + swapoff "$i" && zramctl --reset "$i" +done |