base-files: reduce vm.min_free_kbytes for devices with 32M RAM
[openwrt/staging/rmilecki.git] / package / base-files / files / etc / init.d / sysctl
index 36e29eabcb8c4a4a42d2211cb2a3c14e8d179f87..3a497fb66c4f0fb6748ca7c3ba316ee2627f4c74 100755 (executable)
@@ -2,6 +2,24 @@
 # 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=1024
+       else
+               return
+       fi
+       sysctl -qw vm.min_free_kbytes="$val"
+}
+
 start() {
-       [ -f /etc/sysctl.conf ] && sysctl -p -e >&-
+       set_vm_min_free
+       for CONF in /etc/sysctl.conf /etc/sysctl.d/*.conf; do
+               [ -f "$CONF" ] && sysctl -p "$CONF" -e >&-
+       done
 }