Re: [PATCH] net: allow netdev_wait_allrefs() to run faster
From: Benjamin LaHaise <hidden>
Date: 2009-10-30 23:53:10
On Fri, Oct 30, 2009 at 04:25:52PM -0700, Eric W. Biederman wrote:
I realized after sending the message that s_mode in sysfs_dirent is a real size offense. It is a 16bit field packed in between two longs. So in practice it is possible to move the s_mode up next to s_flags and add a s_nlink after it both unsigned short and get a cheap sysfs_nlink.
That doesn't work -- the number of directory entries can easily exceed 65535. Current mid range hardware is good enough to terminate 100,000 network interfaces on a single host.
Since I'm not quite ready to post my patches. I will briefly mention what I have in my queue and hopefully get things posted. I have changes to make it so that sysfs never has to go from the sysfs_dirent to the sysfs inode.
Ah, interesting.
I have changes to sys_sysctl() so that it becomes a filesystem lookup under /proc/sys. Which ultimately makes the code easier to maintain and debug.
That sounds like a much saner approach, but has the wrinkle that procfs can be configured out.
Now back to getting things forward ported and ready to post.
I'm looking forward to those changes. I've been ignoring procfs for the time being by disabling the per-interface entries in the network stack, but there is some desire to be able to enable rp_filter on a per-interface radius config at runtime. rp_filter has to be disabled across the board on my access routers, as there are several places where assymetric routing is used for performance reasons. -ben