Date: Fri, 4 Jan 2008 11:30:22 +0000 From: "Igor Mozolevsky" <igor@hybrid-lab.co.uk> To: "Robert Watson" <rwatson@freebsd.org> Cc: =?ISO-8859-1?Q?Dag-Erling_Sm=F8rgrav?= <des@des.no>, freebsd-current@freebsd.org, Jason Evans <jasone@freebsd.org> Subject: Re: sbrk(2) broken Message-ID: <a2b6592c0801040330g229030dbvc903e4f09d589644@mail.gmail.com> In-Reply-To: <20080104111938.N77222@fledge.watson.org> References: <477C82F0.5060809@freebsd.org> <863ateemw2.fsf@ds4.des.no> <20080104002002.L30578@fledge.watson.org> <a2b6592c0801040241l598ea9b7h57ad6889a1eccd3@mail.gmail.com> <86bq81c12d.fsf@ds4.des.no> <a2b6592c0801040318s9986f10u40cf725bc96304c6@mail.gmail.com> <20080104111938.N77222@fledge.watson.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On 04/01/2008, Robert Watson <rwatson@freebsd.org> wrote: > On Fri, 4 Jan 2008, Igor Mozolevsky 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 will create a sparse file without file system blocks to back it, and is > effectively also over-commit. When the file system runs out of room, you will > get SIGSEGV when the vnode pager discovers it can't write a page to disk. If > you zero-fill it, the blocks are pre-allocated. Surely you should not be allowed to overcommit on fseek() followed by write(,,1); zeroing out gigs of hdd space seems rather silly... Igor
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?a2b6592c0801040330g229030dbvc903e4f09d589644>