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

Evict pages with active updates

    • Type: Icon: Task Task
    • Resolution: Done
    • WT2.2
    • Affects Version/s: None
    • Component/s: None

      It would be nice if we could evict pages, even if there have been new updates since the reconciliation. Or possibly as an extension, if we could evict partial sets of updates from a page.

      The use case is that we sometimes see a cache with entries for a file like:

      cache dump: file: 150385 pages, 3187MB, 3113MB dirty
      5 < 1k
      21 < 8k
      148648 < 64k
      1507 < 512k
      45 < 1M
      159 < 5M
      0 > 5M
      

      The leaf page size is configured as 8k, so an in-memory page that is 5M spans 640 on-disk pages.

      The same file is showing quite a lot of reconciliation attempts that fail due to updates that could not be included:

      Nov 06 10:14:49 2250 . page reconciliation calls
      Nov 06 10:14:49 2175 . reconciliation failed because an update could not be included
      Nov 06 10:15:20 5257 . page reconciliation calls
      Nov 06 10:15:20 5203 . reconciliation failed because an update could not be included
      Nov 06 10:15:50 3781 . page reconciliation calls
      Nov 06 10:15:50 3726 . reconciliation failed because an update could not be included
      Nov 06 10:16:20 1351 . page reconciliation calls
      Nov 06 10:16:20 1343 . reconciliation failed because an update could not be included
      Nov 06 10:17:20 2 . page reconciliation calls
      Nov 06 10:17:20 0 . reconciliation failed because an update could not be included
      Nov 06 10:17:50 4 . page reconciliation calls
      Nov 06 10:17:50 2 . reconciliation failed because an update could not be included
      Nov 06 10:18:24 5 . page reconciliation calls
      Nov 06 10:18:24 2 . reconciliation failed because an update could not be included
      

      I've cherry picked the above statistics, but they are representative. The reduced numbers of reconciliation calls happens when the benchmark switches from loading data to the run (update and read) phase.

      NOTE: This workload fits in cache - so the eviction server isn't running regularly.

            Assignee:
            alexander.gorrod@mongodb.com Alexander Gorrod
            Reporter:
            alexander.gorrod@mongodb.com Alexander Gorrod
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: