]> git.baikalelectronics.ru Git - kernel.git/commit
Revert "memcg: cleanup racy sum avoidance code"
authorShakeel Butt <shakeelb@google.com>
Wed, 17 Aug 2022 17:21:39 +0000 (17:21 +0000)
committerAndrew Morton <akpm@linux-foundation.org>
Sun, 28 Aug 2022 21:02:44 +0000 (14:02 -0700)
commite3e3d7c242a9befc69ed88af086043fa6d640e4c
tree2b84beb3f8bf4e5d7cab0e63e3728d5fd1d68282
parent41b5d692ceb76efbeccdbdd6ab773591a69bf880
Revert "memcg: cleanup racy sum avoidance code"

This reverts commit 37ce52990c88296da692d8279600b766b3407f04.

Recently we started running the kernel with rstat infrastructure on
production traffic and begin to see negative memcg stats values.
Particularly the 'sock' stat is the one which we observed having negative
value.

$ grep "sock " /mnt/memory/job/memory.stat
sock 253952
total_sock 18446744073708724224

Re-run after couple of seconds

$ grep "sock " /mnt/memory/job/memory.stat
sock 253952
total_sock 53248

For now we are only seeing this issue on large machines (256 CPUs) and
only with 'sock' stat.  I think the networking stack increase the stat on
one cpu and decrease it on another cpu much more often.  So, this negative
sock is due to rstat flusher flushing the stats on the CPU that has seen
the decrement of sock but missed the CPU that has increments.  A typical
race condition.

For easy stable backport, revert is the most simple solution.  For long
term solution, I am thinking of two directions.  First is just reduce the
race window by optimizing the rstat flusher.  Second is if the reader sees
a negative stat value, force flush and restart the stat collection.
Basically retry but limited.

Link: https://lkml.kernel.org/r/20220817172139.3141101-1-shakeelb@google.com
Fixes: 37ce52990c88296 ("memcg: cleanup racy sum avoidance code")
Signed-off-by: Shakeel Butt <shakeelb@google.com>
Cc: "Michal Koutný" <mkoutny@suse.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Michal Hocko <mhocko@kernel.org>
Cc: Roman Gushchin <roman.gushchin@linux.dev>
Cc: Muchun Song <songmuchun@bytedance.com>
Cc: David Hildenbrand <david@redhat.com>
Cc: Yosry Ahmed <yosryahmed@google.com>
Cc: Greg Thelen <gthelen@google.com>
Cc: <stable@vger.kernel.org> [5.15]
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
include/linux/memcontrol.h