From owner-freebsd-stable@FreeBSD.ORG Mon Jul 28 10:14:05 2003 Return-Path: Delivered-To: freebsd-stable@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 55B6537B401 for ; Mon, 28 Jul 2003 10:14:05 -0700 (PDT) Received: from moo.sysabend.org (moo.sysabend.org [66.111.41.70]) by mx1.FreeBSD.org (Postfix) with ESMTP id 97BA143F3F for ; Mon, 28 Jul 2003 10:14:04 -0700 (PDT) (envelope-from ragnar@sysabend.org) Received: by moo.sysabend.org (Postfix, from userid 1004) id CC2301123; Mon, 28 Jul 2003 10:14:03 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by moo.sysabend.org (Postfix) with ESMTP id C74B810B0; Mon, 28 Jul 2003 10:14:03 -0700 (PDT) Date: Mon, 28 Jul 2003 10:14:03 -0700 (PDT) From: Jamie Bowden To: Brent Casavant In-Reply-To: Message-ID: <20030728100518.D50019-100000@moo.sysabend.org> X-representing: Only myself. X-badge: We don't need no stinking badges. X-obligatory-profanity: Fuck X-moo: Moo. MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII cc: freebsd-stable@freebsd.org Subject: Re: malloc does not return null when out of memory X-BeenThere: freebsd-stable@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Production branch of FreeBSD source code List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 28 Jul 2003 17:14:05 -0000 On Thu, 24 Jul 2003, Brent Casavant wrote: > [hopefully I didn't mess up the attribution, replying to a digest sucks] > > On Thu, 24 Jul 2003, Jamie Bowden wrote: > > > On Wed, 23 Jul 2003, Don Lewis wrote: > > > > > On 23 Jul, Brooks Davis wrote: > > > > > > No there isn't. Overcommit is a fundamental design feature of the BSD > > > > VM. If you don't like it, find an OS that doesn't do it. The only one > > > > I can think of off the top of my head in Irix where I've found it to be > > > > a serious pain in the ass. > > > > Irix allows for use of what it calls 'vswap' as well, which is just a file > > that lives on a normal filesystem that the system can fall back on when > > actual RAM and swap are exhausted. It allows for extremely large commits > > on memory limited systems while guaranteeing that it has somewhere to page > > out to if necessary. The poster above may not like Irix, but I do. > > There's a lot of good stuff in there, but SGI aren't the best at telling > > people it exists and how to use it. > > Almost. Having actually worked on the IRIX VM system, and on vswap > issues in particular... > > Don is correct in that IRIX doesn't overcommit. But that is only > the default swap configuration. > > The amount of "vswap" you add to the system is the amount by which > the VM system is allowed to overcommit total memory (real swap + RAM). > If the system is overcommitted and runs into a genuine memory outage, > then processes will start to be killed (hopefully intelligently). > > In particular "vswap" is not a file that lives in the normal filesystem > that gets swapped to. The somewhat ugly syntax for adding vswap > means that vswap does get configured along with a normal swap area > (file or device), but vswap itself has no backing store. Ah, yes, I had mis remembered the manual (from InfoSearch): Adding Virtual Swap Space If processes are being denied stack growth or new processes due to a stated lack of swap space, and you believe that there is adequate physical space, add the following entry to your /etc/fstab file: /usr/swap swap swap pri=4,vlength=204800 0 0 Then give the command: mkfile -v 0b /usr/swap The file (/usr/swap) will be zero-length, so you have added only virtual swap space and no real swap area. Your kernel should then allow more processes to execute. However, when an attempt is made to access more than the system limit, the IRIX system swaps the largest running program out of memory. and: Turning On Virtual Swapping If swap -s reports a negative number, increase virtual swap when your system is not near its physical limits. This allows your system to allocate space to those applications that grab more space than they actually need. To do this, you can turn on virtual swapping by entering the following commands: su chkconfig vswap on /etc/init.d/swap start This allocates more swap space, or space that can be reserved but not allocated. See the /etc/init.d/swap file and the swap(1M) man page for more information. etc... You can create a normal file of larger than 0 length and allocate it as swap, which is (sort of) separate from vswap, but not really; I was merging the two in my head for some reason. Jamie Bowden -- "It was half way to Rivendell when the drugs began to take hold" Hunter S Tolkien "Fear and Loathing in Barad Dur" Iain Bowen