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

Checkpoint slow down LSM insert rate

    • Type: Icon: Task Task
    • Resolution: Done
    • WT2.5.0
    • Affects Version/s: None
    • Component/s: None
    • None

      A recent change has caused LSM inserts to become throttled due to checkpoint delays. I reproduced this by comparing this older revision to this newer revision.

      I ran the wtperf medium-lsm.wtperf workload with the following modifications:

      --- a/bench/wtperf/runners/medium-lsm.wtperf
      +++ b/bench/wtperf/runners/medium-lsm.wtperf
      @@ -1,8 +1,8 @@
       # wtperf options file: medium lsm configuration
      -conn_config="cache_size=1G,lsm_manager=(worker_thread_max=6)"
      +conn_config="cache_size=1G,lsm_manager=(worker_thread_max=6),statistics=[all],statistics_log=(wait=10)"
       table_config="lsm=(chunk_size=100MB),type=lsm,os_cache_dirty_max=16MB"
       icount=50000000
       report_interval=5
      -run_time=120
      +run_time=0
       populate_threads=1
       threads=((count=16,reads=1))
      

      This reliably shows a load time of 191 seconds with the recent version, and a load time of between 70 and 93 seconds with the older version. Looking at the statistics from the newer version I see:

      0 WT_TEST LSM: sleep for LSM checkpoint throttle
      0 WT_TEST LSM: sleep for LSM checkpoint throttle
      4268541 WT_TEST LSM: sleep for LSM checkpoint throttle
      9585508 WT_TEST LSM: sleep for LSM checkpoint throttle
      11302548 WT_TEST LSM: sleep for LSM checkpoint throttle
      16111426 WT_TEST LSM: sleep for LSM checkpoint throttle
      24486204 WT_TEST LSM: sleep for LSM checkpoint throttle
      32732854 WT_TEST LSM: sleep for LSM checkpoint throttle
      40813056 WT_TEST LSM: sleep for LSM checkpoint throttle
      49329066 WT_TEST LSM: sleep for LSM checkpoint throttle
      58206389 WT_TEST LSM: sleep for LSM checkpoint throttle
      63431713 WT_TEST LSM: sleep for LSM checkpoint throttle
      67025681 WT_TEST LSM: sleep for LSM checkpoint throttle
      72764320 WT_TEST LSM: sleep for LSM checkpoint throttle
      81677852 WT_TEST LSM: sleep for LSM checkpoint throttle
      87054242 WT_TEST LSM: sleep for LSM checkpoint throttle
      93103667 WT_TEST LSM: sleep for LSM checkpoint throttle
      99943623 WT_TEST LSM: sleep for LSM checkpoint throttle
      108588119 WT_TEST LSM: sleep for LSM checkpoint throttle
      112786881 WT_TEST LSM: sleep for LSM checkpoint throttle
      120708096 WT_TEST LSM: sleep for LSM checkpoint throttle
      127593771 WT_TEST LSM: sleep for LSM checkpoint throttle
      

      With the older revision I see:

      0 WT_TEST LSM: sleep for LSM checkpoint throttle
      0 WT_TEST LSM: sleep for LSM checkpoint throttle
      0 WT_TEST LSM: sleep for LSM checkpoint throttle
      0 WT_TEST LSM: sleep for LSM checkpoint throttle
      0 WT_TEST LSM: sleep for LSM checkpoint throttle
      0 WT_TEST LSM: sleep for LSM checkpoint throttle
      0 WT_TEST LSM: sleep for LSM checkpoint throttle
      0 WT_TEST LSM: sleep for LSM checkpoint throttle
      

      I'll dig deeper to figure out which of the recent changes triggered this different behavior.

            Assignee:
            Unassigned Unassigned
            Reporter:
            alexander.gorrod@mongodb.com Alexander Gorrod
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved: