On Fri, Sep 10, 2010 at 3:52 PM, Michele Pradella <
michele.prade...@selea.com> wrote:

>  After some tests, with the new sqlite3.c source, seams that the
> behavior is better than before. So I see the -shm and -wal file grow up,
> and in VMMap I can see the Mapped File of -shm growing up, but not so
> much as before.
>

Great to hear.


> The only thing I'm thinking about is the behavior that I obtain if I
> have 1 connection that is kept active from the beginning of the
> application till the end. In this situation (with the DB connection
> always active) I can see only Mapped File grow up, till 5MB....is there
> a limit that make impossible to the Mapped File to waste all the memory
> even if I leave the connection open?
>


It seems that now you're concerned sqlite doesn't use memory enough :)
Actually memory mapping here is not the thing that should grow significantly
(let's not take the bug into account). Every 8 bytes in shm (and in memory
mapping) is dedicated to a single page in the database file, in theory you
should divide total affected (changed/updated) database bytes by 128 (=
1024/8 when page_size = 1024) to see how much memory mapping is going to
occupy. I suppose since the latest fix also takes alignment into account, we
see 64k and 32k jumping, so you can safely take shm size, multiply it by 2
and this will be an estimate for the mapping address space sqlite will need.


And have in mind, it's address space, not memory used, there are much
confusion about memory in windows (and possibly in any other modern OS).
When I investigated this thing, I wished Task manager had a value called
"Address space" and also Windows had an error "Out of Address space".
Currently I wrote a simple program that emulates the bug, it increases the
file by 32k and maps the whole current file leaving the handles open.
Imagine, this program occupies 2G and gives an error in a fraction of a
second. So there are no actual memory allocation, just reserving pages (this
time Intel processor architecture pages) in 386-adress space. The actual
error appears after the MapViewOfFile call and the text is 'Not enough
storage is available to process this command' (Code: 9)

Max
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to