From: Felix Fietkau Date: Mon, 1 Aug 2016 12:52:13 +0000 (+0200) Subject: base-files: increase vm.min_free_kbytes X-Git-Tag: v17.01.0-rc1~1830 X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=5c9cc7b7f8920944a413644e1c2ea23bfe655bcb;p=openwrt%2Fstaging%2Fxback.git base-files: increase vm.min_free_kbytes Network drivers typically allocate memory in atomic context. For that to be reliable, there needs to be enough free memory. Set the value heuristically based on the total amount of system RAM. Signed-off-by: Felix Fietkau --- diff --git a/package/base-files/files/etc/init.d/sysctl b/package/base-files/files/etc/init.d/sysctl index 2dfbaf7a6e..a0daec071e 100755 --- a/package/base-files/files/etc/init.d/sysctl +++ b/package/base-files/files/etc/init.d/sysctl @@ -2,7 +2,23 @@ # Copyright (C) 2006 OpenWrt.org START=11 + +set_vm_min_free() { + mem="$(grep MemTotal /proc/meminfo | awk '{print $2}')" + if [ "$mem" -gt 65536 ]; then # 128M + val=16384 + elif [ "$mem" -gt 32768 ]; then # 64M + val=8192 + elif [ "$mem" -gt 16384 ]; then # 32M + val=4096 + else + return + fi + sysctl -qw vm.min_free_kbytes="$val" +} + start() { + set_vm_min_free for CONF in /etc/sysctl.conf /etc/sysctl.d/*.conf; do [ -f "$CONF" ] && sysctl -p "$CONF" -e >&- done