Eviction server statistics should track every reason that a page isn't queued for eviction

XMLWordPrintableJSON

    • Type: Improvement
    • Resolution: Unresolved
    • Priority: Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • None
    • Storage Engines, Storage Engines - Transactions
    • SE Transactions - 2025-11-07
    • 5

      As part of WT-12402 we added a number of statistics that track the reason behind why a page isn't queued for eviction. However we still have places in the tree_walk loop that continue, i.e. have found a ref but decided not to queue it that don't increment any statistic.

      This can make it not obvious as to why certain things aren't happening in the eviction server and add confusion to HELP tickets.

      These if statements in __evict_try_queue_page are relevant:

              if (__wt_atomic_load32(&btree->evict_walk_period) == 0 && !__wt_evict_aggressive(session))
                  return;
          }    /* Evaluate dirty page candidacy, when eviction is not aggressive. */
          if (!__wt_evict_aggressive(session) && modified && __evict_skip_dirty_candidate(session, page))
              return;fast:
          /* If the page can't be evicted, give up. */
          if (!__wt_page_can_evict(session, ref, NULL))
              return; 
      
          WT_ASSERT(session, evict_entry->ref == NULL);
          if (!__evict_push_candidate(session, queue, evict_entry, ref))
              return;

       

            Assignee:
            Unassigned
            Reporter:
            Luke Pearson
            Votes:
            0 Vote for this issue
            Watchers:
            7 Start watching this issue

              Created:
              Updated: