Pinned WiredTiger eviction-worker tuning and handle-lock backoff
Parent: WiredTiger cache eviction and dirty ratio · Published reference · snapshot 2026-11-02
↓ Facts as markdownall context files
Source-anchored research for Pinned WiredTiger eviction-worker tuning and handle-lock backoff. Run status: COMPLETED.
These notes link each claim to its source. Some citations identify archived research reports that are no longer hosted on this site. A published reference means the content is available; it does not certify independent review or accuracy.Read the editorial policy and follow the sources before relying on a claim.
Problems, failure modes and limitations
- Evidence limitation: the pinned tuner uses eviction rate as its success metric. The University of British Columbia case study reports that experienced WiredTiger developers could not debug difficult performance issues from code knowledge alone and needed high-quality performance information. These sources support inspecting the tuner and backoff as mechanisms; they do not establish that a particular worker setting universally improves workload latency. (medium confidence) [source 1] [source 2]
Facts and statements
- In MongoDB 8.0.0’s vendored WiredTiger code, __evict_lock_handle_list repeatedly calls __wt_try_readlock while the result is EBUSY and pass_intr is zero. Failed attempts yield while spins is below WT_THOUSAND, then call __wt_sleep(0, WT_THOUSAND). The source comment states that this custom backoff lets the eviction server notice interrupts quickly. (low confidence) [source 1] [source 2]
- In MongoDB 8.0.0’s eviction pass, if eviction_progress does not change and either loop < 100 or evict_aggressive_score is below WT_EVICT_SCORE_MAX, the pass increments cache_eviction_server_slept and waits on evict_cond with WT_THOUSAND as the timeout. Its comment explains that eviction walks hold the handle-list lock and can block operations that free cache space, and that this wait must be interruptible. (low confidence) [source 1] [source 2]
- MongoDB 8.0.0’s handle-removal and eviction paths coordinate through pass_intr. In __wti_conn_dhandle_discard_single, a session that does not already hold the handle-list lock increments pass_intr before taking the handle-list write lock to remove a handle and decrements it afterward. The eviction lock-acquisition loop checks that counter. The caller treats EBUSY from that helper as a reason to return, with a deadlock-avoidance comment about clearing walks without the handle-list lock. (medium confidence) [source 1] [source 2] [source 3]
Children
- No children recorded.