mirror of
https://github.com/scylladb/scylladb.git
synced 2026-04-21 00:50:35 +00:00
Basic explanation of the reclaimer algorithm: - Each slab page has a descriptor containing information about it, such as refcnt, vector of free objects, link into LRU, etc. - The LRU list will only contain slab pages which items are unused, so as to make the reclaiming process faster and easier. Maintaining the LRU of slab pages has a performance penalty of ~1.3%. Shlomi suggested an approach where LRU would no longer exist and timestamp would be used instead to keep track of recency. Reclaimer would then iterate through all slab pages checking for an unused slab page with the lowest timestamp. - Reclaimer will get the least-recently-used slab page from the LRU list, do all the management stuff required, and iterate through the page erasing any of the items there contained. Once reclaimer was called, it's likely that slab memory usage is calibrated, thus slab pages shouldn't be allocated anymore. - Reclaimer is enabled by default but can be disabled by specifying the slab size using the application parameter --max-slab-size. Signed-off-by: Raphael S. Carvalho <raphaelsc@cloudius-systems.com>