v3
2026-11-05
memcg库存锁竞争优化 · v3
将 memcg_uncharge()/drain_stock() 移出 memcg_stock.lock,降低高核数下 TCP 吞吐抖动与上下文切换。
原始补丁链接
子 Patch(4)
1/4
memcg: Remove unnecessary READ_ONCE() under memcg_stock.lock.
[memcg: Remove unnecessary READ_ONCE() under memcg_stock.lock.] this_cpu_ptr(&memcg_stock)->{cached[],nr_pages[]} are always modified under local_lock(&memcg_stock.lock). Unlike is_memcg_drain_needed
2/4
memcg: Reduce nesting in consume_stock() and refill_stock().
A later patch adds more code to the most nested block in consume_stock() and refill_stock(). Let’s reduce the nesting to make the later change cleaner. Signed-off-by: Kuniyuki Iwashima <kuniyu@googl
3/4
memcg: Annotate slow paths in consume_stock() and refill_stock().
[memcg: Annotate slow paths in consume_stock() and refill_stock().] In consume_stock() and refill_stock(), each per-CPU stock slot holds up to MEMCG_STOCK_HIGH (64) pages, so depleting a slot in consu
4/4
memcg: Uncharge pages outside memcg_stock.lock in refill_stock().
[memcg: Uncharge pages outside memcg_stock.lock in refill_stock().] 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