Date: Mon, 16 Mar 2009 03:24:51 +1100 (EST) From: Ian Smith <smithi@nimnet.asn.au> To: cpghost <cpghost@cordula.ws> Cc: Wojciech Puchar <wojtek@wojtek.tensor.gdynia.pl>, freebsd-questions@freebsd.org Subject: Re: Speeding up exit(2)? Message-ID: <20090316023903.T95588@sola.nimnet.asn.au> In-Reply-To: <20090315120024.E004210656DB@hub.freebsd.org> References: <20090315120024.E004210656DB@hub.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, 15 Mar 2009 11:01:41 +0100 cpghost <cpghost@cordula.ws> wrote: > On Sun, Mar 15, 2009 at 10:27:53AM +0100, Wojciech Puchar wrote: > > > Not sure what's really going on there, but apparently, the process > > > reads in pages from swap that have been paged out previously > > > (according to top(1)). > > > > is it your program and you are sure it's on exit? > > Every memory hungry program is concerned; and yes: it happens exactly > on exit. > > > it's because the program is writted the way it's doing a lot of things > > (probably unneeded) on exit. > > Have a look at what happens during exit: > /usr/src/sys/kern/kern_exit.c:exit1() > > especially at the call to vm_waitproc(): > /usr/src/sys/vm/vm_glue.c:vm_waitproc > > which calls vmspace_exitfree(): > /usr/src/sys/vm/vm_map.c:vmspace_exitfree() > > Now, vmspace_exit() and vmspace_exitfree() ultimately call: > /usr/src/sys/vm/vm_map.c:vmspace_dofree() > > It then goes deep into the bowels of vm amd pmap, > and that's the place where the pages are paged in > again (I think). Sounds right. This is easy to demonstrate on a laptop with 160MB RAM, running a bunch of servers + X + KDE, then running Mozilla, then opening about 30 tabs of pages, many of which run vast and buggy javascript .. By this stage mozilla is about 150MB with about 60MB resident, and swap is pushing 200MB. *seriously* paging, just on flipping to another tab. Now close mozilla and watch top while it's shutting down. Go and pour yourself a cuppa, there's no hurry .. Apart from having to close each tab/window, freeing all its resources, bits of the executable itself need to be paged in to do various things, which may need to page out some more. What's amazing is that it can do that for several minutes, coming out unscathed when it finally quits! (extreme example, but a true story from a wild ebay session yesterday :) > > not exit(2) itself Well that just starts that big VM ball rolling, so to speak .. so it's a tad more complex than a program that fills memory (+ swap) then exits. cheers, Ian
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20090316023903.T95588>