From: Kuniyuki Iwashima <kuniyu@google.com>
To: Andrew Morton <akpm@linux-foundation.org>,
Johannes Weiner <hannes@cmpxchg.org>,
Michal Hocko <mhocko@kernel.org>,
Roman Gushchin <roman.gushchin@linux.dev>,
Shakeel Butt <shakeel.butt@linux.dev>
Cc: Muchun Song <muchun.song@linux.dev>,
Kuniyuki Iwashima <kuniyu@google.com>,
Kuniyuki Iwashima <kuni1840@gmail.com>,
linux-mm@kvack.org, cgroups@vger.kernel.org
Subject: [PATCH v3 0/4] memcg: Misc cleanup and perf improvement for TCP.
Date: Thu, 29 Oct 2026 19:44:11 +0000 [thread overview]
Message-ID: <20261029194452.3189365-1-kuniyu@google.com> (raw)
On host w/ AMD EPYC 9B45 128-Core Processor (Zen 5 Turin,
2 sockets, 512 vCPUs), tcp_rr w/ 20000 flows throughput often
degrades by ~50%, 32M -> 17M~27M.
In the bad case, the number of involuntary context switches
was extremely high by 12x (241733 -> 3093367).
The root cause was that refill_stock() calls memcg_uncharge()
or drain_stock() while holding memcg_stock.lock.
Patch 1~3 are misc cleanup for better asm output and patch 4
moves heavy operations to out of local_lock(&memcg_stock.lock).
This series removes the flakiness and gives ~3% gain on the
512 vCPU platform.
In addition, on machine w/ AMD EPYC 7B12 64-Core Processor
(Zen 2 Rome, 2 sockets, 256 vCPU), tcp_rr w/ 10000 flows achieves
36% more throughput with lower latency.
tcp_rr (10000 flows, 128 threads, 60s, average of 3 runs):
Metric | Baseline | Patched | Diff
---------------------------+----------------+------------+--------
Throughput (RPS) | 20,884,499 | 28,453,051 | +36.24%
Latency Mean (us) | 478.46 | 351.07 | -26.63%
Latency p50 (us) | 453.96 | 343.04 | -24.43%
Latency p90 (us) | 669.00 | 479.57 | -28.32%
Latency p99 (us) | 969.38 | 593.92 | -38.73%
Changes:
v3:
* Drop MEMCG_SOCK batching patch
* Patch 1: Be more specific in sentence 1
* Patch 3: Mention Clang 23 and restore asm output
* Patch 4: Add a new benchmark result without batching stats patch.
v2: https://lore.kernel.org/linux-mm/20261028185034.3607746-1-kuniyu@google.com/
* Rebased on mm.git/mm-new
* Add patch 5 for flaky throughput issue
* Patch 4:
* Benchmark again after rebase and update numbers
* Check in_nmi() in __refill_stock()
v1: https://lore.kernel.org/linux-mm/20261016052811.3085635-1-kuniyu@google.com/
Kuniyuki Iwashima (4):
memcg: Remove unnecessary READ_ONCE() under memcg_stock.lock.
memcg: Reduce nesting in consume_stock() and refill_stock().
memcg: Annotate slow paths in consume_stock() and refill_stock().
memcg: Uncharge pages outside memcg_stock.lock in refill_stock().
mm/memcontrol.c | 95 +++++++++++++++++++++++++++++--------------------
1 file changed, 57 insertions(+), 38 deletions(-)
--
2.56.0.317.g454f8302e1-goog
next reply other threads:[~2026-10-29 19:44 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-29 19:44 Kuniyuki Iwashima [this message]
2026-10-29 19:44 ` [PATCH v3 1/4] memcg: Remove unnecessary READ_ONCE() under memcg_stock.lock Kuniyuki Iwashima
2026-10-29 19:58 ` Shakeel Butt
2026-10-29 19:44 ` [PATCH v3 2/4] memcg: Reduce nesting in consume_stock() and refill_stock() Kuniyuki Iwashima
2026-10-29 19:44 ` [PATCH v3 3/4] memcg: Annotate slow paths " Kuniyuki Iwashima
2026-10-29 19:50 ` Shakeel Butt
2026-10-29 19:44 ` [PATCH v3 4/4] memcg: Uncharge pages outside memcg_stock.lock in refill_stock() Kuniyuki Iwashima
2026-10-29 19:52 ` Shakeel Butt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261029194452.3189365-1-kuniyu@google.com \
--to=kuniyu@google.com \
--cc=akpm@linux-foundation.org \
--cc=cgroups@vger.kernel.org \
--cc=hannes@cmpxchg.org \
--cc=kuni1840@gmail.com \
--cc=linux-mm@kvack.org \
--cc=mhocko@kernel.org \
--cc=muchun.song@linux.dev \
--cc=roman.gushchin@linux.dev \
--cc=shakeel.butt@linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.