The way we use history store cursors for any history store operations, we call reset on the cursors very often. Reset (and cached cursor reuse), next/prev force evicts a page if there are a lot of deleted entries on a page. This often forces the history store pages to be evicted and then read back again.
Find more efficient ways to deal with this situation.
Using test/format with the following configuration to reproduce the issue:
assert.commit_timestamp=0 assert.read_timestamp=0 backup=0 backup.incremental=off btree.bitcnt=5 btree.compression=none btree.dictionary=0 btree.huffman_key=0 btree.huffman_value=0 btree.internal_key_truncation=1 btree.internal_page_max=9 btree.key_gap=20 btree.key_max=30 btree.key_min=25 btree.leaf_page_max=12 btree.memory_page_max=2 btree.prefix_compression=1 btree.prefix_compression_min=7 btree.repeat_data_pct=60 btree.reverse=0 btree.split_pct=94 btree.value_max=1024 btree.value_min=4 cache=20 cache.evict_max=3 cache.minimum=20 checkpoint=on checkpoint.log_size=73 checkpoint.wait=30 disk.checksum=uncompressed disk.data_extend=0 disk.direct_io=0 disk.encryption=none disk.firstfit=0 disk.mmap=1 disk.mmap_all=0 format.abort=0 format.independent_thread_rng=1 format.major_timeout=0 logging=1 logging.archive=1 logging.compression=zlib logging.file_max=414535 logging.prealloc=0 lsm.auto_throttle=1 lsm.bloom=1 lsm.bloom_bit_count=18 lsm.bloom_hash_count=13 lsm.bloom_oldest=1 lsm.chunk_size=5 lsm.merge_max=5 lsm.worker_threads=3 ops.alter=1 ops.compaction=0 ops.pct.delete=5 ops.pct.insert=1 ops.pct.modify=55 ops.pct.read=0 ops.pct.write=39 ops.prepare=0 ops.random_cursor=0 ops.rebalance=1 ops.salvage=1 ops.truncate=1 ops.verify=1 quiet=1 runs=1 runs.in_memory=0 runs.ops=0 runs.rows=1000000 runs.source=table runs.threads=4 runs.timer=6 runs.type=row-store statistics=0 statistics.server=1 stress.aggressive_sweep=0 stress.checkpoint=0 stress.hs_sweep=0 stress.split_1=0 stress.split_2=0 stress.split_3=0 stress.split_4=0 stress.split_5=0 stress.split_6=0 stress.split_7=0 stress.split_8=0 transaction.frequency=100 transaction.isolation=snapshot transaction.timestamps=1 wiredtiger.config= wiredtiger.rwlock=1 wiredtiger.leak_memory=0