Vitaly Zuevsky wrote: >>> 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 CTO, Symas Corp. http://www.symas.com Director, Highland Sun http://highlandsun.com/hyc/ Chief Architect, OpenLDAP http://www.openldap.org/project/
