> >>> Vitaly Zuevsky wrote:
> >>> Memory pressure isn't my problem. I see 2-15 major faults a second
> >>> in the event loop of the reader thread, which can effectively stall
> >>> the loop for anything between 1-400ms (I measure iowait jiffies of
> >>> the pid). I understand the faults result from the writer thread,
> >>> actively modifying the file mmaped by the reader. I assume writes to
> >>> the file invalidate corresponding pages of the reader, and those
> >>> invalid pages only get updated (via major faults) on first access by
> >>> the reader. If not locking, perhaps madvise/willneed combination could
> help, what you think?
> >>>
> >> I think if this is your concern you should just use WRITEMAP and
> >> forget about it.
> >>
> >> --
> >>   -- Howard Chu
> >
> > Thanks for pointing me out to writemap option
> > https://lmdb.readthedocs.io/en/release/#lmdb.Environment
> > Re ACID implications it will have -
> > metasync=True, sync=True, map_async=False, mode=493, create=True,
> > readahead=True, writemap=True will this ensure integrity on disk after
> every write? What sequence of events (contrasted with writemap=False)
> could lead to data corruption here?
> 
> 
> With sync=true it has the same integrity guarantees as writemap=false. There
> is no possibility of data corruption.
> 
> metasync flag is irrelevant when sync is set.
> map_async flag is irrelevant when sync is set.
> 
> --
>   -- Howard Chu

You mentioned I need writemap=True to solve my original problem. So I am 
looking to not jeopardize integrity by adding that.
You say I can use sync=true and writemap=True combination to achieve it? Or 
those flags are mutually exclusive?

Reply via email to