Date: Mon, 24 Mar 2003 18:05:38 -0800 From: Wes Peters <wes@softweyr.com> To: "Poul-Henning Kamp" <phk@phk.freebsd.dk> Cc: freebsd-arch@freebsd.org Subject: Re: Patch to protect process from pageout killing Message-ID: <200303241805.38175.wes@softweyr.com> In-Reply-To: <7019.1048523782@critter.freebsd.dk> References: <7019.1048523782@critter.freebsd.dk>
next in thread | previous in thread | raw e-mail | index | archive | help
On Monday 24 March 2003 08:36, Poul-Henning Kamp wrote: > In message <200303240823.48262.wes@softweyr.com>, Wes Peters writes: > >As promised, here's the patch to protect a process from being killed > > when pageout is in memory shortage. This allows a process to > > specify that it is important enough to be skipped when pageout is > > looking for the largest process to kill. > > > >My needs are simple. We make a box that is a web proxy and runs > > from a memory disk, using flash for permanent storage. The flash > > is mounted only when a configuration write is needed, the box runs > > from the memory disk. We've experienced a problem at certain > > customer sites where bind will consume a lot (~30 MB) of ram and > > then pageout will kill the largest process, which is usually either > > named or squid. This pretty much kills the box. We'd much rather > > have pageout kill off some of the squid worker processes, we can > > recover from that. > > > >Is this a good approach to the problem? Feedback welcome. > > (Ignoring the white-space change) OK, I put them back so the function will be inconsistent again. ;^) They accidentally got shuffled when I move my implementation from just below RLIMIT_CPU (from which it obviously and erroneously heavily borrowed) to put it in numerical order. > I can certainly see the point, but I'm not sure this is the way. > > I am not sure that we want to use the resource limits facility for > booleans, some of the logic sourounding the suser checks may not > hold tight. I had concerns about that as well. In the original (4.4 roughly) implementation I used madvise as the interface, but the madvise interface has changed greatly. It didn't seem worthwhile adding a syscall for this task, so I looked for another reasonable protected interface to ab(use). I'm 100% open to suggestions on the API. > Also, doesn't this result in the flag being inerited with fork() and > thereby negating the effect you are seeking for squid ? I looked through all the places in kern_fork.c where p2->p_flag gets set and didn't see anything that looked like it would inherit P_PROTECTED from p1->p_flag. Did I miss something? I'm obviously a bit of a neophyte in this part of the kernel. -- "Where am I, and what am I doing in this handbasket?" Wes Peters wes@softweyr.com To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-arch" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200303241805.38175.wes>