DragonFly kernel List (threaded) for 2008-09
DragonFly BSD
DragonFly kernel List (threaded) for 2008-09
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

protocol threads mpsafe mode


From: "Sepherosa Ziehau" <sepherosa@xxxxxxxxx>
Date: Sun, 21 Sep 2008 15:30:58 +0800

Hi all,

Following patch allows us to experiments network threads in three mode:
1) BGL (default)
2) Adaptive BGL.  A msg flag is added (MSGF_MPSAFE).  The protocol
threads ({netmsg,tcpmsg}_service_loop_mpsafe) run without BGL by
default, if they get msg that does not have MSGF_MPSAFE, then they
hold BGL
3) No BGL.  Protocol threads are started with TDF_MPSAFE, old protocol
functions ({netmsg,tcpmsg}_service_loop) are used.

NETISR register needs additional flag parameter (only
NETISR_FLAG_MPSAFE is defined), so netisr_run (used on ethernet input
path) could hold BGL based on the registered netisr flag.

PR_MPSAFE (protosw.pr_flags) is added, so transport_processing_oncpu()
could hold BGL conditionally (I didn't feel well about how to set this
flag in the current patch (in ip_input.c), any suggestions?)

Following tunables are added:
net.inet.tcp.mpsafe_thread (0: BGL, 1: adaptive BGL, 2: no BGL)
net.inet.udp.mpsafe_thread (0: BGL, 1: adaptive BGL, 2: no BGL)
netisr.mpsafe_thread (0: BGL, 1: adaptive BGL, 2: no BGL)
net.inet.tcp.mpsafe_proto (0: will not set PR_MPSAFE, 1: set PR_MPSAFE)
net.inet.udp.mpsafe_proto (0: will not set PR_MPSAFE, 1: set PR_MPSAFE)

Patch:
http://leaf.dragonflybsd.org/~sephe/proto.diff1

Please review it.

Best Regards,
sephe

-- 
Live Free or Die



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