• Joe Thornber's avatar
    dm cache: add stochastic-multi-queue (smq) policy · 66a63635
    Joe Thornber authored
    The stochastic-multi-queue (smq) policy addresses some of the problems
    with the current multiqueue (mq) policy.
    
    Memory usage
    ------------
    
    The mq policy uses a lot of memory; 88 bytes per cache block on a 64
    bit machine.
    
    SMQ uses 28bit indexes to implement it's data structures rather than
    pointers.  It avoids storing an explicit hit count for each block.  It
    has a 'hotspot' queue rather than a pre cache which uses a quarter of
    the entries (each hotspot block covers a larger area than a single
    cache block).
    
    All these mean smq uses ~25bytes per cache block.  Still a lot of
    memory, but a substantial improvement nontheless.
    
    Level balancing
    ---------------
    
    MQ places entries in different levels of the multiqueue structures
    based on their hit count (~ln(hit count)).  This means the bottom
    levels generally have the most entries, and the top ones have very
    few.  Having unbalanced levels like this reduces the efficacy of the
    multiqueue.
    
    SMQ does not maintain a...
    66a63635
Makefile 2.46 KB