When a checkpoint visits a tree, it first waits for eviction to drain in order to be sure that all eviction obeys the btree->checkpointing state.
The current process for achieving this involves incrementing cache->pass_intr, which interrupts the eviction server so that it releases cache->evict_pass_lock. However, in the process, the eviction server also forgets all walk points in all trees.
Checkpoint repeats this process for every tree in the cache, which can cause eviction to stall repeatedly while a checkpoint is active. Reduce the impact of checkpoints on eviction by making the interrupt more lightweight.