summaryrefslogtreecommitdiff
path: root/items.h
diff options
context:
space:
mode:
authordormando <dormando@rydia.net>2017-01-29 13:15:22 -0800
committerdormando <dormando@rydia.net>2017-01-30 16:32:24 -0800
commit23b880c57753bbf74f6483afce480d1ff34e0a89 (patch)
tree4a3184dcf0870bfc26b30d438b0bb517c2d0a2b9 /items.h
parent695879257436a8e79ab5205f9f4f267578eabc38 (diff)
downloadmemcached-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.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/items.h b/items.h
index 1487801..fd1d485 100644
--- a/items.h
+++ b/items.h
@@ -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);