Messages in this thread | | | Date | Thu, 16 Jun 2005 15:07:26 -0700 | From | "Paul E. McKenney" <> | Subject | Re: is synchronize_net in inet_register_protosw necessary? |
| |
On Thu, Jun 16, 2005 at 10:15:02AM -0700, Paul E. McKenney wrote: > On Tue, Jun 14, 2005 at 11:18:08PM +0900, junjie cai wrote: > > hi all. > > i am a newbie to linux kernel. > > in a arm926 board i found that it took about 30ms to finish > > the (net/ipv4/af_inet.c:898) inet_register_protosw > > because of the synchronize_net call during profiling. > > synchronize_net finally calls synchronize_rcu, so i think > > this is to make the change visiable after a list_add_rcu. > > but according to the Document/listRCU.txt it seems that > > a list insertation does not necessarily do call_rcu etc. > > may i have any mistakes, please kindly tell me. > > From a strict RCU viewpoint, you are quite correct. But sometimes > the overall locking protocol (which almost always includes other things > besides just RCU) places additional constraints on the code. My guess is > that the networking folks needed to ensure that the new protocol is seen > by all packets that are received after inet_register_protosw() returns. > > But I need to defer to networking guys on this one.
Hello, Junjie,
Ran into one of the networking guys off-list. Apparently, the synchronize_net() is there out of paranoia. It might be necessary, but he could not think of a reason for its being there. If you want to shave 30ms off of your boot time by removing it, here is his suggested test procedure:
o Write a small dummy protocol as a module.
o On an SMP machine, have one process repeated modprobe/rmmod while another process repeatedly does socket() calls for the dummy protocol.
Thanx, Paul - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |