-
Type: Task
-
Resolution: Done
-
Affects Version/s: None
-
Component/s: None
-
None
The wtperf medium-btree workload exhibited a performance drop caused by one of:
Have the eviction server concentrate on walking when there are other threads waiting to do eviction. This is an attempt to avoid cases where the eviction server is busy doing eviction and stalls all other threads. (commit: e507154a88920c98ae0d1b34896ea86fd5e7785e) (detail) Only threads that try to read pages when the cache is full should block for eviction. (commit: c32ab9672b8b24677c3064eb88ee1082e2ee23d8) (detail) Add statistics to track eviction server candidate list sizes. (commit: 90864466860b2563842fbac53329e2742d169005) (detail) Update how multiple eviction threads interact. (commit: 77ff8e033a994362cc7f7a18eaefe727039db8fc) (detail) Fix build warning. (commit: db3a6da4e1944e3ed194b7a266721c8663a6dace) (detail) update (commit: 4a0de999237bcf7389846c8dce22b22c2dd261c7) (detail) Update the list of configuration options: remove --enable-debug, add (commit: 03e18abde844a2cf3aa856807844a45067f33efb) (detail)
The drop is significant. Further investigation shows that the drop relates to the change to stop the eviction server doing eviction. The following change reverts the performance:
--- a/src/btree/bt_evict.c +++ b/src/btree/bt_evict.c @@ -670,6 +670,7 @@ __evict_lru(WT_SESSION_IMPL *session, uint32_t flags) * are eviction workers running or application threads are waiting * for candidates to evict. */ +#if 0 if (cache->eviction_workers > 0 || __wt_cond_has_waiters(session, cache->evict_waiter_cond)) { WT_STAT_FAST_CONN_INCR( @@ -684,6 +685,11 @@ __evict_lru(WT_SESSION_IMPL *session, uint32_t flags) WT_STAT_FAST_CONN_INCR(session, cache_eviction_server_evicting); WT_RET(__evict_lru_pages(session, 0)); } +#else + WT_RET(__wt_cond_signal(session, cache->evict_waiter_cond)); + WT_RET(__evict_lru_pages(session, 0)); +#endif + return (0); }
There are 16 application threads running - so it isn't clear to me why having the eviction server doing actual eviction isn't helping. It could be related to the read-only nature of the workload. I'll dig deeper.
- is related to
-
WT-1099 Revert change to not evict in the server thread if application threads wait
- Closed