summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Gorrod <alexander.gorrod@mongodb.com>2016-02-26 08:52:35 +1100
committerAlex Gorrod <alexander.gorrod@mongodb.com>2016-02-26 08:52:35 +1100
commit799ca57b6c597c864f12609fdedc4b3de7ebdec9 (patch)
tree6214d05da63d9f02c7516121205124d6aa247489
parent22ef6d3d7b94f1f0bc681b3079ddd24496eb0dba (diff)
parent319c8f2209eeac78dd2b49765853ddac1b690381 (diff)
downloadmongo-799ca57b6c597c864f12609fdedc4b3de7ebdec9.tar.gz
Merge pull request #2532 from wiredtiger/server-22831
SERVER-22831 Queue more leaf pages than internal pages for eviction.
-rw-r--r--src/evict/evict_lru.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/evict/evict_lru.c b/src/evict/evict_lru.c
index dc1a104a0fc..02d7b19137f 100644
--- a/src/evict/evict_lru.c
+++ b/src/evict/evict_lru.c
@@ -1267,7 +1267,8 @@ __evict_walk_file(WT_SESSION_IMPL *session, u_int *slotp)
/* Pages we no longer need (clean or dirty), are found money. */
if (__wt_page_is_empty(page) ||
- F_ISSET(session->dhandle, WT_DHANDLE_DEAD))
+ F_ISSET(session->dhandle, WT_DHANDLE_DEAD) ||
+ page->read_gen == WT_READGEN_OLDEST)
goto fast;
/* Skip clean pages if appropriate. */
@@ -1280,14 +1281,13 @@ __evict_walk_file(WT_SESSION_IMPL *session, u_int *slotp)
* eviction, skip anything that isn't marked.
*/
if (FLD_ISSET(cache->state, WT_EVICT_PASS_WOULD_BLOCK) &&
- page->memory_footprint < btree->splitmempage &&
- page->read_gen != WT_READGEN_OLDEST)
+ page->memory_footprint < btree->splitmempage)
continue;
/* Limit internal pages to 50% unless we get aggressive. */
if (WT_PAGE_IS_INTERNAL(page) &&
- ++internal_pages > WT_EVICT_WALK_PER_FILE / 2 &&
- !FLD_ISSET(cache->state, WT_EVICT_PASS_AGGRESSIVE))
+ !FLD_ISSET(cache->state, WT_EVICT_PASS_AGGRESSIVE) &&
+ internal_pages >= (int)(evict - start) / 2)
continue;
/*
@@ -1332,6 +1332,9 @@ fast: /* If the page can't be evicted, give up. */
__evict_init_candidate(session, evict, ref);
++evict;
+ if (WT_PAGE_IS_INTERNAL(page))
+ ++internal_pages;
+
WT_RET(__wt_verbose(session, WT_VERB_EVICTSERVER,
"select: %p, size %" PRIu64, page, page->memory_footprint));
}