• Shakeel Butt's avatar
    memcg: better bounds on the memcg stats updates · 5b3be698
    Shakeel Butt authored
    Commit 11192d9c ("memcg: flush stats only if updated") added
    tracking of memcg stats updates which is used by the readers to flush
    only if the updates are over a certain threshold.  However each
    individual update can correspond to a large value change for a given
    stat.  For example adding or removing a hugepage to an LRU changes the
    stat by thp_nr_pages (512 on x86_64).
    
    Treating the update related to THP as one can keep the stat off, in
    theory, by (thp_nr_pages * nr_cpus * CHARGE_BATCH) before flush.
    
    To handle such scenarios, this patch adds consideration of the stat
    update value as well instead of just the update event.  In addition let
    the asyn flusher unconditionally flush the stats to put time limit on
    the stats skew and hopefully a lot less readers would need to flush.
    
    Link: https://lkml.kernel.org/r/20211118065350.697046-1-shakeelb@google.comSigned-off-by: default avatarShakeel Butt <shakeelb@google.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Michal Hocko <mhocko@kernel.org>
    Cc: "Michal Koutný" <mkoutny@suse.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    5b3be698
memcontrol.c 192 KB