Details
-
Bug
-
Status: Closed
-
Major - P3
-
Resolution: Done
-
None
-
None
-
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.