[LEDE-DEV] [PATCH v2] [base-files] dont change defaults for vm.min_free_kbytes on devices with <64MiB RAM

Felix Fietkau nbd at nbd.name
Fri Sep 16 11:07:47 PDT 2016


On 2016-09-16 19:39, Bastian Bittorf wrote:
> with 5c9cc7b7f8920944a413644e1c2ea23bfe655bcb we changed the default
> value of 'vm.min_free_kbytes' from ~650 to 4096 kilobytes on 32MiB-RAM-devices.
> This makes them hardly useable with a lot of OOM-crashes.
> 
> Change that and use 1024 kilobytes for 32MiB-RAM-devices.
> For devices with more than 32MiB RAM we keep the behaviour / the values.
> 
> While we are at it, localize vars and read the memory without AWK/nonforking.
> 
> changes v1 -> v2: (suggestions from Felix Fietkau, Rafał Miłecki)
> - keep -quiet option from sysctl
> - use 1024 kilobyte on 32MiB-devices instead of the kernel default
> - consistently use unit [MiB]
> ---
>  package/base-files/files/etc/init.d/sysctl | 14 +++++++++-----
>  1 file changed, 9 insertions(+), 5 deletions(-)
> 
> diff --git a/package/base-files/files/etc/init.d/sysctl b/package/base-files/files/etc/init.d/sysctl
> index a0daec0..7a16e01 100755
> --- a/package/base-files/files/etc/init.d/sysctl
> +++ b/package/base-files/files/etc/init.d/sysctl
> @@ -4,16 +4,20 @@
>  START=11
>  
>  set_vm_min_free() {
> -	mem="$(grep MemTotal /proc/meminfo  | awk '{print $2}')"
> -	if [ "$mem" -gt 65536 ]; then # 128M
> +	local mem value
> +
> +	read -r _ mem _ </proc/meminfo
> +
> +	if   [ "$mem" -gt 65536 ]; then	# 128MiB
>  		val=16384
> -	elif [ "$mem" -gt 32768 ]; then # 64M
> +	elif [ "$mem" -gt 32768 ]; then	# 64MiB
>  		val=8192
> -	elif [ "$mem" -gt 16384 ]; then # 32M
> -		val=4096
> +	elif [ "$mem" -gt 16384 ]; then	# 32MiB
> +		val=1024
I already changed the default in the master branch. By the way, I'm not
very fond of burying a small relevant fix in a bunch of unrelated
cleanups, even when documented in the commit msg.

- Felix



More information about the Lede-dev mailing list