-
Type: Bug
-
Resolution: Done
-
Priority: Major - P3
-
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.