diff options
author | sueloverso <sue@mongodb.com> | 2016-07-28 11:57:06 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-07-28 11:57:06 -0400 |
commit | 8a8507cd60b5dd60bc1fa2978864d6b6421c9cad (patch) | |
tree | 8db208eb709c13d7ffa457440dfeb392e583baa0 | |
parent | d7a15d1798054c22fae98bb90b9badb24792d966 (diff) | |
download | mongo-8a8507cd60b5dd60bc1fa2978864d6b6421c9cad.tar.gz |
WT-2793 Enhance statistics related to overflow values (#2912)
* WT-2793 Remove very long running config. Rename the one we run.
* Fix overflow stats. Make 130K overflow test use btree.
* Add line to upgrading doc stating stat field removed.
-rw-r--r-- | bench/wtperf/runners/overflow-10k-short.wtperf | 19 | ||||
-rw-r--r-- | bench/wtperf/runners/overflow-10k.wtperf | 16 | ||||
-rw-r--r-- | bench/wtperf/runners/overflow-130k-short.wtperf | 19 | ||||
-rw-r--r-- | bench/wtperf/runners/overflow-130k.wtperf | 18 | ||||
-rw-r--r-- | dist/stat_data.py | 3 | ||||
-rw-r--r-- | src/btree/bt_ovfl.c | 2 | ||||
-rw-r--r-- | src/conn/conn_cache.c | 8 | ||||
-rw-r--r-- | src/docs/upgrading.dox | 9 | ||||
-rw-r--r-- | src/include/btree.i | 9 | ||||
-rw-r--r-- | src/include/cache.h | 1 | ||||
-rw-r--r-- | src/include/stat.h | 3 | ||||
-rw-r--r-- | src/include/wiredtiger.in | 260 | ||||
-rw-r--r-- | src/support/stat.c | 9 | ||||
-rw-r--r-- | tools/wtstats/stat_data.py | 3 |
14 files changed, 173 insertions, 206 deletions
diff --git a/bench/wtperf/runners/overflow-10k-short.wtperf b/bench/wtperf/runners/overflow-10k-short.wtperf deleted file mode 100644 index 47228079db8..00000000000 --- a/bench/wtperf/runners/overflow-10k-short.wtperf +++ /dev/null @@ -1,19 +0,0 @@ -# wtperf options file: simulate riak and a short form of its voxer config. -# The configuration for the connection and table are from riak and the -# specification of the data (count, size, threads) is from basho_bench. -# -#conn_config="cache_size=21G,checkpoint_sync=false,mmap=false,session_max=1024,statistics=(fast,clear),statistics_log=(wait=600)" -conn_config="cache_size=21G,checkpoint_sync=false,mmap=false,session_max=1024,lsm_manager=(worker_thread_max=6)" -compact=true -compression="snappy" -sess_config="isolation=snapshot" -table_config="internal_page_max=128K,lsm=(bloom_config=(leaf_page_max=8MB),bloom_bit_count=28,bloom_hash_count=19,bloom_oldest=true,chunk_size=100MB),type=lsm,leaf_page_max=16K,os_cache_dirty_max=16MB" -icount=15000 -key_sz=40 -value_sz=10000 -max_latency=2000 -populate_threads=1 -report_interval=5 -random_value=true -run_time=300 -threads=((count=10,read=1),(count=10,update=1)) diff --git a/bench/wtperf/runners/overflow-10k.wtperf b/bench/wtperf/runners/overflow-10k.wtperf index 9b4ed2acaee..5d7eeea9cf2 100644 --- a/bench/wtperf/runners/overflow-10k.wtperf +++ b/bench/wtperf/runners/overflow-10k.wtperf @@ -1,9 +1,7 @@ -# wtperf options file: simulate riak and its test1 and test2 configuration -# The configuration for the connection and table are from riak and the -# specification of the data (count, size, threads) is from basho_bench. # -#conn_config="cache_size=21G,checkpoint_sync=false,mmap=false,session_max=1024,statistics=(fast,clear),statistics_log=(wait=600)" -conn_config="cache_size=21G,checkpoint_sync=false,mmap=false,session_max=1024,lsm_manager=(worker_thread_max=6)" +# Run with overflow items and LSM. +# +conn_config="cache_size=21G,checkpoint_sync=false,mmap=false,lsm_manager=(worker_thread_max=6),statistics=(fast),statistics_log=(wait=10)" compact=true compression="snappy" sess_config="isolation=snapshot" @@ -13,8 +11,8 @@ key_sz=40 value_sz=10000 max_latency=2000 populate_threads=1 -report_interval=10 +report_interval=5 random_value=true -run_time=18000 -sample_interval=10 -threads=((count=20,read=1,update=1)) +run_time=300 +threads=((count=10,read=1),(count=10,update=1)) +warmup=30 diff --git a/bench/wtperf/runners/overflow-130k-short.wtperf b/bench/wtperf/runners/overflow-130k-short.wtperf deleted file mode 100644 index 83f67062bf8..00000000000 --- a/bench/wtperf/runners/overflow-130k-short.wtperf +++ /dev/null @@ -1,19 +0,0 @@ -# wtperf options file: simulate riak and a short form of its voxer config. -# The configuration for the connection and table are from riak and the -# specification of the data (count, size, threads) is from basho_bench. -# -#conn_config="cache_size=21G,checkpoint_sync=false,mmap=false,session_max=1024,statistics=(fast,clear),statistics_log=(wait=600)" -conn_config="cache_size=21G,checkpoint_sync=false,mmap=false,session_max=1024,lsm_manager=(worker_thread_max=6)" -compact=true -compression="snappy" -sess_config="isolation=snapshot" -table_config="internal_page_max=128K,lsm=(bloom_config=(leaf_page_max=8MB),bloom_bit_count=28,bloom_hash_count=19,bloom_oldest=true,chunk_size=100MB),type=lsm,leaf_page_max=16K,os_cache_dirty_max=16MB" -icount=15000 -key_sz=40 -value_sz=130000 -max_latency=2000 -populate_threads=1 -report_interval=5 -random_value=true -run_time=300 -threads=((count=10,read=1),(count=10,update=1)) diff --git a/bench/wtperf/runners/overflow-130k.wtperf b/bench/wtperf/runners/overflow-130k.wtperf index a3439f0c575..2be01afd08a 100644 --- a/bench/wtperf/runners/overflow-130k.wtperf +++ b/bench/wtperf/runners/overflow-130k.wtperf @@ -1,20 +1,18 @@ -# wtperf options file: simulate riak and its test1 and test2 configuration -# The configuration for the connection and table are from riak and the -# specification of the data (count, size, threads) is from basho_bench. # -#conn_config="cache_size=21G,checkpoint_sync=false,mmap=false,session_max=1024,statistics=(fast,clear),statistics_log=(wait=600)" -conn_config="cache_size=21G,checkpoint_sync=false,mmap=false,session_max=1024,lsm_manager=(worker_thread_max=6)" +# Run with very large overflow items and btree. +# +conn_config="cache_size=21G,checkpoint_sync=false,mmap=false,statistics=(fast),statistics_log=(wait=10)" compact=true compression="snappy" sess_config="isolation=snapshot" -table_config="internal_page_max=128K,lsm=(bloom_config=(leaf_page_max=8MB),bloom_bit_count=28,bloom_hash_count=19,bloom_oldest=true,chunk_size=100MB),type=lsm,leaf_page_max=16K,os_cache_dirty_max=16MB" +table_config="internal_page_max=128K,type=file,leaf_page_max=16K,os_cache_dirty_max=16MB,leaf_value_max=32K" icount=15000 key_sz=40 value_sz=130000 max_latency=2000 populate_threads=1 -report_interval=10 +report_interval=5 random_value=true -run_time=18000 -sample_interval=10 -threads=((count=20,read=1,update=1)) +run_time=300 +threads=((count=10,read=1),(count=10,update=1)) +warmup=30 diff --git a/dist/stat_data.py b/dist/stat_data.py index b7a1caa6701..576a66e981b 100644 --- a/dist/stat_data.py +++ b/dist/stat_data.py @@ -175,7 +175,6 @@ connection_stats = [ CacheStat('cache_bytes_leaf', 'tracked bytes belonging to leaf pages in the cache', 'no_clear,no_scale,size'), CacheStat('cache_bytes_max', 'maximum bytes configured', 'no_clear,no_scale,size'), CacheStat('cache_bytes_other', 'bytes not belonging to page images in the cache', 'no_clear,no_scale,size'), - CacheStat('cache_bytes_overflow', 'tracked bytes belonging to overflow pages in the cache', 'no_clear,no_scale,size'), CacheStat('cache_bytes_read', 'bytes read into cache', 'size'), CacheStat('cache_bytes_write', 'bytes written from cache', 'size'), CacheStat('cache_eviction_aggressive_set', 'eviction currently operating in aggressive mode', 'no_clear,no_scale'), @@ -218,12 +217,14 @@ connection_stats = [ CacheStat('cache_inmem_splittable', 'in-memory page passed criteria to be split'), CacheStat('cache_lookaside_insert', 'lookaside table insert calls'), CacheStat('cache_lookaside_remove', 'lookaside table remove calls'), + CacheStat('cache_overflow_value', 'overflow values cached in memory', 'no_scale'), CacheStat('cache_overhead', 'percentage overhead', 'no_clear,no_scale'), CacheStat('cache_pages_dirty', 'tracked dirty pages in the cache', 'no_clear,no_scale'), CacheStat('cache_pages_inuse', 'pages currently held in the cache', 'no_clear,no_scale'), CacheStat('cache_pages_requested', 'pages requested from the cache'), CacheStat('cache_read', 'pages read into cache'), CacheStat('cache_read_lookaside', 'pages read into cache requiring lookaside entries'), + CacheStat('cache_read_overflow', 'overflow pages read into cache'), CacheStat('cache_write', 'pages written from cache'), CacheStat('cache_write_lookaside', 'page written requiring lookaside records'), CacheStat('cache_write_restore', 'pages written requiring in-memory restoration'), diff --git a/src/btree/bt_ovfl.c b/src/btree/bt_ovfl.c index fbe361e000a..1f080041a23 100644 --- a/src/btree/bt_ovfl.c +++ b/src/btree/bt_ovfl.c @@ -33,6 +33,7 @@ __ovfl_read(WT_SESSION_IMPL *session, store->data = WT_PAGE_HEADER_BYTE(btree, dsk); store->size = dsk->u.datalen; + WT_STAT_FAST_CONN_INCR(session, cache_read_overflow); WT_STAT_FAST_DATA_INCR(session, cache_read_overflow); return (0); @@ -208,6 +209,7 @@ __wt_ovfl_cache(WT_SESSION_IMPL *session, */ if (!visible) { WT_RET(__ovfl_cache(session, page, vpack)); + WT_STAT_FAST_CONN_INCR(session, cache_overflow_value); WT_STAT_FAST_DATA_INCR(session, cache_overflow_value); } diff --git a/src/conn/conn_cache.c b/src/conn/conn_cache.c index 4fccac88bc1..960d86f3e13 100644 --- a/src/conn/conn_cache.c +++ b/src/conn/conn_cache.c @@ -201,7 +201,7 @@ __wt_cache_stats_update(WT_SESSION_IMPL *session) WT_CACHE *cache; WT_CONNECTION_IMPL *conn; WT_CONNECTION_STATS **stats; - uint64_t inuse, leaf, used; + uint64_t inuse, leaf; conn = S2C(session); cache = conn->cache; @@ -212,8 +212,8 @@ __wt_cache_stats_update(WT_SESSION_IMPL *session) * There are races updating the different cache tracking values so * be paranoid calculating the leaf byte usage. */ - used = cache->bytes_overflow + cache->bytes_internal; - leaf = inuse > used ? inuse - used : 0; + leaf = inuse > cache->bytes_internal ? + inuse - cache->bytes_internal : 0; WT_STAT_SET(session, stats, cache_bytes_max, conn->cache_size); WT_STAT_SET(session, stats, cache_bytes_inuse, inuse); @@ -230,8 +230,6 @@ __wt_cache_stats_update(WT_SESSION_IMPL *session) WT_STAT_SET(session, stats, cache_bytes_leaf, leaf); WT_STAT_SET( session, stats, cache_bytes_other, __wt_cache_bytes_other(cache)); - WT_STAT_SET( - session, stats, cache_bytes_overflow, cache->bytes_overflow); WT_STAT_SET(session, stats, cache_eviction_maximum_page_size, cache->evict_max_page_size); diff --git a/src/docs/upgrading.dox b/src/docs/upgrading.dox index 4af8482a635..db40f5c2b55 100644 --- a/src/docs/upgrading.dox +++ b/src/docs/upgrading.dox @@ -19,6 +19,15 @@ of the path may no longer be specified. Applications depending on the ability to set statistics log file names will require modification. </dd> +<dt>Deprecated statistics field</dt> +<dd> +The connection statistic \c WT_STAT_CONN_CACHE_BYTES_OVERFLOW has been +removed. Overflow information is now available in the +\c WT_STAT_CONN_CACHE_BYTES_OVERFLOW and \c WT_STAT_CONN_CACHE_OVERFLOW_VALUE. +Applications specifically looking for that statistic will require +modification. +</dd> + </dl><hr> @section version_280 Upgrading to Version 2.8.0 <dl> diff --git a/src/include/btree.i b/src/include/btree.i index 623ac75c50a..d8676f9ba60 100644 --- a/src/include/btree.i +++ b/src/include/btree.i @@ -94,11 +94,9 @@ __wt_cache_page_inmem_incr(WT_SESSION_IMPL *session, WT_PAGE *page, size_t size) (void)__wt_atomic_add64(&cache->bytes_dirty, size); (void)__wt_atomic_addsize(&page->modify->bytes_dirty, size); } - /* Track internal and overflow size in cache. */ + /* Track internal size in cache. */ if (WT_PAGE_IS_INTERNAL(page)) (void)__wt_atomic_add64(&cache->bytes_internal, size); - else if (page->type == WT_PAGE_OVFL) - (void)__wt_atomic_add64(&cache->bytes_overflow, size); } /* @@ -225,13 +223,10 @@ __wt_cache_page_inmem_decr(WT_SESSION_IMPL *session, WT_PAGE *page, size_t size) session, &page->memory_footprint, size, "WT_PAGE.memory_footprint"); if (__wt_page_is_modified(page)) __wt_cache_page_byte_dirty_decr(session, page, size); - /* Track internal and overflow size in cache. */ + /* Track internal size in cache. */ if (WT_PAGE_IS_INTERNAL(page)) __wt_cache_decr_check_uint64(session, &cache->bytes_internal, size, "WT_CACHE.bytes_internal"); - else if (page->type == WT_PAGE_OVFL) - __wt_cache_decr_check_uint64(session, - &cache->bytes_overflow, size, "WT_CACHE.bytes_overflow"); } /* diff --git a/src/include/cache.h b/src/include/cache.h index dbc4074330a..b5f09db3732 100644 --- a/src/include/cache.h +++ b/src/include/cache.h @@ -82,7 +82,6 @@ struct __wt_cache { uint64_t bytes_inmem; /* Bytes/pages in memory */ uint64_t pages_inmem; uint64_t bytes_internal; /* Bytes of internal pages */ - uint64_t bytes_overflow; /* Bytes of overflow pages */ uint64_t bytes_read; /* Bytes read into memory */ uint64_t app_waits; /* User threads waited for cache */ diff --git a/src/include/stat.h b/src/include/stat.h index 252e6fbb972..d40f1278611 100644 --- a/src/include/stat.h +++ b/src/include/stat.h @@ -312,6 +312,8 @@ struct __wt_connection_stats { int64_t cache_eviction_maximum_page_size; int64_t cache_eviction_dirty; int64_t cache_eviction_app_dirty; + int64_t cache_read_overflow; + int64_t cache_overflow_value; int64_t cache_eviction_deepen; int64_t cache_write_lookaside; int64_t cache_pages_inuse; @@ -331,7 +333,6 @@ struct __wt_connection_stats { int64_t cache_overhead; int64_t cache_bytes_internal; int64_t cache_bytes_leaf; - int64_t cache_bytes_overflow; int64_t cache_bytes_dirty; int64_t cache_pages_dirty; int64_t cache_eviction_clean; diff --git a/src/include/wiredtiger.in b/src/include/wiredtiger.in index 8f1249481eb..5f1754ccffa 100644 --- a/src/include/wiredtiger.in +++ b/src/include/wiredtiger.in @@ -4322,267 +4322,269 @@ extern int wiredtiger_extension_terminate(WT_CONNECTION *connection); #define WT_STAT_CONN_CACHE_EVICTION_DIRTY 1065 /*! cache: modified pages evicted by application threads */ #define WT_STAT_CONN_CACHE_EVICTION_APP_DIRTY 1066 +/*! cache: overflow pages read into cache */ +#define WT_STAT_CONN_CACHE_READ_OVERFLOW 1067 +/*! cache: overflow values cached in memory */ +#define WT_STAT_CONN_CACHE_OVERFLOW_VALUE 1068 /*! cache: page split during eviction deepened the tree */ -#define WT_STAT_CONN_CACHE_EVICTION_DEEPEN 1067 +#define WT_STAT_CONN_CACHE_EVICTION_DEEPEN 1069 /*! cache: page written requiring lookaside records */ -#define WT_STAT_CONN_CACHE_WRITE_LOOKASIDE 1068 +#define WT_STAT_CONN_CACHE_WRITE_LOOKASIDE 1070 /*! cache: pages currently held in the cache */ -#define WT_STAT_CONN_CACHE_PAGES_INUSE 1069 +#define WT_STAT_CONN_CACHE_PAGES_INUSE 1071 /*! cache: pages evicted because they exceeded the in-memory maximum */ -#define WT_STAT_CONN_CACHE_EVICTION_FORCE 1070 +#define WT_STAT_CONN_CACHE_EVICTION_FORCE 1072 /*! cache: pages evicted because they had chains of deleted items */ -#define WT_STAT_CONN_CACHE_EVICTION_FORCE_DELETE 1071 +#define WT_STAT_CONN_CACHE_EVICTION_FORCE_DELETE 1073 /*! cache: pages evicted by application threads */ -#define WT_STAT_CONN_CACHE_EVICTION_APP 1072 +#define WT_STAT_CONN_CACHE_EVICTION_APP 1074 /*! cache: pages queued for eviction */ -#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED 1073 +#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED 1075 /*! cache: pages queued for urgent eviction */ -#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED_OLDEST 1074 +#define WT_STAT_CONN_CACHE_EVICTION_PAGES_QUEUED_OLDEST 1076 /*! cache: pages read into cache */ -#define WT_STAT_CONN_CACHE_READ 1075 +#define WT_STAT_CONN_CACHE_READ 1077 /*! cache: pages read into cache requiring lookaside entries */ -#define WT_STAT_CONN_CACHE_READ_LOOKASIDE 1076 +#define WT_STAT_CONN_CACHE_READ_LOOKASIDE 1078 /*! cache: pages requested from the cache */ -#define WT_STAT_CONN_CACHE_PAGES_REQUESTED 1077 +#define WT_STAT_CONN_CACHE_PAGES_REQUESTED 1079 /*! cache: pages seen by eviction walk */ -#define WT_STAT_CONN_CACHE_EVICTION_PAGES_SEEN 1078 +#define WT_STAT_CONN_CACHE_EVICTION_PAGES_SEEN 1080 /*! cache: pages selected for eviction unable to be evicted */ -#define WT_STAT_CONN_CACHE_EVICTION_FAIL 1079 +#define WT_STAT_CONN_CACHE_EVICTION_FAIL 1081 /*! cache: pages walked for eviction */ -#define WT_STAT_CONN_CACHE_EVICTION_WALK 1080 +#define WT_STAT_CONN_CACHE_EVICTION_WALK 1082 /*! cache: pages written from cache */ -#define WT_STAT_CONN_CACHE_WRITE 1081 +#define WT_STAT_CONN_CACHE_WRITE 1083 /*! cache: pages written requiring in-memory restoration */ -#define WT_STAT_CONN_CACHE_WRITE_RESTORE 1082 +#define WT_STAT_CONN_CACHE_WRITE_RESTORE 1084 /*! cache: percentage overhead */ -#define WT_STAT_CONN_CACHE_OVERHEAD 1083 +#define WT_STAT_CONN_CACHE_OVERHEAD 1085 /*! cache: tracked bytes belonging to internal pages in the cache */ -#define WT_STAT_CONN_CACHE_BYTES_INTERNAL 1084 +#define WT_STAT_CONN_CACHE_BYTES_INTERNAL 1086 /*! cache: tracked bytes belonging to leaf pages in the cache */ -#define WT_STAT_CONN_CACHE_BYTES_LEAF 1085 -/*! cache: tracked bytes belonging to overflow pages in the cache */ -#define WT_STAT_CONN_CACHE_BYTES_OVERFLOW 1086 +#define WT_STAT_CONN_CACHE_BYTES_LEAF 1087 /*! cache: tracked dirty bytes in the cache */ -#define WT_STAT_CONN_CACHE_BYTES_DIRTY 1087 +#define WT_STAT_CONN_CACHE_BYTES_DIRTY 1088 /*! cache: tracked dirty pages in the cache */ -#define WT_STAT_CONN_CACHE_PAGES_DIRTY 1088 +#define WT_STAT_CONN_CACHE_PAGES_DIRTY 1089 /*! cache: unmodified pages evicted */ -#define WT_STAT_CONN_CACHE_EVICTION_CLEAN 1089 +#define WT_STAT_CONN_CACHE_EVICTION_CLEAN 1090 /*! connection: auto adjusting condition resets */ -#define WT_STAT_CONN_COND_AUTO_WAIT_RESET 1090 +#define WT_STAT_CONN_COND_AUTO_WAIT_RESET 1091 /*! connection: auto adjusting condition wait calls */ -#define WT_STAT_CONN_COND_AUTO_WAIT 1091 +#define WT_STAT_CONN_COND_AUTO_WAIT 1092 /*! connection: files currently open */ -#define WT_STAT_CONN_FILE_OPEN 1092 +#define WT_STAT_CONN_FILE_OPEN 1093 /*! connection: memory allocations */ -#define WT_STAT_CONN_MEMORY_ALLOCATION 1093 +#define WT_STAT_CONN_MEMORY_ALLOCATION 1094 /*! connection: memory frees */ -#define WT_STAT_CONN_MEMORY_FREE 1094 +#define WT_STAT_CONN_MEMORY_FREE 1095 /*! connection: memory re-allocations */ -#define WT_STAT_CONN_MEMORY_GROW 1095 +#define WT_STAT_CONN_MEMORY_GROW 1096 /*! connection: pthread mutex condition wait calls */ -#define WT_STAT_CONN_COND_WAIT 1096 +#define WT_STAT_CONN_COND_WAIT 1097 /*! connection: pthread mutex shared lock read-lock calls */ -#define WT_STAT_CONN_RWLOCK_READ 1097 +#define WT_STAT_CONN_RWLOCK_READ 1098 /*! connection: pthread mutex shared lock write-lock calls */ -#define WT_STAT_CONN_RWLOCK_WRITE 1098 +#define WT_STAT_CONN_RWLOCK_WRITE 1099 /*! connection: total fsync I/Os */ -#define WT_STAT_CONN_FSYNC_IO 1099 +#define WT_STAT_CONN_FSYNC_IO 1100 /*! connection: total read I/Os */ -#define WT_STAT_CONN_READ_IO 1100 +#define WT_STAT_CONN_READ_IO 1101 /*! connection: total write I/Os */ -#define WT_STAT_CONN_WRITE_IO 1101 +#define WT_STAT_CONN_WRITE_IO 1102 /*! cursor: cursor create calls */ -#define WT_STAT_CONN_CURSOR_CREATE 1102 +#define WT_STAT_CONN_CURSOR_CREATE 1103 /*! cursor: cursor insert calls */ -#define WT_STAT_CONN_CURSOR_INSERT 1103 +#define WT_STAT_CONN_CURSOR_INSERT 1104 /*! cursor: cursor next calls */ -#define WT_STAT_CONN_CURSOR_NEXT 1104 +#define WT_STAT_CONN_CURSOR_NEXT 1105 /*! cursor: cursor prev calls */ -#define WT_STAT_CONN_CURSOR_PREV 1105 +#define WT_STAT_CONN_CURSOR_PREV 1106 /*! cursor: cursor remove calls */ -#define WT_STAT_CONN_CURSOR_REMOVE 1106 +#define WT_STAT_CONN_CURSOR_REMOVE 1107 /*! cursor: cursor reset calls */ -#define WT_STAT_CONN_CURSOR_RESET 1107 +#define WT_STAT_CONN_CURSOR_RESET 1108 /*! cursor: cursor restarted searches */ -#define WT_STAT_CONN_CURSOR_RESTART 1108 +#define WT_STAT_CONN_CURSOR_RESTART 1109 /*! cursor: cursor search calls */ -#define WT_STAT_CONN_CURSOR_SEARCH 1109 +#define WT_STAT_CONN_CURSOR_SEARCH 1110 /*! cursor: cursor search near calls */ -#define WT_STAT_CONN_CURSOR_SEARCH_NEAR 1110 +#define WT_STAT_CONN_CURSOR_SEARCH_NEAR 1111 /*! cursor: cursor update calls */ -#define WT_STAT_CONN_CURSOR_UPDATE 1111 +#define WT_STAT_CONN_CURSOR_UPDATE 1112 /*! cursor: truncate calls */ -#define WT_STAT_CONN_CURSOR_TRUNCATE 1112 +#define WT_STAT_CONN_CURSOR_TRUNCATE 1113 /*! data-handle: connection data handles currently active */ -#define WT_STAT_CONN_DH_CONN_HANDLE_COUNT 1113 +#define WT_STAT_CONN_DH_CONN_HANDLE_COUNT 1114 /*! data-handle: connection sweep candidate became referenced */ -#define WT_STAT_CONN_DH_SWEEP_REF 1114 +#define WT_STAT_CONN_DH_SWEEP_REF 1115 /*! data-handle: connection sweep dhandles closed */ -#define WT_STAT_CONN_DH_SWEEP_CLOSE 1115 +#define WT_STAT_CONN_DH_SWEEP_CLOSE 1116 /*! data-handle: connection sweep dhandles removed from hash list */ -#define WT_STAT_CONN_DH_SWEEP_REMOVE 1116 +#define WT_STAT_CONN_DH_SWEEP_REMOVE 1117 /*! data-handle: connection sweep time-of-death sets */ -#define WT_STAT_CONN_DH_SWEEP_TOD 1117 +#define WT_STAT_CONN_DH_SWEEP_TOD 1118 /*! data-handle: connection sweeps */ -#define WT_STAT_CONN_DH_SWEEPS 1118 +#define WT_STAT_CONN_DH_SWEEPS 1119 /*! data-handle: session dhandles swept */ -#define WT_STAT_CONN_DH_SESSION_HANDLES 1119 +#define WT_STAT_CONN_DH_SESSION_HANDLES 1120 /*! data-handle: session sweep attempts */ -#define WT_STAT_CONN_DH_SESSION_SWEEPS 1120 +#define WT_STAT_CONN_DH_SESSION_SWEEPS 1121 /*! log: busy returns attempting to switch slots */ -#define WT_STAT_CONN_LOG_SLOT_SWITCH_BUSY 1121 +#define WT_STAT_CONN_LOG_SLOT_SWITCH_BUSY 1122 /*! log: consolidated slot closures */ -#define WT_STAT_CONN_LOG_SLOT_CLOSES 1122 +#define WT_STAT_CONN_LOG_SLOT_CLOSES 1123 /*! log: consolidated slot join races */ -#define WT_STAT_CONN_LOG_SLOT_RACES 1123 +#define WT_STAT_CONN_LOG_SLOT_RACES 1124 /*! log: consolidated slot join transitions */ -#define WT_STAT_CONN_LOG_SLOT_TRANSITIONS 1124 +#define WT_STAT_CONN_LOG_SLOT_TRANSITIONS 1125 /*! log: consolidated slot joins */ -#define WT_STAT_CONN_LOG_SLOT_JOINS 1125 +#define WT_STAT_CONN_LOG_SLOT_JOINS 1126 /*! log: consolidated slot unbuffered writes */ -#define WT_STAT_CONN_LOG_SLOT_UNBUFFERED 1126 +#define WT_STAT_CONN_LOG_SLOT_UNBUFFERED 1127 /*! log: log bytes of payload data */ -#define WT_STAT_CONN_LOG_BYTES_PAYLOAD 1127 +#define WT_STAT_CONN_LOG_BYTES_PAYLOAD 1128 /*! log: log bytes written */ -#define WT_STAT_CONN_LOG_BYTES_WRITTEN 1128 +#define WT_STAT_CONN_LOG_BYTES_WRITTEN 1129 /*! log: log files manually zero-filled */ -#define WT_STAT_CONN_LOG_ZERO_FILLS 1129 +#define WT_STAT_CONN_LOG_ZERO_FILLS 1130 /*! log: log flush operations */ -#define WT_STAT_CONN_LOG_FLUSH 1130 +#define WT_STAT_CONN_LOG_FLUSH 1131 /*! log: log force write operations */ -#define WT_STAT_CONN_LOG_FORCE_WRITE 1131 +#define WT_STAT_CONN_LOG_FORCE_WRITE 1132 /*! log: log force write operations skipped */ -#define WT_STAT_CONN_LOG_FORCE_WRITE_SKIP 1132 +#define WT_STAT_CONN_LOG_FORCE_WRITE_SKIP 1133 /*! log: log records compressed */ -#define WT_STAT_CONN_LOG_COMPRESS_WRITES 1133 +#define WT_STAT_CONN_LOG_COMPRESS_WRITES 1134 /*! log: log records not compressed */ -#define WT_STAT_CONN_LOG_COMPRESS_WRITE_FAILS 1134 +#define WT_STAT_CONN_LOG_COMPRESS_WRITE_FAILS 1135 /*! log: log records too small to compress */ -#define WT_STAT_CONN_LOG_COMPRESS_SMALL 1135 +#define WT_STAT_CONN_LOG_COMPRESS_SMALL 1136 /*! log: log release advances write LSN */ -#define WT_STAT_CONN_LOG_RELEASE_WRITE_LSN 1136 +#define WT_STAT_CONN_LOG_RELEASE_WRITE_LSN 1137 /*! log: log scan operations */ -#define WT_STAT_CONN_LOG_SCANS 1137 +#define WT_STAT_CONN_LOG_SCANS 1138 /*! log: log scan records requiring two reads */ -#define WT_STAT_CONN_LOG_SCAN_REREADS 1138 +#define WT_STAT_CONN_LOG_SCAN_REREADS 1139 /*! log: log server thread advances write LSN */ -#define WT_STAT_CONN_LOG_WRITE_LSN 1139 +#define WT_STAT_CONN_LOG_WRITE_LSN 1140 /*! log: log server thread write LSN walk skipped */ -#define WT_STAT_CONN_LOG_WRITE_LSN_SKIP 1140 +#define WT_STAT_CONN_LOG_WRITE_LSN_SKIP 1141 /*! log: log sync operations */ -#define WT_STAT_CONN_LOG_SYNC 1141 +#define WT_STAT_CONN_LOG_SYNC 1142 /*! log: log sync time duration (usecs) */ -#define WT_STAT_CONN_LOG_SYNC_DURATION 1142 +#define WT_STAT_CONN_LOG_SYNC_DURATION 1143 /*! log: log sync_dir operations */ -#define WT_STAT_CONN_LOG_SYNC_DIR 1143 +#define WT_STAT_CONN_LOG_SYNC_DIR 1144 /*! log: log sync_dir time duration (usecs) */ -#define WT_STAT_CONN_LOG_SYNC_DIR_DURATION 1144 +#define WT_STAT_CONN_LOG_SYNC_DIR_DURATION 1145 /*! log: log write operations */ -#define WT_STAT_CONN_LOG_WRITES 1145 +#define WT_STAT_CONN_LOG_WRITES 1146 /*! log: logging bytes consolidated */ -#define WT_STAT_CONN_LOG_SLOT_CONSOLIDATED 1146 +#define WT_STAT_CONN_LOG_SLOT_CONSOLIDATED 1147 /*! log: maximum log file size */ -#define WT_STAT_CONN_LOG_MAX_FILESIZE 1147 +#define WT_STAT_CONN_LOG_MAX_FILESIZE 1148 /*! log: number of pre-allocated log files to create */ -#define WT_STAT_CONN_LOG_PREALLOC_MAX 1148 +#define WT_STAT_CONN_LOG_PREALLOC_MAX 1149 /*! log: pre-allocated log files not ready and missed */ -#define WT_STAT_CONN_LOG_PREALLOC_MISSED 1149 +#define WT_STAT_CONN_LOG_PREALLOC_MISSED 1150 /*! log: pre-allocated log files prepared */ -#define WT_STAT_CONN_LOG_PREALLOC_FILES 1150 +#define WT_STAT_CONN_LOG_PREALLOC_FILES 1151 /*! log: pre-allocated log files used */ -#define WT_STAT_CONN_LOG_PREALLOC_USED 1151 +#define WT_STAT_CONN_LOG_PREALLOC_USED 1152 /*! log: records processed by log scan */ -#define WT_STAT_CONN_LOG_SCAN_RECORDS 1152 +#define WT_STAT_CONN_LOG_SCAN_RECORDS 1153 /*! log: total in-memory size of compressed records */ -#define WT_STAT_CONN_LOG_COMPRESS_MEM 1153 +#define WT_STAT_CONN_LOG_COMPRESS_MEM 1154 /*! log: total log buffer size */ -#define WT_STAT_CONN_LOG_BUFFER_SIZE 1154 +#define WT_STAT_CONN_LOG_BUFFER_SIZE 1155 /*! log: total size of compressed records */ -#define WT_STAT_CONN_LOG_COMPRESS_LEN 1155 +#define WT_STAT_CONN_LOG_COMPRESS_LEN 1156 /*! log: written slots coalesced */ -#define WT_STAT_CONN_LOG_SLOT_COALESCED 1156 +#define WT_STAT_CONN_LOG_SLOT_COALESCED 1157 /*! log: yields waiting for previous log file close */ -#define WT_STAT_CONN_LOG_CLOSE_YIELDS 1157 +#define WT_STAT_CONN_LOG_CLOSE_YIELDS 1158 /*! reconciliation: fast-path pages deleted */ -#define WT_STAT_CONN_REC_PAGE_DELETE_FAST 1158 +#define WT_STAT_CONN_REC_PAGE_DELETE_FAST 1159 /*! reconciliation: page reconciliation calls */ -#define WT_STAT_CONN_REC_PAGES 1159 +#define WT_STAT_CONN_REC_PAGES 1160 /*! reconciliation: page reconciliation calls for eviction */ -#define WT_STAT_CONN_REC_PAGES_EVICTION 1160 +#define WT_STAT_CONN_REC_PAGES_EVICTION 1161 /*! reconciliation: pages deleted */ -#define WT_STAT_CONN_REC_PAGE_DELETE 1161 +#define WT_STAT_CONN_REC_PAGE_DELETE 1162 /*! reconciliation: split bytes currently awaiting free */ -#define WT_STAT_CONN_REC_SPLIT_STASHED_BYTES 1162 +#define WT_STAT_CONN_REC_SPLIT_STASHED_BYTES 1163 /*! reconciliation: split objects currently awaiting free */ -#define WT_STAT_CONN_REC_SPLIT_STASHED_OBJECTS 1163 +#define WT_STAT_CONN_REC_SPLIT_STASHED_OBJECTS 1164 /*! session: open cursor count */ -#define WT_STAT_CONN_SESSION_CURSOR_OPEN 1164 +#define WT_STAT_CONN_SESSION_CURSOR_OPEN 1165 /*! session: open session count */ -#define WT_STAT_CONN_SESSION_OPEN 1165 +#define WT_STAT_CONN_SESSION_OPEN 1166 /*! thread-state: active filesystem fsync calls */ -#define WT_STAT_CONN_THREAD_FSYNC_ACTIVE 1166 +#define WT_STAT_CONN_THREAD_FSYNC_ACTIVE 1167 /*! thread-state: active filesystem read calls */ -#define WT_STAT_CONN_THREAD_READ_ACTIVE 1167 +#define WT_STAT_CONN_THREAD_READ_ACTIVE 1168 /*! thread-state: active filesystem write calls */ -#define WT_STAT_CONN_THREAD_WRITE_ACTIVE 1168 +#define WT_STAT_CONN_THREAD_WRITE_ACTIVE 1169 /*! thread-yield: page acquire busy blocked */ -#define WT_STAT_CONN_PAGE_BUSY_BLOCKED 1169 +#define WT_STAT_CONN_PAGE_BUSY_BLOCKED 1170 /*! thread-yield: page acquire eviction blocked */ -#define WT_STAT_CONN_PAGE_FORCIBLE_EVICT_BLOCKED 1170 +#define WT_STAT_CONN_PAGE_FORCIBLE_EVICT_BLOCKED 1171 /*! thread-yield: page acquire locked blocked */ -#define WT_STAT_CONN_PAGE_LOCKED_BLOCKED 1171 +#define WT_STAT_CONN_PAGE_LOCKED_BLOCKED 1172 /*! thread-yield: page acquire read blocked */ -#define WT_STAT_CONN_PAGE_READ_BLOCKED 1172 +#define WT_STAT_CONN_PAGE_READ_BLOCKED 1173 /*! thread-yield: page acquire time sleeping (usecs) */ -#define WT_STAT_CONN_PAGE_SLEEP 1173 +#define WT_STAT_CONN_PAGE_SLEEP 1174 /*! transaction: number of named snapshots created */ -#define WT_STAT_CONN_TXN_SNAPSHOTS_CREATED 1174 +#define WT_STAT_CONN_TXN_SNAPSHOTS_CREATED 1175 /*! transaction: number of named snapshots dropped */ -#define WT_STAT_CONN_TXN_SNAPSHOTS_DROPPED 1175 +#define WT_STAT_CONN_TXN_SNAPSHOTS_DROPPED 1176 /*! transaction: transaction begins */ -#define WT_STAT_CONN_TXN_BEGIN 1176 +#define WT_STAT_CONN_TXN_BEGIN 1177 /*! transaction: transaction checkpoint currently running */ -#define WT_STAT_CONN_TXN_CHECKPOINT_RUNNING 1177 +#define WT_STAT_CONN_TXN_CHECKPOINT_RUNNING 1178 /*! transaction: transaction checkpoint generation */ -#define WT_STAT_CONN_TXN_CHECKPOINT_GENERATION 1178 +#define WT_STAT_CONN_TXN_CHECKPOINT_GENERATION 1179 /*! transaction: transaction checkpoint max time (msecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MAX 1179 +#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MAX 1180 /*! transaction: transaction checkpoint min time (msecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MIN 1180 +#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_MIN 1181 /*! transaction: transaction checkpoint most recent time (msecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_RECENT 1181 +#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_RECENT 1182 /*! transaction: transaction checkpoint total time (msecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_TOTAL 1182 +#define WT_STAT_CONN_TXN_CHECKPOINT_TIME_TOTAL 1183 /*! transaction: transaction checkpoints */ -#define WT_STAT_CONN_TXN_CHECKPOINT 1183 +#define WT_STAT_CONN_TXN_CHECKPOINT 1184 /*! transaction: transaction failures due to cache overflow */ -#define WT_STAT_CONN_TXN_FAIL_CACHE 1184 +#define WT_STAT_CONN_TXN_FAIL_CACHE 1185 /*! transaction: transaction fsync calls for checkpoint after allocating * the transaction ID */ -#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST 1185 +#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST 1186 /*! transaction: transaction fsync calls for checkpoint before allocating * the transaction ID */ -#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_PRE 1186 +#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_PRE 1187 /*! transaction: transaction fsync duration for checkpoint after * allocating the transaction ID (usecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST_DURATION 1187 +#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_POST_DURATION 1188 /*! transaction: transaction fsync duration for checkpoint before * allocating the transaction ID (usecs) */ -#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_PRE_DURATION 1188 +#define WT_STAT_CONN_TXN_CHECKPOINT_FSYNC_PRE_DURATION 1189 /*! transaction: transaction range of IDs currently pinned */ -#define WT_STAT_CONN_TXN_PINNED_RANGE 1189 +#define WT_STAT_CONN_TXN_PINNED_RANGE 1190 /*! transaction: transaction range of IDs currently pinned by a checkpoint */ -#define WT_STAT_CONN_TXN_PINNED_CHECKPOINT_RANGE 1190 +#define WT_STAT_CONN_TXN_PINNED_CHECKPOINT_RANGE 1191 /*! transaction: transaction range of IDs currently pinned by named * snapshots */ -#define WT_STAT_CONN_TXN_PINNED_SNAPSHOT_RANGE 1191 +#define WT_STAT_CONN_TXN_PINNED_SNAPSHOT_RANGE 1192 /*! transaction: transaction sync calls */ -#define WT_STAT_CONN_TXN_SYNC 1192 +#define WT_STAT_CONN_TXN_SYNC 1193 /*! transaction: transactions committed */ -#define WT_STAT_CONN_TXN_COMMIT 1193 +#define WT_STAT_CONN_TXN_COMMIT 1194 /*! transaction: transactions rolled back */ -#define WT_STAT_CONN_TXN_ROLLBACK 1194 +#define WT_STAT_CONN_TXN_ROLLBACK 1195 /*! * @} diff --git a/src/support/stat.c b/src/support/stat.c index 483d6715a7e..d8d34e051df 100644 --- a/src/support/stat.c +++ b/src/support/stat.c @@ -585,6 +585,8 @@ static const char * const __stats_connection_desc[] = { "cache: maximum page size at eviction", "cache: modified pages evicted", "cache: modified pages evicted by application threads", + "cache: overflow pages read into cache", + "cache: overflow values cached in memory", "cache: page split during eviction deepened the tree", "cache: page written requiring lookaside records", "cache: pages currently held in the cache", @@ -604,7 +606,6 @@ static const char * const __stats_connection_desc[] = { "cache: percentage overhead", "cache: tracked bytes belonging to internal pages in the cache", "cache: tracked bytes belonging to leaf pages in the cache", - "cache: tracked bytes belonging to overflow pages in the cache", "cache: tracked dirty bytes in the cache", "cache: tracked dirty pages in the cache", "cache: unmodified pages evicted", @@ -810,6 +811,8 @@ __wt_stat_connection_clear_single(WT_CONNECTION_STATS *stats) /* not clearing cache_eviction_maximum_page_size */ stats->cache_eviction_dirty = 0; stats->cache_eviction_app_dirty = 0; + stats->cache_read_overflow = 0; + stats->cache_overflow_value = 0; stats->cache_eviction_deepen = 0; stats->cache_write_lookaside = 0; /* not clearing cache_pages_inuse */ @@ -829,7 +832,6 @@ __wt_stat_connection_clear_single(WT_CONNECTION_STATS *stats) /* not clearing cache_overhead */ /* not clearing cache_bytes_internal */ /* not clearing cache_bytes_leaf */ - /* not clearing cache_bytes_overflow */ /* not clearing cache_bytes_dirty */ /* not clearing cache_pages_dirty */ stats->cache_eviction_clean = 0; @@ -1053,6 +1055,8 @@ __wt_stat_connection_aggregate( to->cache_eviction_dirty += WT_STAT_READ(from, cache_eviction_dirty); to->cache_eviction_app_dirty += WT_STAT_READ(from, cache_eviction_app_dirty); + to->cache_read_overflow += WT_STAT_READ(from, cache_read_overflow); + to->cache_overflow_value += WT_STAT_READ(from, cache_overflow_value); to->cache_eviction_deepen += WT_STAT_READ(from, cache_eviction_deepen); to->cache_write_lookaside += @@ -1079,7 +1083,6 @@ __wt_stat_connection_aggregate( to->cache_overhead += WT_STAT_READ(from, cache_overhead); to->cache_bytes_internal += WT_STAT_READ(from, cache_bytes_internal); to->cache_bytes_leaf += WT_STAT_READ(from, cache_bytes_leaf); - to->cache_bytes_overflow += WT_STAT_READ(from, cache_bytes_overflow); to->cache_bytes_dirty += WT_STAT_READ(from, cache_bytes_dirty); to->cache_pages_dirty += WT_STAT_READ(from, cache_pages_dirty); to->cache_eviction_clean += WT_STAT_READ(from, cache_eviction_clean); diff --git a/tools/wtstats/stat_data.py b/tools/wtstats/stat_data.py index d06f1035adf..f349c319b3c 100644 --- a/tools/wtstats/stat_data.py +++ b/tools/wtstats/stat_data.py @@ -11,11 +11,11 @@ no_scale_per_second_list = [ 'cache: hazard pointer maximum array length', 'cache: maximum bytes configured', 'cache: maximum page size at eviction', + 'cache: overflow values cached in memory', 'cache: pages currently held in the cache', 'cache: percentage overhead', 'cache: tracked bytes belonging to internal pages in the cache', 'cache: tracked bytes belonging to leaf pages in the cache', - 'cache: tracked bytes belonging to overflow pages in the cache', 'cache: tracked dirty bytes in the cache', 'cache: tracked dirty pages in the cache', 'connection: files currently open', @@ -88,7 +88,6 @@ no_clear_list = [ 'cache: percentage overhead', 'cache: tracked bytes belonging to internal pages in the cache', 'cache: tracked bytes belonging to leaf pages in the cache', - 'cache: tracked bytes belonging to overflow pages in the cache', 'cache: tracked dirty bytes in the cache', 'cache: tracked dirty pages in the cache', 'connection: files currently open', |