tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

pktq_enqueue CPU distribution [was Re: On softints, softnet_lock and sleeping (aka ipv6 vs USB network] interfaces)



   Date: Sun, 6 Dec 2015 12:07:22 -0500
   From: Thor Lancelot Simon <tls%panix.com@localhost>

   On Sun, Dec 06, 2015 at 04:01:22PM +0000, Taylor R Campbell wrote:
   > 
   > Aside: This is probably because ipintr gets scheduled on a specified
   > target CPU, not on the local CPU, in pktq_enqueue...and apparently
   > every caller, except for bridges, specifies CPU 0.

   Huh.  This is either a concurrency-limiting bug in all the other code,
   or a problem with the bridge code.  Which do you think it is?

It is a provisional limitation until softnet_lock goes away or is no
longer a bottleneck.  See the comment in sys/net/pktqueue.c in
pktq_rps_hash, which `hashes' an mbuf to determine the CPU index.

(Many callers also explicitly pass 0 for the hash/index.  Why only
ether_input calls pktq_rps_hash, I don't know -- rmind?)


Home | Main Index | Thread Index | Old Index