• Coly Li's avatar
    bcache: remove member accessed from struct btree · 125d98ed
    Coly Li authored
    The member 'accessed' of struct btree is used in bch_mca_scan() when
    shrinking btree node caches. The original idea is, if b->accessed is
    set, clean it and look at next btree node cache from c->btree_cache
    list, and only shrink the caches whose b->accessed is cleaned. Then
    only cold btree node cache will be shrunk.
    
    But when I/O pressure is high, it is very probably that b->accessed
    of a btree node cache will be set again in bch_btree_node_get()
    before bch_mca_scan() selects it again. Then there is no chance for
    bch_mca_scan() to shrink enough memory back to slub or slab system.
    
    This patch removes member accessed from struct btree, then once a
    btree node ache is selected, it will be immediately shunk. By this
    change, bch_mca_scan() may release btree node cahce more efficiently.
    Signed-off-by: default avatarColy Li <colyli@suse.de>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    125d98ed
btree.h 11.4 KB