Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 28 Jul 2003 10:14:03 -0700 (PDT)
From:      Jamie Bowden <ragnar@sysabend.org>
To:        Brent Casavant <b.j.casavant@ieee.org>
Cc:        freebsd-stable@freebsd.org
Subject:   Re: malloc does not return null when out of memory
Message-ID:  <20030728100518.D50019-100000@moo.sysabend.org>
In-Reply-To: <Pine.BSO.4.44.0307241800450.8755-100000@skyline.tdkt.org>

next in thread | previous in thread | raw e-mail | index | archive | help
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 <alaric@alaric.org.uk>




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030728100518.D50019-100000>