Uploaded image for project: 'WiredTiger'
  1. WiredTiger
  2. WT-6590

Allow eviction of clean pages during reconciliation

    • Type: Icon: Improvement Improvement
    • Resolution: Unresolved
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • Labels:
      None

      WT-6463 allows a session to perform eviction while it has an open history store cursor. To do this safely, this change introduced a new check in wt_cache_eviction_check() to prevent the session from calling eviction if it is currently doing reconciliation. This check is required because eviction could wind up doing reconciliation, and the reconciliation code isn't re-entrant.

      sulabh.mahajan observed that we should still be able to evict clean pages here, since they won't require reconciliation.  So it is possible that we could restructure this check and/or the eviction code to allow only clean page evictions when we are already in reconciliation.

      We should investigate whether this would provide a substantive improvement in eviction, and if so figure out how to make the necessary changes.

      The fix here probably isn't simple as eliminating the check in wt_cache_eviction_check(). That check serves the second purpose of preventing us from re-entering eviction.  My preliminary work on WT-6463 found that if we let wt_cache_eviction_check() call into eviction via wt_cache_eviction_worker(), the session can hang. 

            Assignee:
            backlog-server-storage-engines [DO NOT USE] Backlog - Storage Engines Team
            Reporter:
            keith.smith@mongodb.com Keith Smith
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: