diff options
Diffstat (limited to 'src/third_party/wiredtiger/src/reconcile/rec_write.c')
-rw-r--r-- | src/third_party/wiredtiger/src/reconcile/rec_write.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/third_party/wiredtiger/src/reconcile/rec_write.c b/src/third_party/wiredtiger/src/reconcile/rec_write.c index 9bfcbefd848..d083f076c69 100644 --- a/src/third_party/wiredtiger/src/reconcile/rec_write.c +++ b/src/third_party/wiredtiger/src/reconcile/rec_write.c @@ -31,8 +31,10 @@ __wt_reconcile(WT_SESSION_IMPL *session, WT_REF *ref, WT_SALVAGE_COOKIE *salvage { WT_DECL_RET; WT_PAGE *page; + uint64_t start, now; bool no_reconcile_set, page_locked; + __wt_seconds(session, &start); page = ref->page; __wt_verbose(session, WT_VERB_RECONCILE, "%p reconcile %s (%s%s)", (void *)ref, @@ -91,6 +93,12 @@ err: WT_PAGE_UNLOCK(session, page); if (!no_reconcile_set) F_CLR(session, WT_SESSION_NO_RECONCILE); + + /* Track the longest reconciliation, ignoring races (it's just a statistic). */ + __wt_seconds(session, &now); + if (now - start > S2C(session)->rec_maximum_seconds) + S2C(session)->rec_maximum_seconds = now - start; + return (ret); } @@ -1817,6 +1825,9 @@ __rec_split_write(WT_SESSION_IMPL *session, WT_RECONCILE *r, WT_REC_CHUNK *chunk __rec_compression_adjust( session, btree->maxleafpage, compressed_size, last_block, &btree->maxleafpage_precomp); + /* Update the per-page reconciliation time statistics now that we've written something. */ + __rec_page_time_stats(session, r); + copy_image: #ifdef HAVE_DIAGNOSTIC /* @@ -1834,6 +1845,9 @@ copy_image: if (F_ISSET(r, WT_REC_SCRUB) || multi->supd_restore) WT_RET(__wt_memdup(session, chunk->image.data, chunk->image.size, &multi->disk_image)); + /* Whether we wrote or not, clear the accumulated time statistics. */ + __rec_page_time_stats_clear(r); + return (0); } |