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 beeb79f7e6abaf5ad90d393edcfe4e26e86842bd..3a497fb66c4f0fb6748ca7c3ba316ee2627f4c74 100755 (executable)
@@ -1,7 +1,25 @@
 #!/bin/sh /etc/rc.common
-# Copyright (C) 2006 OpenWrt.org 
+# 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=0
 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
 }