5c9cc7b7f8
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>
25 lines
492 B
Bash
Executable file
25 lines
492 B
Bash
Executable file
#!/bin/sh /etc/rc.common
|
|
# 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
|
|
}
|