Date: Wed, 14 Apr 1999 08:18:59 -0400 (EDT) From: Brian Feldman <green@unixhelp.org> To: Alfred Perlstein <bright@rush.net> Cc: Ladavac Marino <mladavac@metropolitan.at>, "'mi@aldan.algebra.com'" <mi@aldan.algebra.com>, current@FreeBSD.ORG Subject: RE: swap-related problems Message-ID: <Pine.BSF.4.05.9904140817290.72408-100000@janus.syracuse.net> In-Reply-To: <Pine.BSF.3.96.990414035810.4169g-100000@cygnus.rush.net>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, 14 Apr 1999, Alfred Perlstein wrote: > On Wed, 14 Apr 1999, Ladavac Marino wrote: > > > > -----Original Message----- > > > From: Mikhail Teterin [SMTP:mi@misha.cisco.com] > > > Sent: Wednesday, April 14, 1999 12:45 AM > > > To: current@freebsd.org > > > Subject: Re: swap-related problems > > > > > > > > > Well, this is just an implementation detail, is not it? I don't > > > mean to critisize, or anything, but such thing as "no available > > > memory" is a fairly intuitive... Coming down, again, the malloc > > > should return a usable memory if available and NULL if it's not. > > > Is not this a "natural" semantics? Why can a program die because > > > _another_ program ate up all the rest of the memory? > > > > > > > > [ML] This is a common problem for any OS that implements memory > > overcommit. This means that it is not possible to detect an out-of-swap > > condition sinchronously as the swap is reserved only when the pages are > > dirtied and not when brk is grown. This means that you can set brk a > > gigabyte higher (given that your user limits allow that), and you will > > not be using swap as long as you do not write to the pages you > > "allocated" to the process. > > > > Another strategy is to reserve the swap space as soon as it is > > allocated by the program. This strategy is much more conservative and > > inherently safer, but it needs much more space: for instance, if you > > have a program with WSS of a gigabyte and you want to system( "date" ), > > you will need at least 2 gigs of swap because system() does fork() first > > which means that you get 2 copies of your big program and the system > > cannot know that in one of the copies an exec() will be shortly > > forthcoming--thus, it has to reserve the full WSS for the copy because > > it will potentially write to all pages of its WSS. > > An interesting idea would be to mark this process as killable if COW > causes an out of swap condition. Another interesting application would > be a fork() call that checks this condition and fails if there is > potential for overcommit. forkifavail() > > Basically anyone doing a system("date"); should be using vfork (yes > i can see when vfork is not sufficient) > > This would sort of be like a soft limit on memory allocation and hint > to the kernel of which processes are the ones causeing overcommit. > > basically at a certain point, sbrk will fail and forked processes > would be marked killable... > > does this make sense? > > has the idea of processes running with uid < 10 or just root being > excempt from this "frantic kill" ? This isn't really a great idea since it would be changing the Unix API. However, I agree that processes with exclusive use of the video hardware should not be killed by the system *COUGH XFree86 COUGH*. > > -Alfred > > > > > It would be nice if memory overcommit were configurable (on-off, > > or per process). > > > > /Marino > > > > > > To Unsubscribe: send mail to majordomo@FreeBSD.org > > with "unsubscribe freebsd-current" in the body of the message > > > > Alfred Perlstein - Admin, coder, and admirer of all things BSD. > -- There are operating systems, and then there's FreeBSD. > -- http://www.freebsd.org/ 4.0-current > > > > To Unsubscribe: send mail to majordomo@FreeBSD.org > with "unsubscribe freebsd-current" in the body of the message > Brian Feldman _ __ ___ ____ ___ ___ ___ green@unixhelp.org _ __ ___ | _ ) __| \ FreeBSD: The Power to Serve! _ __ | _ \__ \ |) | http://www.freebsd.org _ |___/___/___/ To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.05.9904140817290.72408-100000>