summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dist/stat_data.py30
-rw-r--r--src/btree/rec_evict.c3
-rw-r--r--src/btree/rec_write.c7
-rw-r--r--src/include/stat.h15
-rw-r--r--src/include/wiredtiger.in250
-rw-r--r--src/support/stat.c56
-rw-r--r--tools/stat_data.py2
7 files changed, 155 insertions, 208 deletions
diff --git a/dist/stat_data.py b/dist/stat_data.py
index f72767ca8af..1934e20bb39 100644
--- a/dist/stat_data.py
+++ b/dist/stat_data.py
@@ -63,6 +63,8 @@ connection_stats = [
Stat('cache_bytes_read', 'cache: bytes read into cache'),
Stat('cache_bytes_write', 'cache: bytes written from cache'),
Stat('cache_eviction_clean', 'cache: unmodified pages evicted'),
+ Stat('cache_eviction_deepen',
+ 'cache: page split during eviction deepened the tree'),
Stat('cache_eviction_dirty', 'cache: modified pages evicted'),
Stat('cache_eviction_checkpoint',
'cache: checkpoint blocked page eviction'),
@@ -76,18 +78,10 @@ connection_stats = [
Stat('cache_eviction_hazard',
'cache: hazard pointer blocked page eviction'),
Stat('cache_eviction_internal', 'cache: internal pages evicted'),
- Stat('cache_eviction_merge',
- 'cache: internal page merge operations completed'),
- Stat('cache_eviction_merge_fail',
- 'cache: internal page merge attempts that could not complete'),
- Stat('cache_eviction_merge_levels', 'cache: internal levels merged'),
Stat('cache_eviction_slow',
'cache: eviction server unable to reach eviction goal'),
- Stat('cache_eviction_split',
- 'cache: internal pages split during eviction'),
+ Stat('cache_eviction_split', 'cache: pages split during eviction'),
Stat('cache_eviction_walk', 'cache: pages walked for eviction'),
- Stat('cache_inmem_split',
- 'pages split because they were unable to be evicted'),
Stat('cache_pages_dirty',
'cache: tracked dirty pages in the cache', 'no_scale'),
Stat('cache_pages_inuse',
@@ -297,13 +291,6 @@ dsrc_stats = [
Stat('cache_eviction_hazard',
'cache: hazard pointer blocked page eviction'),
Stat('cache_eviction_internal', 'internal pages evicted'),
- Stat('cache_eviction_merge',
- 'cache: internal page merge operations completed'),
- Stat('cache_eviction_merge_fail',
- 'cache: internal page merge attempts that could not complete'),
- Stat('cache_eviction_merge_levels', 'cache: internal levels merged'),
- Stat('cache_inmem_split',
- 'pages split because they were unable to be evicted'),
Stat('cache_overflow_value',
'overflow values cached in memory', 'no_scale'),
Stat('cache_read', 'pages read into cache'),
@@ -338,11 +325,12 @@ dsrc_stats = [
Stat('rec_pages_eviction', 'page reconciliation calls for eviction'),
Stat('rec_skipped_update',
'reconciliation failed because an update could not be included'),
- Stat('rec_split_internal', 'reconciliation internal pages split'),
- Stat('rec_split_leaf', 'reconciliation leaf pages split'),
-
- Stat('rec_split_max',
- 'reconciliation maximum splits for a page',
+ Stat('rec_multiblock_internal',
+ 'reconciliation internal page multi-block writes'),
+ Stat('rec_multiblock_leaf',
+ 'reconciliation leaf page multi-block writes'),
+ Stat('rec_multiblock_max',
+ 'reconciliation maximum blocks required for a page',
'max_aggregate,no_scale'),
##########################################
diff --git a/src/btree/rec_evict.c b/src/btree/rec_evict.c
index 20b7af68841..dbec7813725 100644
--- a/src/btree/rec_evict.c
+++ b/src/btree/rec_evict.c
@@ -238,6 +238,7 @@ __rec_split_deepen(WT_SESSION_IMPL *session, WT_PAGE *page)
pindex = page->pg_intl_index;
entries = (uint32_t)btree->split_deepen;
+ WT_STAT_FAST_CONN_INCR(session, cache_eviction_deepen);
WT_VERBOSE_ERR(session, split,
"%p: %" PRIu32 " elements, splitting into %" PRIu32 " children",
page, pindex->entries, entries);
@@ -537,7 +538,7 @@ __rec_split_evict(WT_SESSION_IMPL *session, WT_REF *parent_ref, WT_PAGE *page)
/*
* We're already holding the parent page locked, see if the parent needs
- * to split.
+ * to split, deepening the tree.
*
* Page splits trickle up the tree, that is, as leaf pages grow large
* enough, they'll split into their parent, as that parent grows large
diff --git a/src/btree/rec_write.c b/src/btree/rec_write.c
index a985ce937a4..d6bbbdb4a59 100644
--- a/src/btree/rec_write.c
+++ b/src/btree/rec_write.c
@@ -4010,12 +4010,13 @@ __rec_write_wrapup(WT_SESSION_IMPL *session, WT_RECONCILE *r, WT_PAGE *page)
switch (page->type) {
case WT_PAGE_COL_INT:
case WT_PAGE_ROW_INT:
- WT_STAT_FAST_DATA_INCR(session, rec_split_internal);
+ WT_STAT_FAST_DATA_INCR(
+ session, rec_multiblock_internal);
break;
case WT_PAGE_COL_FIX:
case WT_PAGE_COL_VAR:
case WT_PAGE_ROW_LEAF:
- WT_STAT_FAST_DATA_INCR(session, rec_split_leaf);
+ WT_STAT_FAST_DATA_INCR(session, rec_multiblock_leaf);
break;
WT_ILLEGAL_VALUE(session);
}
@@ -4061,7 +4062,7 @@ err: __wt_scr_free(&tkey);
if (r->bnd_next > r->bnd_next_max) {
r->bnd_next_max = r->bnd_next;
WT_STAT_FAST_DATA_SET(
- session, rec_split_max, r->bnd_next_max);
+ session, rec_multiblock_max, r->bnd_next_max);
}
switch (page->type) {
diff --git a/src/include/stat.h b/src/include/stat.h
index 1b6f118b921..63db0e65d52 100644
--- a/src/include/stat.h
+++ b/src/include/stat.h
@@ -131,19 +131,16 @@ struct __wt_connection_stats {
WT_STATS cache_bytes_write;
WT_STATS cache_eviction_checkpoint;
WT_STATS cache_eviction_clean;
+ WT_STATS cache_eviction_deepen;
WT_STATS cache_eviction_dirty;
WT_STATS cache_eviction_fail;
WT_STATS cache_eviction_force;
WT_STATS cache_eviction_force_fail;
WT_STATS cache_eviction_hazard;
WT_STATS cache_eviction_internal;
- WT_STATS cache_eviction_merge;
- WT_STATS cache_eviction_merge_fail;
- WT_STATS cache_eviction_merge_levels;
WT_STATS cache_eviction_slow;
WT_STATS cache_eviction_split;
WT_STATS cache_eviction_walk;
- WT_STATS cache_inmem_split;
WT_STATS cache_pages_dirty;
WT_STATS cache_pages_inuse;
WT_STATS cache_read;
@@ -250,10 +247,6 @@ struct __wt_dsrc_stats {
WT_STATS cache_eviction_fail;
WT_STATS cache_eviction_hazard;
WT_STATS cache_eviction_internal;
- WT_STATS cache_eviction_merge;
- WT_STATS cache_eviction_merge_fail;
- WT_STATS cache_eviction_merge_levels;
- WT_STATS cache_inmem_split;
WT_STATS cache_overflow_value;
WT_STATS cache_read;
WT_STATS cache_read_overflow;
@@ -284,6 +277,9 @@ struct __wt_dsrc_stats {
WT_STATS lsm_lookup_no_bloom;
WT_STATS lsm_merge_throttle;
WT_STATS rec_dictionary;
+ WT_STATS rec_multiblock_internal;
+ WT_STATS rec_multiblock_leaf;
+ WT_STATS rec_multiblock_max;
WT_STATS rec_overflow_key_internal;
WT_STATS rec_overflow_key_leaf;
WT_STATS rec_overflow_value;
@@ -292,9 +288,6 @@ struct __wt_dsrc_stats {
WT_STATS rec_pages;
WT_STATS rec_pages_eviction;
WT_STATS rec_skipped_update;
- WT_STATS rec_split_internal;
- WT_STATS rec_split_leaf;
- WT_STATS rec_split_max;
WT_STATS session_compact;
WT_STATS session_cursor_open;
WT_STATS txn_update_conflict;
diff --git a/src/include/wiredtiger.in b/src/include/wiredtiger.in
index 5554a499d03..f3ff5ea51b2 100644
--- a/src/include/wiredtiger.in
+++ b/src/include/wiredtiger.in
@@ -2638,150 +2638,144 @@ extern int wiredtiger_extension_terminate(WT_CONNECTION *connection);
#define WT_STAT_CONN_CACHE_EVICTION_CHECKPOINT 1012
/*! cache: unmodified pages evicted */
#define WT_STAT_CONN_CACHE_EVICTION_CLEAN 1013
+/*! cache: page split during eviction deepened the tree */
+#define WT_STAT_CONN_CACHE_EVICTION_DEEPEN 1014
/*! cache: modified pages evicted */
-#define WT_STAT_CONN_CACHE_EVICTION_DIRTY 1014
+#define WT_STAT_CONN_CACHE_EVICTION_DIRTY 1015
/*! cache: pages selected for eviction unable to be evicted */
-#define WT_STAT_CONN_CACHE_EVICTION_FAIL 1015
+#define WT_STAT_CONN_CACHE_EVICTION_FAIL 1016
/*! cache: pages evicted because they exceeded the in-memory maximum */
-#define WT_STAT_CONN_CACHE_EVICTION_FORCE 1016
+#define WT_STAT_CONN_CACHE_EVICTION_FORCE 1017
/*! cache: failed eviction of pages that exceeded the in-memory maximum */
-#define WT_STAT_CONN_CACHE_EVICTION_FORCE_FAIL 1017
+#define WT_STAT_CONN_CACHE_EVICTION_FORCE_FAIL 1018
/*! cache: hazard pointer blocked page eviction */
-#define WT_STAT_CONN_CACHE_EVICTION_HAZARD 1018
+#define WT_STAT_CONN_CACHE_EVICTION_HAZARD 1019
/*! cache: internal pages evicted */
-#define WT_STAT_CONN_CACHE_EVICTION_INTERNAL 1019
-/*! cache: internal page merge operations completed */
-#define WT_STAT_CONN_CACHE_EVICTION_MERGE 1020
-/*! cache: internal page merge attempts that could not complete */
-#define WT_STAT_CONN_CACHE_EVICTION_MERGE_FAIL 1021
-/*! cache: internal levels merged */
-#define WT_STAT_CONN_CACHE_EVICTION_MERGE_LEVELS 1022
+#define WT_STAT_CONN_CACHE_EVICTION_INTERNAL 1020
/*! cache: eviction server unable to reach eviction goal */
-#define WT_STAT_CONN_CACHE_EVICTION_SLOW 1023
-/*! cache: internal pages split during eviction */
-#define WT_STAT_CONN_CACHE_EVICTION_SPLIT 1024
+#define WT_STAT_CONN_CACHE_EVICTION_SLOW 1021
+/*! cache: pages split during eviction */
+#define WT_STAT_CONN_CACHE_EVICTION_SPLIT 1022
/*! cache: pages walked for eviction */
-#define WT_STAT_CONN_CACHE_EVICTION_WALK 1025
-/*! pages split because they were unable to be evicted */
-#define WT_STAT_CONN_CACHE_INMEM_SPLIT 1026
+#define WT_STAT_CONN_CACHE_EVICTION_WALK 1023
/*! cache: tracked dirty pages in the cache */
-#define WT_STAT_CONN_CACHE_PAGES_DIRTY 1027
+#define WT_STAT_CONN_CACHE_PAGES_DIRTY 1024
/*! cache: pages currently held in the cache */
-#define WT_STAT_CONN_CACHE_PAGES_INUSE 1028
+#define WT_STAT_CONN_CACHE_PAGES_INUSE 1025
/*! cache: pages read into cache */
-#define WT_STAT_CONN_CACHE_READ 1029
+#define WT_STAT_CONN_CACHE_READ 1026
/*! cache: pages written from cache */
-#define WT_STAT_CONN_CACHE_WRITE 1030
+#define WT_STAT_CONN_CACHE_WRITE 1027
/*! pthread mutex condition wait calls */
-#define WT_STAT_CONN_COND_WAIT 1031
+#define WT_STAT_CONN_COND_WAIT 1028
/*! cursor creation */
-#define WT_STAT_CONN_CURSOR_CREATE 1032
+#define WT_STAT_CONN_CURSOR_CREATE 1029
/*! Btree cursor insert calls */
-#define WT_STAT_CONN_CURSOR_INSERT 1033
+#define WT_STAT_CONN_CURSOR_INSERT 1030
/*! Btree cursor next calls */
-#define WT_STAT_CONN_CURSOR_NEXT 1034
+#define WT_STAT_CONN_CURSOR_NEXT 1031
/*! Btree cursor prev calls */
-#define WT_STAT_CONN_CURSOR_PREV 1035
+#define WT_STAT_CONN_CURSOR_PREV 1032
/*! Btree cursor remove calls */
-#define WT_STAT_CONN_CURSOR_REMOVE 1036
+#define WT_STAT_CONN_CURSOR_REMOVE 1033
/*! Btree cursor reset calls */
-#define WT_STAT_CONN_CURSOR_RESET 1037
+#define WT_STAT_CONN_CURSOR_RESET 1034
/*! Btree cursor search calls */
-#define WT_STAT_CONN_CURSOR_SEARCH 1038
+#define WT_STAT_CONN_CURSOR_SEARCH 1035
/*! Btree cursor search near calls */
-#define WT_STAT_CONN_CURSOR_SEARCH_NEAR 1039
+#define WT_STAT_CONN_CURSOR_SEARCH_NEAR 1036
/*! Btree cursor update calls */
-#define WT_STAT_CONN_CURSOR_UPDATE 1040
+#define WT_STAT_CONN_CURSOR_UPDATE 1037
/*! dhandle: connection dhandles swept */
-#define WT_STAT_CONN_DH_CONN_HANDLES 1041
+#define WT_STAT_CONN_DH_CONN_HANDLES 1038
/*! dhandle: connection sweep attempts */
-#define WT_STAT_CONN_DH_CONN_SWEEPS 1042
+#define WT_STAT_CONN_DH_CONN_SWEEPS 1039
/*! dhandle: session dhandles swept */
-#define WT_STAT_CONN_DH_SESSION_HANDLES 1043
+#define WT_STAT_CONN_DH_SESSION_HANDLES 1040
/*! dhandle: session sweep attempts */
-#define WT_STAT_CONN_DH_SESSION_SWEEPS 1044
+#define WT_STAT_CONN_DH_SESSION_SWEEPS 1041
/*! dhandle: sweeps conflicting with evict */
-#define WT_STAT_CONN_DH_SWEEP_EVICT 1045
+#define WT_STAT_CONN_DH_SWEEP_EVICT 1042
/*! files currently open */
-#define WT_STAT_CONN_FILE_OPEN 1046
+#define WT_STAT_CONN_FILE_OPEN 1043
/*! log: log buffer size increases */
-#define WT_STAT_CONN_LOG_BUFFER_GROW 1047
+#define WT_STAT_CONN_LOG_BUFFER_GROW 1044
/*! log: total log buffer size */
-#define WT_STAT_CONN_LOG_BUFFER_SIZE 1048
+#define WT_STAT_CONN_LOG_BUFFER_SIZE 1045
/*! log: user provided log bytes written */
-#define WT_STAT_CONN_LOG_BYTES_USER 1049
+#define WT_STAT_CONN_LOG_BYTES_USER 1046
/*! log: log bytes written */
-#define WT_STAT_CONN_LOG_BYTES_WRITTEN 1050
+#define WT_STAT_CONN_LOG_BYTES_WRITTEN 1047
/*! log: maximum log file size */
-#define WT_STAT_CONN_LOG_MAX_FILESIZE 1051
+#define WT_STAT_CONN_LOG_MAX_FILESIZE 1048
/*! log: log read operations */
-#define WT_STAT_CONN_LOG_READS 1052
+#define WT_STAT_CONN_LOG_READS 1049
/*! log: records processed by log scan */
-#define WT_STAT_CONN_LOG_SCAN_RECORDS 1053
+#define WT_STAT_CONN_LOG_SCAN_RECORDS 1050
/*! log: log scan records requiring two reads */
-#define WT_STAT_CONN_LOG_SCAN_REREADS 1054
+#define WT_STAT_CONN_LOG_SCAN_REREADS 1051
/*! log: log scan operations */
-#define WT_STAT_CONN_LOG_SCANS 1055
+#define WT_STAT_CONN_LOG_SCANS 1052
/*! log: consolidated slot closures */
-#define WT_STAT_CONN_LOG_SLOT_CLOSES 1056
+#define WT_STAT_CONN_LOG_SLOT_CLOSES 1053
/*! log: logging bytes consolidated */
-#define WT_STAT_CONN_LOG_SLOT_CONSOLIDATED 1057
+#define WT_STAT_CONN_LOG_SLOT_CONSOLIDATED 1054
/*! log: consolidated slot joins */
-#define WT_STAT_CONN_LOG_SLOT_JOINS 1058
+#define WT_STAT_CONN_LOG_SLOT_JOINS 1055
/*! log: consolidated slot join races */
-#define WT_STAT_CONN_LOG_SLOT_RACES 1059
+#define WT_STAT_CONN_LOG_SLOT_RACES 1056
/*! log: slots selected for switching that were unavailable */
-#define WT_STAT_CONN_LOG_SLOT_SWITCH_FAILS 1060
+#define WT_STAT_CONN_LOG_SLOT_SWITCH_FAILS 1057
/*! log: record size exceeded maximum */
-#define WT_STAT_CONN_LOG_SLOT_TOOBIG 1061
+#define WT_STAT_CONN_LOG_SLOT_TOOBIG 1058
/*! log: failed to find a slot large enough for record */
-#define WT_STAT_CONN_LOG_SLOT_TOOSMALL 1062
+#define WT_STAT_CONN_LOG_SLOT_TOOSMALL 1059
/*! log: consolidated slot join transitions */
-#define WT_STAT_CONN_LOG_SLOT_TRANSITIONS 1063
+#define WT_STAT_CONN_LOG_SLOT_TRANSITIONS 1060
/*! log: log sync operations */
-#define WT_STAT_CONN_LOG_SYNC 1064
+#define WT_STAT_CONN_LOG_SYNC 1061
/*! log: log write operations */
-#define WT_STAT_CONN_LOG_WRITES 1065
+#define WT_STAT_CONN_LOG_WRITES 1062
/*! sleep for LSM checkpoint throttle */
-#define WT_STAT_CONN_LSM_CHECKPOINT_THROTTLE 1066
+#define WT_STAT_CONN_LSM_CHECKPOINT_THROTTLE 1063
/*! sleep for LSM merge throttle */
-#define WT_STAT_CONN_LSM_MERGE_THROTTLE 1067
+#define WT_STAT_CONN_LSM_MERGE_THROTTLE 1064
/*! rows merged in an LSM tree */
-#define WT_STAT_CONN_LSM_ROWS_MERGED 1068
+#define WT_STAT_CONN_LSM_ROWS_MERGED 1065
/*! memory allocations */
-#define WT_STAT_CONN_MEMORY_ALLOCATION 1069
+#define WT_STAT_CONN_MEMORY_ALLOCATION 1066
/*! memory frees */
-#define WT_STAT_CONN_MEMORY_FREE 1070
+#define WT_STAT_CONN_MEMORY_FREE 1067
/*! memory re-allocations */
-#define WT_STAT_CONN_MEMORY_GROW 1071
+#define WT_STAT_CONN_MEMORY_GROW 1068
/*! total read I/Os */
-#define WT_STAT_CONN_READ_IO 1072
+#define WT_STAT_CONN_READ_IO 1069
/*! page reconciliation calls */
-#define WT_STAT_CONN_REC_PAGES 1073
+#define WT_STAT_CONN_REC_PAGES 1070
/*! page reconciliation calls for eviction */
-#define WT_STAT_CONN_REC_PAGES_EVICTION 1074
+#define WT_STAT_CONN_REC_PAGES_EVICTION 1071
/*! reconciliation failed because an update could not be included */
-#define WT_STAT_CONN_REC_SKIPPED_UPDATE 1075
+#define WT_STAT_CONN_REC_SKIPPED_UPDATE 1072
/*! pthread mutex shared lock read-lock calls */
-#define WT_STAT_CONN_RWLOCK_READ 1076
+#define WT_STAT_CONN_RWLOCK_READ 1073
/*! pthread mutex shared lock write-lock calls */
-#define WT_STAT_CONN_RWLOCK_WRITE 1077
+#define WT_STAT_CONN_RWLOCK_WRITE 1074
/*! open cursor count */
-#define WT_STAT_CONN_SESSION_CURSOR_OPEN 1078
+#define WT_STAT_CONN_SESSION_CURSOR_OPEN 1075
/*! transactions */
-#define WT_STAT_CONN_TXN_BEGIN 1079
+#define WT_STAT_CONN_TXN_BEGIN 1076
/*! transaction checkpoints */
-#define WT_STAT_CONN_TXN_CHECKPOINT 1080
+#define WT_STAT_CONN_TXN_CHECKPOINT 1077
/*! transaction checkpoint currently running */
-#define WT_STAT_CONN_TXN_CHECKPOINT_RUNNING 1081
+#define WT_STAT_CONN_TXN_CHECKPOINT_RUNNING 1078
/*! transactions committed */
-#define WT_STAT_CONN_TXN_COMMIT 1082
+#define WT_STAT_CONN_TXN_COMMIT 1079
/*! transaction failures due to cache overflow */
-#define WT_STAT_CONN_TXN_FAIL_CACHE 1083
+#define WT_STAT_CONN_TXN_FAIL_CACHE 1080
/*! transactions rolled-back */
-#define WT_STAT_CONN_TXN_ROLLBACK 1084
+#define WT_STAT_CONN_TXN_ROLLBACK 1081
/*! total write I/Os */
-#define WT_STAT_CONN_WRITE_IO 1085
+#define WT_STAT_CONN_WRITE_IO 1082
/*!
* @}
@@ -2869,103 +2863,95 @@ extern int wiredtiger_extension_terminate(WT_CONNECTION *connection);
#define WT_STAT_DSRC_CACHE_EVICTION_HAZARD 2038
/*! internal pages evicted */
#define WT_STAT_DSRC_CACHE_EVICTION_INTERNAL 2039
-/*! cache: internal page merge operations completed */
-#define WT_STAT_DSRC_CACHE_EVICTION_MERGE 2040
-/*! cache: internal page merge attempts that could not complete */
-#define WT_STAT_DSRC_CACHE_EVICTION_MERGE_FAIL 2041
-/*! cache: internal levels merged */
-#define WT_STAT_DSRC_CACHE_EVICTION_MERGE_LEVELS 2042
-/*! pages split because they were unable to be evicted */
-#define WT_STAT_DSRC_CACHE_INMEM_SPLIT 2043
/*! overflow values cached in memory */
-#define WT_STAT_DSRC_CACHE_OVERFLOW_VALUE 2044
+#define WT_STAT_DSRC_CACHE_OVERFLOW_VALUE 2040
/*! pages read into cache */
-#define WT_STAT_DSRC_CACHE_READ 2045
+#define WT_STAT_DSRC_CACHE_READ 2041
/*! overflow pages read into cache */
-#define WT_STAT_DSRC_CACHE_READ_OVERFLOW 2046
+#define WT_STAT_DSRC_CACHE_READ_OVERFLOW 2042
/*! pages written from cache */
-#define WT_STAT_DSRC_CACHE_WRITE 2047
+#define WT_STAT_DSRC_CACHE_WRITE 2043
/*! raw compression call failed, no additional data available */
-#define WT_STAT_DSRC_COMPRESS_RAW_FAIL 2048
+#define WT_STAT_DSRC_COMPRESS_RAW_FAIL 2044
/*! raw compression call failed, additional data available */
-#define WT_STAT_DSRC_COMPRESS_RAW_FAIL_TEMPORARY 2049
+#define WT_STAT_DSRC_COMPRESS_RAW_FAIL_TEMPORARY 2045
/*! raw compression call succeeded */
-#define WT_STAT_DSRC_COMPRESS_RAW_OK 2050
+#define WT_STAT_DSRC_COMPRESS_RAW_OK 2046
/*! compressed pages read */
-#define WT_STAT_DSRC_COMPRESS_READ 2051
+#define WT_STAT_DSRC_COMPRESS_READ 2047
/*! compressed pages written */
-#define WT_STAT_DSRC_COMPRESS_WRITE 2052
+#define WT_STAT_DSRC_COMPRESS_WRITE 2048
/*! page written failed to compress */
-#define WT_STAT_DSRC_COMPRESS_WRITE_FAIL 2053
+#define WT_STAT_DSRC_COMPRESS_WRITE_FAIL 2049
/*! page written was too small to compress */
-#define WT_STAT_DSRC_COMPRESS_WRITE_TOO_SMALL 2054
+#define WT_STAT_DSRC_COMPRESS_WRITE_TOO_SMALL 2050
/*! cursor creation */
-#define WT_STAT_DSRC_CURSOR_CREATE 2055
+#define WT_STAT_DSRC_CURSOR_CREATE 2051
/*! cursor insert calls */
-#define WT_STAT_DSRC_CURSOR_INSERT 2056
+#define WT_STAT_DSRC_CURSOR_INSERT 2052
/*! bulk-loaded cursor-insert calls */
-#define WT_STAT_DSRC_CURSOR_INSERT_BULK 2057
+#define WT_STAT_DSRC_CURSOR_INSERT_BULK 2053
/*! cursor-insert key and value bytes inserted */
-#define WT_STAT_DSRC_CURSOR_INSERT_BYTES 2058
+#define WT_STAT_DSRC_CURSOR_INSERT_BYTES 2054
/*! cursor next calls */
-#define WT_STAT_DSRC_CURSOR_NEXT 2059
+#define WT_STAT_DSRC_CURSOR_NEXT 2055
/*! cursor prev calls */
-#define WT_STAT_DSRC_CURSOR_PREV 2060
+#define WT_STAT_DSRC_CURSOR_PREV 2056
/*! cursor remove calls */
-#define WT_STAT_DSRC_CURSOR_REMOVE 2061
+#define WT_STAT_DSRC_CURSOR_REMOVE 2057
/*! cursor-remove key bytes removed */
-#define WT_STAT_DSRC_CURSOR_REMOVE_BYTES 2062
+#define WT_STAT_DSRC_CURSOR_REMOVE_BYTES 2058
/*! cursor reset calls */
-#define WT_STAT_DSRC_CURSOR_RESET 2063
+#define WT_STAT_DSRC_CURSOR_RESET 2059
/*! cursor search calls */
-#define WT_STAT_DSRC_CURSOR_SEARCH 2064
+#define WT_STAT_DSRC_CURSOR_SEARCH 2060
/*! cursor search near calls */
-#define WT_STAT_DSRC_CURSOR_SEARCH_NEAR 2065
+#define WT_STAT_DSRC_CURSOR_SEARCH_NEAR 2061
/*! cursor update calls */
-#define WT_STAT_DSRC_CURSOR_UPDATE 2066
+#define WT_STAT_DSRC_CURSOR_UPDATE 2062
/*! cursor-update value bytes updated */
-#define WT_STAT_DSRC_CURSOR_UPDATE_BYTES 2067
+#define WT_STAT_DSRC_CURSOR_UPDATE_BYTES 2063
/*! sleep for LSM checkpoint throttle */
-#define WT_STAT_DSRC_LSM_CHECKPOINT_THROTTLE 2068
+#define WT_STAT_DSRC_LSM_CHECKPOINT_THROTTLE 2064
/*! chunks in the LSM tree */
-#define WT_STAT_DSRC_LSM_CHUNK_COUNT 2069
+#define WT_STAT_DSRC_LSM_CHUNK_COUNT 2065
/*! highest merge generation in the LSM tree */
-#define WT_STAT_DSRC_LSM_GENERATION_MAX 2070
+#define WT_STAT_DSRC_LSM_GENERATION_MAX 2066
/*! queries that could have benefited from a Bloom filter that did not
* exist */
-#define WT_STAT_DSRC_LSM_LOOKUP_NO_BLOOM 2071
+#define WT_STAT_DSRC_LSM_LOOKUP_NO_BLOOM 2067
/*! sleep for LSM merge throttle */
-#define WT_STAT_DSRC_LSM_MERGE_THROTTLE 2072
+#define WT_STAT_DSRC_LSM_MERGE_THROTTLE 2068
/*! reconciliation dictionary matches */
-#define WT_STAT_DSRC_REC_DICTIONARY 2073
+#define WT_STAT_DSRC_REC_DICTIONARY 2069
+/*! reconciliation internal page multi-block writes */
+#define WT_STAT_DSRC_REC_MULTIBLOCK_INTERNAL 2070
+/*! reconciliation leaf page multi-block writes */
+#define WT_STAT_DSRC_REC_MULTIBLOCK_LEAF 2071
+/*! reconciliation maximum blocks required for a page */
+#define WT_STAT_DSRC_REC_MULTIBLOCK_MAX 2072
/*! reconciliation internal-page overflow keys */
-#define WT_STAT_DSRC_REC_OVERFLOW_KEY_INTERNAL 2074
+#define WT_STAT_DSRC_REC_OVERFLOW_KEY_INTERNAL 2073
/*! reconciliation leaf-page overflow keys */
-#define WT_STAT_DSRC_REC_OVERFLOW_KEY_LEAF 2075
+#define WT_STAT_DSRC_REC_OVERFLOW_KEY_LEAF 2074
/*! reconciliation overflow values written */
-#define WT_STAT_DSRC_REC_OVERFLOW_VALUE 2076
+#define WT_STAT_DSRC_REC_OVERFLOW_VALUE 2075
/*! reconciliation pages deleted */
-#define WT_STAT_DSRC_REC_PAGE_DELETE 2077
+#define WT_STAT_DSRC_REC_PAGE_DELETE 2076
/*! reconciliation page checksum matches */
-#define WT_STAT_DSRC_REC_PAGE_MATCH 2078
+#define WT_STAT_DSRC_REC_PAGE_MATCH 2077
/*! page reconciliation calls */
-#define WT_STAT_DSRC_REC_PAGES 2079
+#define WT_STAT_DSRC_REC_PAGES 2078
/*! page reconciliation calls for eviction */
-#define WT_STAT_DSRC_REC_PAGES_EVICTION 2080
+#define WT_STAT_DSRC_REC_PAGES_EVICTION 2079
/*! reconciliation failed because an update could not be included */
-#define WT_STAT_DSRC_REC_SKIPPED_UPDATE 2081
-/*! reconciliation internal pages split */
-#define WT_STAT_DSRC_REC_SPLIT_INTERNAL 2082
-/*! reconciliation leaf pages split */
-#define WT_STAT_DSRC_REC_SPLIT_LEAF 2083
-/*! reconciliation maximum splits for a page */
-#define WT_STAT_DSRC_REC_SPLIT_MAX 2084
+#define WT_STAT_DSRC_REC_SKIPPED_UPDATE 2080
/*! object compaction */
-#define WT_STAT_DSRC_SESSION_COMPACT 2085
+#define WT_STAT_DSRC_SESSION_COMPACT 2081
/*! open cursor count */
-#define WT_STAT_DSRC_SESSION_CURSOR_OPEN 2086
+#define WT_STAT_DSRC_SESSION_CURSOR_OPEN 2082
/*! update conflicts */
-#define WT_STAT_DSRC_TXN_UPDATE_CONFLICT 2087
+#define WT_STAT_DSRC_TXN_UPDATE_CONFLICT 2083
/*! @} */
/*
* Statistics section: END
diff --git a/src/support/stat.c b/src/support/stat.c
index 2ce10318563..6fb7de125a9 100644
--- a/src/support/stat.c
+++ b/src/support/stat.c
@@ -57,14 +57,6 @@ __wt_stat_init_dsrc_stats(WT_DSRC_STATS *stats)
stats->cache_eviction_hazard.desc =
"cache: hazard pointer blocked page eviction";
stats->cache_eviction_internal.desc = "internal pages evicted";
- stats->cache_eviction_merge.desc =
- "cache: internal page merge operations completed";
- stats->cache_eviction_merge_fail.desc =
- "cache: internal page merge attempts that could not complete";
- stats->cache_eviction_merge_levels.desc =
- "cache: internal levels merged";
- stats->cache_inmem_split.desc =
- "pages split because they were unable to be evicted";
stats->cache_overflow_value.desc = "overflow values cached in memory";
stats->cache_read.desc = "pages read into cache";
stats->cache_read_overflow.desc = "overflow pages read into cache";
@@ -102,6 +94,12 @@ __wt_stat_init_dsrc_stats(WT_DSRC_STATS *stats)
"queries that could have benefited from a Bloom filter that did not exist";
stats->lsm_merge_throttle.desc = "sleep for LSM merge throttle";
stats->rec_dictionary.desc = "reconciliation dictionary matches";
+ stats->rec_multiblock_internal.desc =
+ "reconciliation internal page multi-block writes";
+ stats->rec_multiblock_leaf.desc =
+ "reconciliation leaf page multi-block writes";
+ stats->rec_multiblock_max.desc =
+ "reconciliation maximum blocks required for a page";
stats->rec_overflow_key_internal.desc =
"reconciliation internal-page overflow keys";
stats->rec_overflow_key_leaf.desc =
@@ -115,9 +113,6 @@ __wt_stat_init_dsrc_stats(WT_DSRC_STATS *stats)
"page reconciliation calls for eviction";
stats->rec_skipped_update.desc =
"reconciliation failed because an update could not be included";
- stats->rec_split_internal.desc = "reconciliation internal pages split";
- stats->rec_split_leaf.desc = "reconciliation leaf pages split";
- stats->rec_split_max.desc = "reconciliation maximum splits for a page";
stats->session_compact.desc = "object compaction";
stats->session_cursor_open.desc = "open cursor count";
stats->txn_update_conflict.desc = "update conflicts";
@@ -169,10 +164,6 @@ __wt_stat_refresh_dsrc_stats(void *stats_arg)
stats->cache_eviction_fail.v = 0;
stats->cache_eviction_hazard.v = 0;
stats->cache_eviction_internal.v = 0;
- stats->cache_eviction_merge.v = 0;
- stats->cache_eviction_merge_fail.v = 0;
- stats->cache_eviction_merge_levels.v = 0;
- stats->cache_inmem_split.v = 0;
stats->cache_overflow_value.v = 0;
stats->cache_read.v = 0;
stats->cache_read_overflow.v = 0;
@@ -203,6 +194,9 @@ __wt_stat_refresh_dsrc_stats(void *stats_arg)
stats->lsm_lookup_no_bloom.v = 0;
stats->lsm_merge_throttle.v = 0;
stats->rec_dictionary.v = 0;
+ stats->rec_multiblock_internal.v = 0;
+ stats->rec_multiblock_leaf.v = 0;
+ stats->rec_multiblock_max.v = 0;
stats->rec_overflow_key_internal.v = 0;
stats->rec_overflow_key_leaf.v = 0;
stats->rec_overflow_value.v = 0;
@@ -211,9 +205,6 @@ __wt_stat_refresh_dsrc_stats(void *stats_arg)
stats->rec_pages.v = 0;
stats->rec_pages_eviction.v = 0;
stats->rec_skipped_update.v = 0;
- stats->rec_split_internal.v = 0;
- stats->rec_split_leaf.v = 0;
- stats->rec_split_max.v = 0;
stats->session_compact.v = 0;
stats->txn_update_conflict.v = 0;
}
@@ -257,10 +248,6 @@ __wt_stat_aggregate_dsrc_stats(const void *child, const void *parent)
p->cache_eviction_fail.v += c->cache_eviction_fail.v;
p->cache_eviction_hazard.v += c->cache_eviction_hazard.v;
p->cache_eviction_internal.v += c->cache_eviction_internal.v;
- p->cache_eviction_merge.v += c->cache_eviction_merge.v;
- p->cache_eviction_merge_fail.v += c->cache_eviction_merge_fail.v;
- p->cache_eviction_merge_levels.v += c->cache_eviction_merge_levels.v;
- p->cache_inmem_split.v += c->cache_inmem_split.v;
p->cache_overflow_value.v += c->cache_overflow_value.v;
p->cache_read.v += c->cache_read.v;
p->cache_read_overflow.v += c->cache_read_overflow.v;
@@ -291,6 +278,10 @@ __wt_stat_aggregate_dsrc_stats(const void *child, const void *parent)
p->lsm_lookup_no_bloom.v += c->lsm_lookup_no_bloom.v;
p->lsm_merge_throttle.v += c->lsm_merge_throttle.v;
p->rec_dictionary.v += c->rec_dictionary.v;
+ p->rec_multiblock_internal.v += c->rec_multiblock_internal.v;
+ p->rec_multiblock_leaf.v += c->rec_multiblock_leaf.v;
+ if (c->rec_multiblock_max.v > p->rec_multiblock_max.v)
+ p->rec_multiblock_max.v = c->rec_multiblock_max.v;
p->rec_overflow_key_internal.v += c->rec_overflow_key_internal.v;
p->rec_overflow_key_leaf.v += c->rec_overflow_key_leaf.v;
p->rec_overflow_value.v += c->rec_overflow_value.v;
@@ -299,10 +290,6 @@ __wt_stat_aggregate_dsrc_stats(const void *child, const void *parent)
p->rec_pages.v += c->rec_pages.v;
p->rec_pages_eviction.v += c->rec_pages_eviction.v;
p->rec_skipped_update.v += c->rec_skipped_update.v;
- p->rec_split_internal.v += c->rec_split_internal.v;
- p->rec_split_leaf.v += c->rec_split_leaf.v;
- if (c->rec_split_max.v > p->rec_split_max.v)
- p->rec_split_max.v = c->rec_split_max.v;
p->session_compact.v += c->session_compact.v;
p->session_cursor_open.v += c->session_cursor_open.v;
p->txn_update_conflict.v += c->txn_update_conflict.v;
@@ -330,6 +317,8 @@ __wt_stat_init_connection_stats(WT_CONNECTION_STATS *stats)
stats->cache_eviction_checkpoint.desc =
"cache: checkpoint blocked page eviction";
stats->cache_eviction_clean.desc = "cache: unmodified pages evicted";
+ stats->cache_eviction_deepen.desc =
+ "cache: page split during eviction deepened the tree";
stats->cache_eviction_dirty.desc = "cache: modified pages evicted";
stats->cache_eviction_fail.desc =
"cache: pages selected for eviction unable to be evicted";
@@ -340,19 +329,11 @@ __wt_stat_init_connection_stats(WT_CONNECTION_STATS *stats)
stats->cache_eviction_hazard.desc =
"cache: hazard pointer blocked page eviction";
stats->cache_eviction_internal.desc = "cache: internal pages evicted";
- stats->cache_eviction_merge.desc =
- "cache: internal page merge operations completed";
- stats->cache_eviction_merge_fail.desc =
- "cache: internal page merge attempts that could not complete";
- stats->cache_eviction_merge_levels.desc =
- "cache: internal levels merged";
stats->cache_eviction_slow.desc =
"cache: eviction server unable to reach eviction goal";
stats->cache_eviction_split.desc =
- "cache: internal pages split during eviction";
+ "cache: pages split during eviction";
stats->cache_eviction_walk.desc = "cache: pages walked for eviction";
- stats->cache_inmem_split.desc =
- "pages split because they were unable to be evicted";
stats->cache_pages_dirty.desc =
"cache: tracked dirty pages in the cache";
stats->cache_pages_inuse.desc =
@@ -444,19 +425,16 @@ __wt_stat_refresh_connection_stats(void *stats_arg)
stats->cache_bytes_write.v = 0;
stats->cache_eviction_checkpoint.v = 0;
stats->cache_eviction_clean.v = 0;
+ stats->cache_eviction_deepen.v = 0;
stats->cache_eviction_dirty.v = 0;
stats->cache_eviction_fail.v = 0;
stats->cache_eviction_force.v = 0;
stats->cache_eviction_force_fail.v = 0;
stats->cache_eviction_hazard.v = 0;
stats->cache_eviction_internal.v = 0;
- stats->cache_eviction_merge.v = 0;
- stats->cache_eviction_merge_fail.v = 0;
- stats->cache_eviction_merge_levels.v = 0;
stats->cache_eviction_slow.v = 0;
stats->cache_eviction_split.v = 0;
stats->cache_eviction_walk.v = 0;
- stats->cache_inmem_split.v = 0;
stats->cache_pages_dirty.v = 0;
stats->cache_read.v = 0;
stats->cache_write.v = 0;
diff --git a/tools/stat_data.py b/tools/stat_data.py
index 8157a48dfed..e5bc0d51284 100644
--- a/tools/stat_data.py
+++ b/tools/stat_data.py
@@ -35,6 +35,6 @@ no_scale_per_second_list = [
'overflow values cached in memory',
'chunks in the LSM tree',
'highest merge generation in the LSM tree',
- 'reconciliation maximum splits for a page',
+ 'reconciliation maximum blocks required for a page',
'open cursor count',
]