[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: Freeing unused pages between two revisions...

Emmanuel Lécharny wrote:
Hi guys,

we have had long discussions with Howard on LMDB about the release of
pages that are not anymore in use. This is a critical part of a MVCC
based B-tree, as each update will copy many pages, and we want to re-use
the copied pages.

The problem is that those copied pages may be still in use by older
readers. Let's quickly explain how it all works.

This is a good analysis, but I have to state that the investigation down this path has stalled for a major reason:

The current reader/writer interaction depends on the fact that we only need to know the oldest reader, and that we can be lazy about determining what the oldest reader is. Once you start looking at intervals between ordered ages of readers, that means you require continuously up to date reader status, which means you require highly consistent updating and reading of the readers table. That imposes memory consistency guarantees that we currently don't require, and adding those guarantees has a significant performance cost.

  -- Howard Chu
  CTO, Symas Corp.           http://www.symas.com
  Director, Highland Sun     http://highlandsun.com/hyc/
  Chief Architect, OpenLDAP  http://www.openldap.org/project/