Date: Mon, 01 Oct 2001 12:39:09 +0400 From: Vladimir Dozen <dozen@osw.com.ru> To: Alfred Perlstein <bright@mu.org> Cc: Greg Lehey <grog@FreeBSD.ORG>, Jos Backus <josb@cncdsl.com>, hackers@FreeBSD.ORG Subject: Re: VM: dynamic swap remapping (patch) Message-ID: <3BB82BAD.6090301@osw.com.ru> References: <20010929232953.B341@eix.do-labs.spb.ru> <20010929175653.Z59854@elvis.mu.org> <20010930120328.A534@eix.do-labs.spb.ru> <20010930035529.G59854@elvis.mu.org> <20010930134437.B284@eix.do-labs.spb.ru> <20010930105509.B2220@lizzy.bugworks.com> <20010930142326.L59854@elvis.mu.org> <20010930123359.A7241@lizzy.bugworks.com> <20010930145558.M59854@elvis.mu.org> <20011001131951.M31215@wantadilla.lemis.com> <20010930234114.P59854@elvis.mu.org>
next in thread | previous in thread | raw e-mail | index | archive | help
ehlo. > Well Joe seems to have provided a pretty interesting document on > how it works in AIX, but I was wondering if they do anything wrt > low/high watermarks like my idea. > > Basically you'd like to inform processes that the danger has been > alliviated so that they can cautiously start accepting more work > rather than freaking out and shutting out clients forever... Actually, most of applications believe that everything OK except something tells them it's not. Regular OOM protection may be build as: int on_sigdanger(int) { throw std::runtime_error("out of memory"); } ... while( there_are_more_requests ) { try { do_some_work_eating_lot_of_memory(); } catch(const std::exception& ex) { cerr << ex.what() << endl; } } I.e, we will attempt to execute user requests while we have them in our queue, but we will get exceptions and stop processing if system is out of memory. As soon as system will get enough free space we will continue normal processing without any special handling from our side. It means that signal that opposite SIGDANGER is rarely required, if required at all. You should be glad, it reduces work to do. ;) P.S. I know that throwing inside signal handler is bad techique, but it works (and works better than setting flag and testing it everywhere). dozen To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3BB82BAD.6090301>