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

Enabling checkpoints in test/format leads to reduced concurrency

    • Type: Icon: Bug Bug
    • Resolution: Done
    • Priority: Icon: Major - P3 Major - P3
    • WT2.9.0
    • Affects Version/s: None
    • Component/s: None
    • None

      I've noticed that when configuring test/format with many threads and checkpoints enabled, workloads tend to spend a lot of time with only a single thread inside the WiredTiger library.

      For example, if I run test/format with the following configuration:

      ############################################
      #  RUN PARAMETERS
      ############################################
      checkpoints=1
      compression=none
      data_source=table
      encryption=none
      evict_max=4
      file_type=row-store
      logging=0
      logging_compression=none
      salvage=0
      threads=20
      timer=100
      verify=0
      wiredtiger_config=
      ############################################
      

      I regularly see stacks from pmp like:

           14 __GI___pthread_rwlock_wrlock,ops,__wt_btcur_prev,__wt_btcur_update,__unpack_read
            3 __sanitizer::GetThreadStackAndTls,__unpack_read
            3 __pthread_cond_timedwait,__wt_cond_wait_signal
            1 __wt_huffman_decode,__ovfl_read
            1 __select_nocancel,__evict_pass,__evict_server,start_thread
            1 __pthread_cond_timedwait,__wt_cond_wait_signal,__wt_txn_idle_cache_check,__cursor_func_init,__wt_btcur_search,__curfile_search,row_remove,ops,start_thread
            1 __pthread_cond_timedwait,__wt_cond_wait_signal,__wt_session_get_btree,__sweep_server,start_thread
            1 __pthread_cond_timedwait,__wt_cond_wait_signal,__wt_cursor_set_valuev,__unpack_read
            1 __pthread_cond_timedwait,__wt_cond_wait_signal,__wt_cache_eviction_worker,__wt_cache_eviction_check,__cursor_enter,__curfile_enter,__cursor_func_init,__wt_btcur_insert,__curfile_insert,row_insert,ops,start_thread
            1 __pthread_cond_timedwait,__wt_cond_wait_signal,__wt_buf_set,__cursor_enter,__curfile_enter,__cursor_func_init,__wt_btcur_search,__curfile_search,read_row,ops,start_thread
            1 __pthread_cond_timedwait,__wt_cond_wait_signal,printf_common,__wt_cache_eviction_worker,__wt_cache_eviction_check,__cursor_enter,__curfile_enter,__cursor_func_init,__wt_btcur_search,__curfile_search,read_row,ops,start_thread
            1 __nanosleep_nocancel,wts_ops,main
      

      If I disable checkpoints I see more threads running more of the time.

      This may be "works as designed", but I think it'd be better to have more threads in the WiredTiger library than less.

            Assignee:
            keith.bostic@mongodb.com Keith Bostic (Inactive)
            Reporter:
            alexander.gorrod@mongodb.com Alexander Gorrod
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: