summaryrefslogtreecommitdiff
path: root/src/third_party/wiredtiger/src/reconcile/rec_write.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/third_party/wiredtiger/src/reconcile/rec_write.c')
-rw-r--r--src/third_party/wiredtiger/src/reconcile/rec_write.c14
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);
}