ExportXMLWordPrintableJSON

    • Type: Improvement
    • Resolution: Unresolved
    • Priority: Major - P3
    • None
    • Affects Version/s: None
    • Component/s: Cache and Eviction
    • None
    • Storage Engines, Storage Engines - Transactions
    • 0.005
    • SE Transactions - 2026-11-06
    • None

      Problem

      Pages queued by __wt_evict_page_urgent are pages that must leave the cache soon, but nothing measures how long they wait between being queued and being evicted. The only urgent statistics are counts (pages queued for urgent eviction and its history store variant), so a change that delays urgent pages cannot be detected.

      This matters for WT-18961, which replaces the broadcast wake on the urgent push with a single signal when DIRTY_HARD is set. Application threads can take an urgent page only when DIRTY_HARD is set; eviction workers always can. A single signal may wake a thread that cannot take the page, and the page then waits for the next refill wake or a worker's 10 ms timeout. Throughput statistics do not show this.

      Proposed change

      • Record when a page is placed on the urgent queue, and when it is taken from it for eviction.
      • Add statistics: total and maximum wait time of urgent pages, and the number of urgent pages taken (so the mean can be derived). Follow the existing "time" statistics in stat_data.py for units and flags.
      • No change in eviction behaviour.

      Definition of done

      • The statistics are populated on a workload that queues urgent pages (WT-18829 reproducer r27_t32, about 200 to 1100 urgent pushes per second).
      • Measured overhead on the urgent push and urgent get paths is negligible.
      • A test checks that the count and total wait time move when an urgent page is queued and evicted.

      Related

      WT-18961 (bounded wake of eviction waiters) uses these statistics to show that the urgent push policy does not delay urgent pages.

            Assignee:
            Shoufu Du
            Reporter:
            Shoufu Du
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: