Uploaded image for project: 'WiredTiger'
  1. WiredTiger
  2. WT-6306

Do not force evict HS pages because of deleted items

    • Type: Icon: Bug Bug
    • Resolution: Fixed
    • Priority: Icon: Major - P3 Major - P3
    • WT10.0.0, 4.4.0-rc8, 4.7.0
    • Affects Version/s: None
    • Component/s: None
    • None
    • 5
    • Storage - Ra 2020-06-01

      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
      

        1. deleted-count.png
          deleted-count.png
          137 kB
        2. marking-dirty-no-help.png
          marking-dirty-no-help.png
          128 kB

            Assignee:
            sulabh.mahajan@mongodb.com Sulabh Mahajan
            Reporter:
            sulabh.mahajan@mongodb.com Sulabh Mahajan
            Votes:
            0 Vote for this issue
            Watchers:
            10 Start watching this issue

              Created:
              Updated:
              Resolved: