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 <nbd@nbd.name>
# Copyright (C) 2006 OpenWrt.org
START=11
# 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"
+}
+
for CONF in /etc/sysctl.conf /etc/sysctl.d/*.conf; do
[ -f "$CONF" ] && sysctl -p "$CONF" -e >&-
done
for CONF in /etc/sysctl.conf /etc/sysctl.d/*.conf; do
[ -f "$CONF" ] && sysctl -p "$CONF" -e >&-
done