mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-26 17:01:14 +00:00
netifd: add a packet steering mode matching the old script
This spreads packet processing across all cores Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
parent
b5c53848c3
commit
c4d394c6cc
@ -9,6 +9,7 @@ let eth_bias = 2.0;
|
|||||||
let debug = 0, do_nothing = 0;
|
let debug = 0, do_nothing = 0;
|
||||||
let disable;
|
let disable;
|
||||||
let cpus;
|
let cpus;
|
||||||
|
let all_cpus;
|
||||||
|
|
||||||
for (let arg in ARGV) {
|
for (let arg in ARGV) {
|
||||||
switch (arg) {
|
switch (arg) {
|
||||||
@ -21,6 +22,9 @@ for (let arg in ARGV) {
|
|||||||
case '0':
|
case '0':
|
||||||
disable = true;
|
disable = true;
|
||||||
break;
|
break;
|
||||||
|
case '2':
|
||||||
|
all_cpus = true;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -46,9 +50,19 @@ function set_task_cpu(pid, cpu) {
|
|||||||
system(`taskset -p -c ${cpu} ${pid}`);
|
system(`taskset -p -c ${cpu} ${pid}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function cpu_mask(cpu)
|
||||||
|
{
|
||||||
|
let mask;
|
||||||
|
if (cpu < 0)
|
||||||
|
mask = (1 << length(cpus)) - 1;
|
||||||
|
else
|
||||||
|
mask = (1 << int(cpu));
|
||||||
|
return sprintf("%x", mask);
|
||||||
|
}
|
||||||
|
|
||||||
function set_netdev_cpu(dev, cpu) {
|
function set_netdev_cpu(dev, cpu) {
|
||||||
let queues = glob(`/sys/class/net/${dev}/queues/rx-*/rps_cpus`);
|
let queues = glob(`/sys/class/net/${dev}/queues/rx-*/rps_cpus`);
|
||||||
let val = sprintf("%x", (1 << int(cpu)));
|
let val = cpu_mask(cpu);
|
||||||
if (disable)
|
if (disable)
|
||||||
val = 0;
|
val = 0;
|
||||||
for (let queue in queues) {
|
for (let queue in queues) {
|
||||||
@ -173,7 +187,12 @@ function assign_dev_cpu(dev) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (length(dev.netdev) > 0) {
|
if (length(dev.netdev) > 0) {
|
||||||
let cpu = dev.rx_cpu = get_next_cpu(rx_weight, dev.napi_cpu);
|
let cpu;
|
||||||
|
if (all_cpus)
|
||||||
|
cpu = -1;
|
||||||
|
else
|
||||||
|
cpu = get_next_cpu(rx_weight, dev.napi_cpu);
|
||||||
|
dev.rx_cpu = cpu;
|
||||||
for (let netdev in dev.netdev)
|
for (let netdev in dev.netdev)
|
||||||
set_netdev_cpu(netdev, cpu);
|
set_netdev_cpu(netdev, cpu);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user