Răsfoiți Sursa

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 <[email protected]>
Felix Fietkau 9 ani în urmă
părinte
comite
5c9cc7b7f8
1 a modificat fișierele cu 16 adăugiri și 0 ștergeri
  1. 16 0
      package/base-files/files/etc/init.d/sysctl

+ 16 - 0
package/base-files/files/etc/init.d/sysctl

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