zram-swap: support custom compression algorithm via deviceinfo
Some devices would benefit from using compression algorithms besides zstd. Allow device maintainers to specify a more suitable algorithm using `zram_swap_algo` deviceinfo variable. Signed-off-By: Sicelo A. Mhlongo <absicsz@gmail.com> Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/7239>
This commit is contained in:
parent
9ed8dd6bda
commit
d60f557c4a
6 changed files with 59 additions and 43 deletions
|
|
@ -7,7 +7,7 @@
|
|||
# How to add a new service file (5 steps):
|
||||
pkgname=systemd-services
|
||||
# 1. bump pkgver
|
||||
pkgver=98
|
||||
pkgver=99
|
||||
pkgrel=0
|
||||
pkgdesc="Systemd service files"
|
||||
url="https://postmarketos.org"
|
||||
|
|
@ -537,7 +537,7 @@ e09a3c76f3be961dce9f564bb654ea84d1d7fb59907a2168c0569bf6c17a5ebe9fbe4d1f94f1d014
|
|||
744c60fdc6e53ba2c9f370ce8462e1a420cfea973edff49d0caf7a3e65f0f35257d61b5ae3ace3e9d9d48e382cb54d9f2ff96ad02d5e16758a49ba2e07963e5a user-xdg-desktop-portal-wlr.service
|
||||
760a0002f08df28c1584dea41c06df4a6cfb016e201e909dcfba639e5e794cdf3ae9e790a9c9e50261b88968d8129bfee35ec1be8e9f99ad1c7e1359872b5643 user-xfce4-notifyd.service
|
||||
2dbebee6e970bb5b534872b9fe1816cf1cdc738f48c7375717661f39869dfea4974b189eb7d01f3ade9dced33efebaf1034976d344dbd16483408d2c4958148f user-xfconfd.service
|
||||
e0014662e4ec2c52d3beabe3247ede7c6b12c1d22b7c62d6b04ff82a668f492c09060243acf92090e6a7ec75a44b41760b3bbd144da4f36c14364cfa28a8dac3 system-zram_swap.service
|
||||
1072886ed07e3e3545e41c542d001f313185497fbaaa8b2071b30f296c04f925b4a5a50bc2b08fa91ca5e83033564a0eae7d017ec1afb01defad42fb6d65e6ed system-zram_swap.service
|
||||
4d201f29ad98abf38a15e877bb1b4f46fb08ab0cd5cb83f29aaa104eaa0a51fd14784110ee844ccb89914aa73b985fc9c61e216f8d2ac230adfa1d1660ebd573 system-sing-box.service
|
||||
f4042114ed0f36e51bc32f6df184843d6d7e58b7cece8a845796910d80e1f26c9d0be9415ed90f7a91211bd669d8bb002b24a5a79657f8b699f952299ddfb5d2 system-sing-box@.service
|
||||
e67997cfad302af405e1bee78f79ea9caaa8fec0b765003ff08901f43a2ea07209726d0a20f2640b796bc6775606e34143da362d1e0471ce32b919747004d53c tmpfiles.d-sing-box.conf
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ ExecCondition=sh -c '. /usr/share/misc/source_deviceinfo'
|
|||
# zram_tmp.service and zram_var_tmp.service and that
|
||||
# num_devices in modprobe.d/zram.conf contains the maximal used number + 1
|
||||
|
||||
ExecStart=/bin/sh -c "exec zram-init -azstd -Lzram_swap $(zram-size-calc)"
|
||||
ExecStart=/bin/sh -c "exec zram-init -a$(zram-configurator algo) -Lzram_swap $(zram-configurator size)"
|
||||
ExecStop=/usr/sbin/zram-init 0
|
||||
|
||||
[Install]
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
pkgname=postmarketos-base
|
||||
pkgver=49
|
||||
pkgrel=1
|
||||
pkgver=50
|
||||
pkgrel=0
|
||||
pkgdesc="Meta package for minimal postmarketOS base"
|
||||
url="https://postmarketos.org"
|
||||
arch="noarch"
|
||||
|
|
@ -88,7 +88,7 @@ _source755="
|
|||
etc/init.d/swapfile
|
||||
etc/init.d/tmpfs
|
||||
usr/bin/swapfile
|
||||
usr/bin/zram-size-calc
|
||||
usr/bin/zram-configurator
|
||||
"
|
||||
|
||||
# Avoid filename based checksum conflicts by including the whole path:
|
||||
|
|
@ -249,7 +249,7 @@ e529f5cef1f31481b577f99b8917704f2cfefb963d98bf40a14b017938e55a00134d2033f81d2cb0
|
|||
49cff0dbf37fc3c3ca30709be3bc4bbac9b2c05d1f88356922c6ab849e1fe893da7eca92b42a4095cfa00fe475470a711a93bfa60f1cedfde9c890a6dcc61de9 rootfs-etc-doas.d-10-postmarketos.conf
|
||||
1d2975e7e2745020f88fac639021cc9a47b477fb0390c3e146a070d98faab32c3f1c7bd1121f45a26be97301ab65c736ae0a4905d28a7251919a1994895f9c8d rootfs-etc-ssh-sshd_config.d-50-postmarketos-ui-policy.conf
|
||||
e0d2d48b82a03239a4c0a00acaf83e00d397c23a8d7c71053d4e2a383357c22dcedef9e81b0e12a1d7514e1fdbe0bb3eb82613d18b29034a7ce5447f13c84a53 rootfs-etc-conf.d-swapfile
|
||||
a286c261dbab800b4bd2891c679cae1fbbf3e3169014bf7e89451961bbd3cbe0f6e34465cd1409aa4373f32ed74f38eb042b166767512be9ee7104e26cd712fa rootfs-etc-conf.d-zram-init
|
||||
9e3648adf9ddc17bb7bb07be88a635191d4c7923f0ba807eb010d67ee6b95d01f8f57181a99d25bb27ccaec6a07c0d679c0bc6580cc2a8e3f0851589522b3ac8 rootfs-etc-conf.d-zram-init
|
||||
e4576c58c35f80bedddb1e89e186f37d31a186d3e9eb046581b8c5d7b7d435e18924539e851d3e67dc0ede80f9d44d16bd9ef52e73350d3f13224edc31d73a34 rootfs-etc-conf.d-syslog
|
||||
9b8d0493bb64457fe176fea801e0771d3c5279302c61559824bf81b3d2b66d2c1e076f4aaac65f55389005acb18c27e44bed858c2bdbad37d74199f07c86c354 rootfs-etc-fstab
|
||||
45bd0742a64a9d3c4a88e152b97edcf3fa1edca28884f9ea69e7c4c365f1e41ef9056dbe204545de7d4b2ba92e1e5872b2a929c2dcc1dd468e627cc3f090b8e6 rootfs-etc-issue
|
||||
|
|
@ -269,5 +269,5 @@ d89a7e4b9d601431c62c11f83c9c72fdb90384d9100ee5fc4aff25dda0836fd3bf9e48c0536615be
|
|||
42d6bce78b6e3c118dcbd9228b138661a05f8f321f17457e8df8f2398c0b780399d8d056f0a7c50d91557ac8698ab37dde61ec1a13fd69a7b3faad092f126580 rootfs-etc-init.d-swapfile
|
||||
0cd9a0b8490028d854b65d0648aaf84e4703921b8b7797517dd65ffaa1ec9e225487007dcccd42c249a9f2470e5adacf95760536c9508138b14de7252de38473 rootfs-etc-init.d-tmpfs
|
||||
23df2632e8ef372dccd6b9abac61441dd0ee447ccc7428fba495e28f1b697ebc415f7580dbb9a39d22d162a175d7264b47bdf9f66552347e35d9d0bb7828647d rootfs-usr-bin-swapfile
|
||||
0d128f044e60a882c189e3286dd1609f0d4c18682c501f6a40f18ee99e9ba5a4185cb57504074bc6c213b4b71f3186b120fdd29992ed256016631977ff831f7d rootfs-usr-bin-zram-size-calc
|
||||
73eb8784087a6847143d78bcf089f671ec81a2c52628a27a93896364bf15cdf9de37b05b4b2e60a070c5795c7b03756b13b04ac30a43d1dc745cb4878004ab86 rootfs-usr-bin-zram-configurator
|
||||
"
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
. /usr/share/misc/source_deviceinfo
|
||||
|
||||
size0="$(zram-size-calc)"
|
||||
size0="$(zram-configurator size)"
|
||||
|
||||
echo "zram swap: activating with size: $size0 MB"
|
||||
# zstd (since linux-4.18), lz4 (since linux-3.15), or lzo.
|
||||
# Size: zstd (best) > lzo > lz4. Speed: lz4 (best) > zstd > lzo
|
||||
algo0=zstd
|
||||
algo0="$(zram-configurator algo)"
|
||||
|
||||
# The following are defaults from the zram-init package:
|
||||
load_on_start=yes
|
||||
|
|
|
|||
49
main/postmarketos-base/rootfs-usr-bin-zram-configurator
Normal file
49
main/postmarketos-base/rootfs-usr-bin-zram-configurator
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
. /usr/share/misc/source_deviceinfo
|
||||
|
||||
[ $# -ne 1 ] && exit 1
|
||||
|
||||
case "$1" in
|
||||
"size")
|
||||
# Size defaults to:
|
||||
# - 75% of RAM for devices with 2GB of RAM or less
|
||||
# - 50% of RAM for devices with between 2GB and 6GB of RAM
|
||||
# - 25% of RAM for devices with greater 6GB of RAM
|
||||
# This is loosely based on some data here:
|
||||
# https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/3752#note_1229631449
|
||||
|
||||
_mem_size_mb="$(LC_ALL=C free -m | awk '/^Mem:/{print $2}')"
|
||||
|
||||
if [ $_mem_size_mb -le 2048 ]; then
|
||||
_size_pct=75
|
||||
elif [ $_mem_size_mb -gt 6144 ]; then
|
||||
_size_pct=25
|
||||
else
|
||||
_size_pct=50
|
||||
fi
|
||||
|
||||
# Allow overriding the size as a percentage of RAM using a deviceinfo var, or
|
||||
# disabling it completely
|
||||
if [ -n "$deviceinfo_zram_swap_pct" ]; then
|
||||
|
||||
# 0% --> disable zram swap
|
||||
if [ "$deviceinfo_zram_swap_pct" == "0" ]; then
|
||||
echo 0
|
||||
exit 0
|
||||
fi
|
||||
|
||||
_size_pct="$deviceinfo_zram_swap_pct"
|
||||
fi
|
||||
|
||||
echo $(($_mem_size_mb * $_size_pct / 100))
|
||||
exit 0
|
||||
;;
|
||||
"algo")
|
||||
# Default to zstd compression, and allow overriding via deviceinfo
|
||||
# TODO: Ensure deviceinfo uses valid and usable algorithm
|
||||
echo "${deviceinfo_zram_swap_algo:-zstd}"
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
. /usr/share/misc/source_deviceinfo
|
||||
|
||||
# Size defaults to:
|
||||
# - 75% of RAM for devices with 2GB of RAM or less
|
||||
# - 50% of RAM for devices with between 2GB and 6GB of RAM
|
||||
# - 25% of RAM for devices with greater 6GB of RAM
|
||||
# This is loosely based on some data here:
|
||||
# https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/3752#note_1229631449
|
||||
|
||||
_mem_size_mb="$(LC_ALL=C free -m | awk '/^Mem:/{print $2}')"
|
||||
|
||||
if [ $_mem_size_mb -le 2048 ]; then
|
||||
_size_pct=75
|
||||
elif [ $_mem_size_mb -gt 6144 ]; then
|
||||
_size_pct=25
|
||||
else
|
||||
_size_pct=50
|
||||
fi
|
||||
|
||||
# Allow overriding the size as a percentage of RAM using a deviceinfo var, or
|
||||
# disabling it completely
|
||||
if [ -n "$deviceinfo_zram_swap_pct" ]; then
|
||||
|
||||
# 0% --> disable zram swap
|
||||
if [ "$deviceinfo_zram_swap_pct" == "0" ]; then
|
||||
echo 0
|
||||
exit 0
|
||||
fi
|
||||
|
||||
_size_pct="$deviceinfo_zram_swap_pct"
|
||||
fi
|
||||
|
||||
echo $(($_mem_size_mb * $_size_pct / 100))
|
||||
Loading…
Add table
Add a link
Reference in a new issue