Date: Mon, 17 Mar 2003 11:56:40 -0800 From: Wes Peters <wes@softweyr.com> To: Juli Mallett <jmallett@FreeBSD.org>, Eivind Eklund <eivind@FreeBSD.org> Cc: Mike Silbersack <silby@silby.com>, David Schultz <das@FreeBSD.org>, src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/vm vm_map.c vm_map.h vm_pageout.c Message-ID: <200303171156.40901.wes@softweyr.com> In-Reply-To: <20030314101857.A98861@FreeBSD.org> References: <200303122313.h2CNDHMU046431@repoman.freebsd.org> <20030314012954.A42430@FreeBSD.org> <20030314101857.A98861@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Friday 14 March 2003 08:18, Juli Mallett wrote:
> * De: Eivind Eklund <eivind@FreeBSD.org> [ Data: 2003-03-14 ]
> [ Subjecte: Re: cvs commit: src/sys/vm vm_map.c vm_map.h
> vm_pageout.c ]
>
> >
> > Having had as my workstation a FreeBSD machine with X, netscape,
> > and too little RAM, I think it would be very useful for some
> > situations. You have no idea how annoying it is when netscape eats
> > all your memory and FreeBSD decide that the solution to this is to
> > kill *X*.
>
> I've had that happen for me (though the combinations required are a
> lot lower, as my RAM is a lot lower :>), and that's why I started
> looking into this. I didn't realise my name had been dragged into
> this until just now :)
I have a similar-intentioned set of changes in a 4.x-based tree here.
Our problem is similar to Eivind's except it's Squid that is getting
killed, and Squid is the entire reason the box exists. I took the
simple kernel way to protecting processes:
o Add a flag in the proc struct signalling 'don't kill me'. This flag
is not inheritable. (I recycled the now-deprecated P_NOSWAP flag for
this).
o Provide a mechanism for a process to set this flag. Require root to
prevent the world from setting it willy-nilly. (I [ab]used madvise for
this, since it already "dorks with memory settings". Better interfaces
could probably be found.)
o Hack squid and a few other essential and potentially large programs
(such as bind) to set this flag.
This change effectively stopped our system from committing suicide,
encouraging it to kill off worker-slave processes that can be restarted
when load reduces instead of killing the heart of the box. I can work
up a patch if someone would like to see this on a recent system.
--
"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 cvs-all" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200303171156.40901.wes>
