Files
DHDAXCW-Rockchip-OpenWrt/target/linux/rockchip/armv8/base-files/etc/hotplug.d/net/40-net-smp-affinity
2025-04-08 18:09:56 +08:00

230 lines
6.9 KiB
Bash

#!/bin/sh
[ "$ACTION" = add ] || exit
get_device_irq() {
local device="$1"
local line
local seconds
for seconds in $(seq 0 9); do
line=$(grep -m 1 "${device}\$" /proc/interrupts) && break
sleep 1
done
echo ${line} | sed 's/:.*//'
}
set_interface_core() {
local core_mask="$1"
local interface="$2"
local device="$3"
[ -z "${device}" ] && device="$interface"
local irq=$(get_device_irq "$device")
echo "${core_mask}" > /proc/irq/${irq}/smp_affinity_list
}
sysctl -w net.core.rmem_max=26214400
sysctl -w net.core.rmem_default=2097152
sysctl -w net.core.wmem_max=16214400
sysctl -w net.core.wmem_default=524288
sysctl -w net.ipv4.tcp_mem="22611 65536 932448"
sysctl -w net.ipv4.tcp_rmem="65536 524288 8388608"
sysctl -w net.ipv4.tcp_wmem="65536 524288 8388608"
sysctl -w net.ipv4.tcp_max_syn_backlog=56384
sysctl -w net.ipv4.tcp_max_tw_buckets=6000
sysctl -w net.ipv4.tcp_max_orphans=32768
sysctl -w net.ipv4.tcp_orphan_retries=3
sysctl -w net.netfilter.nf_conntrack_max=6553500
sysctl -w net.netfilter.nf_conntrack_tcp_timeout_established=7440
sysctl -w net.netfilter.nf_conntrack_udp_timeout=60
sysctl -w net.netfilter.nf_conntrack_udp_timeout_stream=180
sysctl -w fs.nr_open=65535000
sysctl -w net.core.netdev_budget=5000
sysctl -w net.core.netdev_budget_usecs=50000
sysctl -w net.netfilter.nf_conntrack_max=629536
sysctl -w net.netfilter.nf_conntrack_buckets=32384
case "$(board_name)" in
ariaboard,photonicat)
set_interface_core 2 "eth0"
set_interface_core 4 "eth1"
;;
embedfire,doornet1|\
friendlyarm,nanopi-r2c|\
friendlyarm,nanopi-r2s)
set_interface_core "0-1" "eth0"
set_interface_core "2-3" "eth1" "xhci-hcd:usb3"
rfc=32768
sysctl net.core.rps_sock_flow_entries=$rfc
for fileRfc in $(ls /sys/class/net/eth*/queues/rx-*/rps_flow_cnt)
do
eth_name=$(echo "$fileRfc"|awk -F/ '{print $5}')
echo $rfc > $fileRfc
done
#0011
echo 3 > /sys/class/net/eth0/queues/rx-0/rps_cpus
echo 3 > /sys/class/net/eth0/queues/rx-1/rps_cpus
#1100
echo c > /sys/class/net/eth1/queues/rx-0/rps_cpus
echo c > /sys/class/net/eth1/queues/rx-1/rps_cpus
/usr/sbin/ethtool -K eth0 tso on sg on tx on
/usr/sbin/ethtool -K eth1 tso on sg on tx on
;;
embedfire,doornet2|\
friendlyarm,nanopi-r4s|\
friendlyarm,nanopi-r4se)
set_interface_core "4" "eth0"
set_interface_core "5" "eth1"
rfc=32768
sysctl net.core.rps_sock_flow_entries=$rfc
for fileRfc in $(ls /sys/class/net/eth*/queues/rx-*/rps_flow_cnt)
do
eth_name=$(echo "$fileRfc"|awk -F/ '{print $5}')
echo $rfc > $fileRfc
done
#0011
echo 3 > /sys/class/net/eth0/queues/rx-0/rps_cpus
echo 3 > /sys/class/net/eth0/queues/rx-1/rps_cpus
#1100
echo c > /sys/class/net/eth1/queues/rx-0/rps_cpus
echo c > /sys/class/net/eth1/queues/rx-1/rps_cpus
/usr/sbin/ethtool -K eth0 tso on sg on tx on
/usr/sbin/ethtool -K eth1 tso on sg on tx on
;;
embedfire,lubancat-1n|\
friendlyelec,nanopi-r3s|\
embedfire,lubancat-5|\
embedfire,lubancat-2)
set_interface_core "0-1" "eth0"
set_interface_core "2-3" "eth1"
/usr/sbin/ethtool -K eth0 tso on sg on tx on
/usr/sbin/ethtool -K eth1 tso on sg on tx on
rfc=32768
sysctl net.core.rps_sock_flow_entries=$rfc
for fileRfc in $(ls /sys/class/net/eth*/queues/rx-*/rps_flow_cnt)
do
eth_name=$(echo "$fileRfc"|awk -F/ '{print $5}')
echo $rfc > $fileRfc
done
#0011
echo 3 > /sys/class/net/eth0/queues/rx-0/rps_cpus
echo 3 > /sys/class/net/eth0/queues/rx-1/rps_cpus
#1100
echo c > /sys/class/net/eth1/queues/rx-0/rps_cpus
echo c > /sys/class/net/eth1/queues/rx-1/rps_cpus
/usr/sbin/ethtool -K eth0 tso on sg on tx on
/usr/sbin/ethtool -K eth1 tso on sg on tx on
;;
hinlink,opc-h66k|\
friendlyarm,nanopi-r5c|\
friendlyarm,nanopc-t6|\
friendlyarm,nanopi-r6c)
set_interface_core "0-3" "eth0-0"
set_interface_core "0" "eth0-16"
set_interface_core "1" "eth0-18"
set_interface_core "3" "eth1-0"
set_interface_core "2" "eth1-18"
set_interface_core "2" "eth1-16"
rfc=32768
sysctl net.core.rps_sock_flow_entries=$rfc
for fileRfc in $(ls /sys/class/net/eth*/queues/rx-*/rps_flow_cnt)
do
eth_name=$(echo "$fileRfc"|awk -F/ '{print $5}')
echo $rfc > $fileRfc
done
#0011
echo 3 > /sys/class/net/eth0/queues/rx-0/rps_cpus
echo 3 > /sys/class/net/eth0/queues/rx-1/rps_cpus
#1100
echo c > /sys/class/net/eth1/queues/rx-0/rps_cpus
echo c > /sys/class/net/eth1/queues/rx-1/rps_cpus
/usr/sbin/ethtool -K eth0 tso on sg on tx on
/usr/sbin/ethtool -K eth1 tso on sg on tx on
;;
friendlyarm,nanopi-r6s|\
friendlyarm,nanopi-r5s)
set_interface_core "0-3" "eth0"
set_interface_core "1" "eth1-0"
set_interface_core "0" "eth1-16"
set_interface_core "0" "eth1-18"
set_interface_core "3" "eth2-0"
set_interface_core "2" "eth2-18"
set_interface_core "2" "eth2-16"
rfc=32768
sysctl net.core.rps_sock_flow_entries=$rfc
for fileRfc in $(ls /sys/class/net/eth*/queues/rx-*/rps_flow_cnt)
do
eth_name=$(echo "$fileRfc"|awk -F/ '{print $5}')
echo $rfc > $fileRfc
done
#0101
echo 9 > /sys/class/net/eth0/queues/rx-0/rps_cpus
#0011
echo 3 > /sys/class/net/eth1/queues/rx-0/rps_cpus
echo 3 > /sys/class/net/eth1/queues/rx-1/rps_cpus
#1100
echo c > /sys/class/net/eth2/queues/rx-0/rps_cpus
echo c > /sys/class/net/eth2/queues/rx-1/rps_cpus
/usr/sbin/ethtool -K eth0 tso on sg on tx on
/usr/sbin/ethtool -K eth1 tso on sg on tx on
/usr/sbin/ethtool -K eth2 tso on sg on tx on
;;
hinlink,opc-h68k|\
hinlink,opc-h69k|\
embedfire,lubancat-2n)
set_interface_core "0-3" "eth0"
set_interface_core "1" "eth1"
set_interface_core "2" "eth2-0"
set_interface_core "2" "eth2-16"
set_interface_core "1" "eth2-18"
set_interface_core "3" "eth3-0"
set_interface_core "3" "eth3-18"
set_interface_core "1" "eth3-16"
rfc=32768
sysctl net.core.rps_sock_flow_entries=$rfc
for fileRfc in $(ls /sys/class/net/eth*/queues/rx-*/rps_flow_cnt)
do
eth_name=$(echo "$fileRfc"|awk -F/ '{print $5}')
echo $rfc > $fileRfc
done
#0101
echo 9 > /sys/class/net/eth0/queues/rx-0/rps_cpus
echo 9 > /sys/class/net/eth1/queues/rx-0/rps_cpus
#0011
echo 3 > /sys/class/net/eth2/queues/rx-0/rps_cpus
echo 3 > /sys/class/net/eth2/queues/rx-1/rps_cpus
#1100
echo c > /sys/class/net/eth3/queues/rx-0/rps_cpus
echo c > /sys/class/net/eth3/queues/rx-1/rps_cpus
/usr/sbin/ethtool -K eth0 tso on sg on tx on
/usr/sbin/ethtool -K eth1 tso on sg on tx on
/usr/sbin/ethtool -K eth2 tso on sg on tx on
/usr/sbin/ethtool -K eth3 tso on sg on tx on
;;
hinlink,h88k)
set_interface_core "6-7" "eth0"
set_interface_core "4-5" "eth1"
set_interface_core "0-1" "eth2"
rfc=32768
sysctl net.core.rps_sock_flow_entries=$rfc
for fileRfc in $(ls /sys/class/net/eth*/queues/rx-*/rps_flow_cnt)
do
eth_name=$(echo "$fileRfc"|awk -F/ '{print $5}')
echo $rfc > $fileRfc
done
#0101
echo 9 > /sys/class/net/eth0/queues/rx-0/rps_cpus
echo 9 > /sys/class/net/eth0/queues/rx-1/rps_cpus
#0011
echo 3 > /sys/class/net/eth1/queues/rx-0/rps_cpus
echo 3 > /sys/class/net/eth1/queues/rx-1/rps_cpus
/usr/sbin/ethtool -K eth0 tso on sg on tx on
/usr/sbin/ethtool -K eth1 tso on sg on tx on
/usr/sbin/ethtool -K eth2 tso on sg on tx on
;;
esac