From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alan Jenkins Date: Mon, 25 May 2009 20:28:31 +0000 Subject: Re: Good news for threading! Message-Id: <4A1AFF6F.5080306@tuffmail.co.uk> List-Id: References: <4A1AA131.7000202@tuffmail.co.uk> In-Reply-To: <4A1AA131.7000202@tuffmail.co.uk> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: linux-hotplug@vger.kernel.org Kay Sievers wrote: > On Mon, May 25, 2009 at 15:46, Alan Jenkins wrote: > >> I solved one of the reservations that held me back on threaded udevd. I >> still have some other concerns to work on, but I'm feeling much more >> optimistic now. >> >> Replacing processes with threads reduced page faults (copy-on-write) by >> 60-80%, but that _still_ left over 10% of udevd time in page fault overhead. >> >> I've discovered I can reduce this overhead much further by marking thread >> stacks with MADV_DONTFORK. When a thread needs to fork an external program, >> it can temporarily unmark its own thread stack. >> >> Disclaimer: I have no idea why this should reduce the number of page faults. >> I could be getting something horribly wrong. But even if it's wrong, at >> least it gives me a new angle on this problem. >> > > Do you have numbers for the difference of threaded vs. non-threaded, for: > time (udevadm trigger; udevadm settle) > when no rules are active? > > On my box it's ~0.6 seconds for the non-threaded udevd and ~460 > devices, when I move all rules out of the way. > > Thanks, > Kay > Interesting question. I stop HAL first, it tends to slow my tests down and doesn't represent normal bootup. Test machine is eeepc 701; trigger -n shows 382 devices. no threading: ~0.5s threading: ~0.25s This is based on an a slightly out of date tree. Your latest HEAD is still ~0.5s, but perhaps slightly lower, 0.46-0.48 as opposed to 0.48-0.5. Alan