sbrk(2) broken

Giorgos Keramidas keramida at
Fri Jan 4 19:44:02 PST 2008

On 2008-01-04 11:18, Igor Mozolevsky <igor at> wrote:
> On 04/01/2008, Dag-Erling Sm?rgrav <des at> wrote:
> > Of course, if you're afraid of memory overcommit and you know in advance
> > how much memory you need, you can simply allocate a sufficient amount of
> > address space at startup and touch it all.  This way, you will either be
> > killed right away, or be guaranteed to have sufficient memory for the
> > rest of your (process) lifetime.  Alternatively, do what Varnish does:
> > create a large file, mmap it, and allocate everything you need from that
> > area, so you have your own private swap space.  Just make sure to
> > actually allocate the disk space you need (by filling the file with
> > zeroes, or at the minimum writing a zero to the file every sb.st_blksize
> > bytes, preferably sequentially to avoid excessive fragmentation)
> Surely you can just fseek() on the file at the correct lenght?

That would create a nicely sized 'hole' in the starting blocks.  What
Dag-Erling describes is the correct(TM) way of making sure that all
blocks have been allocated from the backing store of the file.

More information about the freebsd-current mailing list