diff options
author | Alex Gorrod <alexander.gorrod@mongodb.com> | 2016-02-26 08:52:35 +1100 |
---|---|---|
committer | Alex Gorrod <alexander.gorrod@mongodb.com> | 2016-02-26 08:52:35 +1100 |
commit | 799ca57b6c597c864f12609fdedc4b3de7ebdec9 (patch) | |
tree | 6214d05da63d9f02c7516121205124d6aa247489 | |
parent | 22ef6d3d7b94f1f0bc681b3079ddd24496eb0dba (diff) | |
parent | 319c8f2209eeac78dd2b49765853ddac1b690381 (diff) | |
download | mongo-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.c | 13 |
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)); } |