Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 24 Mar 2003 18:12:55 -0800
From:      Wes Peters <wes@softweyr.com>
To:        David Schultz <das@FreeBSD.ORG>
Cc:        freebsd-arch@FreeBSD.ORG
Subject:   Re: Patch to protect process from pageout killing
Message-ID:  <200303241812.55290.wes@softweyr.com>
In-Reply-To: <20030325012303.GA4406@HAL9000.homeunix.com>
References:  <200303240823.48262.wes@softweyr.com> <20030325012303.GA4406@HAL9000.homeunix.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Monday 24 March 2003 17:23, David Schultz wrote:
> Thus spake Wes Peters <wes@softweyr.com>:
> > 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.
>
> Very nice.  Inheritance of this attribute seems to be a
> contentious issue.  Making inheritance tunable might be a good
> idea.  You wouldn't be able to piggyback on rlimit, though.

Actually inheritance was unintentional, I'm waiting for feedback on what 
I should've done to make it not inherited.  Any help you can offer will 
be appreciated.

> There's a significant userland component of this as well, although
> that's probably a job for another day.  It basically consists of
> making it possible to specify that certain standard system daemons
> should have this attribute.

Yup.

> > +			    (p->p_flag & P_PROTECTED) ||
> >  			    ((p->p_pid < 48) && (vm_swap_size != 0))) {
> >  				PROC_UNLOCK(p);
> >  				continue;
>
> The pid < 48 magic can probably go away, while you're at it.

I'd be happy to -- that 48 makes me nervous -- if a couple more Really 
Smart(tm) guys say it's OK. ;^)

-- 
         "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?200303241812.55290.wes>