zram-swap: Add "max compression streams" configuration option
authorEmil Muratov <gpm@hotplug.ru>
Wed, 1 Aug 2018 22:05:14 +0000 (01:05 +0300)
committerJo-Philipp Wich <jo@mein.io>
Tue, 18 Dec 2018 16:22:05 +0000 (17:22 +0100)
Config option to limit maximum compression streams per zram dev for
multicore CPU's. This could be defined via 'zram_comp_streams' option in
the 'system' section of '/etc/config/system' file or via cli (for e.x.
with 'uci set system.@System[0].zram_comp_streams=2 && uci commit
system'). Default is number of logical CPU cores.

Signed-off-by: Emil Muratov <gpm@hotplug.ru>
(backported from 70d3ffb47fcef901e4d86da4c9077ba8b8e2ba10)

package/system/zram-swap/files/zram.init

index 2db986f9a8b8cf4ebd7cea2c5c8a569fd0d7697c..9fd4089c6bc000aff3919a332f00868ae6dc5196 100755 (executable)
@@ -93,6 +93,19 @@ zram_comp_algo()
        fi
 }
 
+zram_comp_streams()
+{
+       local dev="$1"
+       local logical_cpus=$( grep -ci "^processor" /proc/cpuinfo )
+       [ $logical_cpus -gt 1 ] || return 1
+       local zram_comp_streams="$( uci -q get system.@system[0].zram_comp_streams )"
+       [ -n "$zram_comp_streams" ] && [ "$zram_comp_streams" -le "$logical_cpus" ] || zram_comp_streams=$logical_cpus
+       if [ -e /sys/block/$( basename $dev )/max_comp_streams ]; then
+               logger -s -t zram_comp_streams -p daemon.debug "Set max compression streams to '$zram_comp_streams' for zram '$dev'"
+               echo $zram_comp_streams > /sys/block/$( basename $dev )/max_comp_streams
+       fi
+}
+
 start()
 {
        local zram_size="$( zram_size )"
@@ -110,6 +123,7 @@ start()
 
        zram_reset "$zram_dev" "enforcing defaults"
        zram_comp_algo "$zram_dev"
+       zram_comp_streams "$zram_dev"
        echo $(( $zram_size * 1024 * 1024 )) >"/sys/block/$( basename "$zram_dev" )/disksize"
        mkswap "$zram_dev"
        swapon "$zram_dev"