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

Enabling checkpoints in test/format leads to reduced concurrency

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major - P3
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: WT2.9.0
    • Labels:
      None

      Description

      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.

        Attachments

          Activity

            People

            • Assignee:
              keith.bostic Keith Bostic
              Reporter:
              alexander.gorrod Alexander Gorrod
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: