Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 8 Dec 2017 10:27:42 -0700
From:      Warner Losh <imp@bsdimp.com>
To:        Larry McVoy <lm@mcvoy.com>
Cc:        Konstantin Belousov <kostikbel@gmail.com>,  "freebsd-hackers@freebsd.org" <freebsd-hackers@freebsd.org>, Johannes Lundberg <johalun0@gmail.com>
Subject:   Re: OOM problem?
Message-ID:  <CANCZdfp6BX4xWf_NpeXUkeEc=w07FUGLx%2BLA1S_5CPDUfrYB-A@mail.gmail.com>
In-Reply-To: <20171208150333.GI16028@mcvoy.com>
References:  <20171208011430.GA16016@mcvoy.com> <CAECmPwtcsHwiZpmx4%2BT_w3njEdUAjGZiRZKEX53m-QVJLSuY9Q@mail.gmail.com> <20171208101658.GD2272@kib.kiev.ua> <20171208150333.GI16028@mcvoy.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Dec 8, 2017 at 8:03 AM, Larry McVoy <lm@mcvoy.com> wrote:

> On Fri, Dec 08, 2017 at 12:16:58PM +0200, Konstantin Belousov wrote:
> > On Fri, Dec 08, 2017 at 08:18:21AM +0000, Johannes Lundberg wrote:
> > > Regarding potential oom overhaul. Personally I like the idea of an oom
> > > signal. The idea comes from iOS where applications get a callback when
> > > system memory is low and they're given a chance to free unused
> > > resources or resources that can easily be recreated, before getting
> > > killed completely.
> > The OOM signal is a topic which was discussed to death many times before.
> > The summary is that it does not work, because you need to provide pages
> > for userspace to be able to handle the signal.
>
> Just for the record, what I was proposing wasn't as ambitious as what
> Johannes suggested (while I like his idea it's "weird" and it's unlikely
> that Firefox et al would use it unless we got Linux to have the same
> thing).
>
> I was just suggesting that processes sleeping in vm_wait() wake up once
> in a while to respect signals, as in, if I kill -9 that process I want it
> to go away.  Currently, it doesn't.


AIX had SIGDANGER that would be sent when pages were getting scarce. There
were still pages to be had in the system, just not many, and the idea was
when you got tight on, but not out of, memory, you'd signal all the
programs in the system to give them a chance to return pages to the OS they
were done with. I don't recall all the details, but AIX's syslog-ish thing
would create an error log when that happened. Some programs would flush all
or part of their cache, etc. It worked fairly well (in that the signal was
delivered), but did depend on the cooperation of the running processes not
to do something stupid.
https://www.ibm.com/support/knowledgecenter/en/ssw_aix_72/com.ibm.aix.osdevice/page_space_trouble.htm
has a minimalistic description.

Not that I'm advocating it, per se, but there is historical precedent for
this feature.

Warner



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CANCZdfp6BX4xWf_NpeXUkeEc=w07FUGLx%2BLA1S_5CPDUfrYB-A>