From: Goswin von Brederlow <goswin-v-b@web.de>
To: "Richard W.M. Jones" <rich@annexia.org>
Cc: Joel Reymont <joelr1@gmail.com>, caml-list@yquem.inria.fr
Subject: Re: [Caml-list] appending data to a mmap-ed file
Date: Fri, 17 Dec 2010 01:36:35 +0100 [thread overview]
Message-ID: <87aak5jkvg.fsf@frosties.localnet> (raw)
In-Reply-To: <20101216171617.GB3647@annexia.org> (Richard W. M. Jones's message of "Thu, 16 Dec 2010 17:16:17 +0000")
"Richard W.M. Jones" <rich@annexia.org> writes:
> On Thu, Dec 16, 2010 at 11:31:16AM +0000, Joel Reymont wrote:
>> I'm constantly appending to a file of stock quotes (ints, longs,
>> doubles, etc.). I have this file mapped into memory with mmap.
>>
>> What's the most efficient way to make newly appended data available
>> as part of the memory mapping?
>
> Unfortunately it's hard to reliably extend an mmap'd area. The reason
> is not that you can't do it, but that you might overrun another memory
> mapping after it, where that other mapping could be something
> important like your program or a shared library. The other mapping
> might not even be present at the time you initially map your file, but
> might appear as the result of an innocuous operation such as printing
> a string or allocating memory.
>
> Now you can, with a bunch of work, avoid this: parse /proc/self/maps,
> select a suitable base address for your mapping, move the mapping if
> it gets too large for the selected area or if another library is
> mapped in above it, etc. but this quickly gets very difficult.
>
> I would suggest a simpler way to solve your problem is simply to open
> the data file and append to it. If you need to reference the values,
> keep them in memory structures.
>
> Rich.
Or avoid the whole issue and make the file large enough to begin
with. Thanks to sparse files you can create a huge file that only uses 1
block on disk. Then you can mmap that and it will use up more disk space
as you fill in data automatically.
MfG Goswin
next prev parent reply other threads:[~2010-12-17 0:36 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-16 11:31 Joel Reymont
2010-12-16 12:38 ` [Caml-list] " Jesper Louis Andersen
2010-12-16 13:13 ` Joel Reymont
2010-12-16 12:57 ` Gerd Stolpmann
2010-12-16 17:16 ` Richard W.M. Jones
2010-12-17 0:36 ` Goswin von Brederlow [this message]
2010-12-17 14:48 ` Richard W.M. Jones
2010-12-17 15:49 ` Joel Reymont
2010-12-17 19:05 ` Goswin von Brederlow
2010-12-18 9:56 ` Christophe Raffalli
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87aak5jkvg.fsf@frosties.localnet \
--to=goswin-v-b@web.de \
--cc=caml-list@yquem.inria.fr \
--cc=joelr1@gmail.com \
--cc=rich@annexia.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox