diff options
author | dormando <dormando@rydia.net> | 2017-01-29 13:15:22 -0800 |
---|---|---|
committer | dormando <dormando@rydia.net> | 2017-01-30 16:32:24 -0800 |
commit | 23b880c57753bbf74f6483afce480d1ff34e0a89 (patch) | |
tree | 4a3184dcf0870bfc26b30d438b0bb517c2d0a2b9 /items.h | |
parent | 695879257436a8e79ab5205f9f4f267578eabc38 (diff) | |
download | memcached-23b880c57753bbf74f6483afce480d1ff34e0a89.tar.gz |
use LRU thread for COLD -> WARM bumps
Previous tree fixed a problem; active items needed to be processed from the
tail of COLD, which makes evictions harder without evicting active items.
COLD bumps were modified to be immediate (old style). This uses a
per-worker-thread mostly-nonblocking queue that the LRU thread consumes for
COLD bumps.
In most cases, hits to COLD are 1/10th or less than the other classes. On high
rates of access where the buffers fill, those items simply don't get their
ACTIVE bit set. If they get hit again with free space, they will be processed
then. This prevents regressions from high speed keyspace scans.
Diffstat (limited to 'items.h')
-rw-r--r-- | items.h | 4 |
1 files changed, 4 insertions, 0 deletions
@@ -27,6 +27,8 @@ void do_item_linktail_q(item *it); void do_item_unlinktail_q(item *it); item *do_item_crawl_q(item *it); +void *item_lru_bump_buf_create(void); + /*@null@*/ char *item_cachedump(const unsigned int slabs_clsid, const unsigned int limit, unsigned int *bytes); void item_stats(ADD_STAT add_stats, void *c); @@ -52,3 +54,5 @@ int stop_lru_maintainer_thread(void); int init_lru_maintainer(void); void lru_maintainer_pause(void); void lru_maintainer_resume(void); + +void *lru_bump_buf_create(void); |