23.11.2025 05:41, Jordan Geoghegan пишет:
> I have a dual core Edgerouter Pro running 7.8 - I noticed that unlike my
> amd64 machines, the octeon machine only spawns a single softnet thread. Does
> octeon support multiple softnet threads?
On MP systems MI sofnet_init() should always spin up 8 threads.
Later, once MD code ran and attached all CPUs, sofnet_percpu()
cleans up excessive ones based on MD `ncpus', the global behind
the hw.ncpu sysctl.
I see the same on an ER-6P:
$ top -S -g softnet | grep soft
9948 root 10 0 0K 30M sleep/2 bored 351:40 0.44%
softnet0
$ sysctl hw | grep cpu
hw.ncpu=4
hw.cpuspeed=1000
hw.ncpufound=4
hw.ncpuonline=4
All cores attached, i.e. octeon's hw_cpu_hatch() should've run
and bumped `ncpus' four times.
softnet code in sys/net/if.c and after a quick glance at octeon's
code (unfamiliar to me), I can't spot anything off...
On both sparc64 with 16 vCPUs and amd64 with 12 cores I see eight
softnet threads, the current NET_TASKQ maximum.
Could it be that on octeon hw_cpu_hatch() somehow runs too late,
i.e. after softnet_percpu()? That's the only way I read if.c
being able to "garbage-collect" all but the first softnet threads.