diff options
-rw-r--r-- | dist/stat_data.py | 30 | ||||
-rw-r--r-- | src/btree/rec_evict.c | 3 | ||||
-rw-r--r-- | src/btree/rec_write.c | 7 | ||||
-rw-r--r-- | src/include/stat.h | 15 | ||||
-rw-r--r-- | src/include/wiredtiger.in | 250 | ||||
-rw-r--r-- | src/support/stat.c | 56 | ||||
-rw-r--r-- | tools/stat_data.py | 2 |
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', ] |