This is v3 of the auto-tuning patch, addressing feedback from Vlastimil Babka,
Andrew Morton, and Matthew Wilcox.
Major shift in v3:
Following Vlastimil's suggestion, this version abandons the direct modification
of min_free_kbytes. Instead, it leverages the existing watermark_boost
infrastructure. This approach is more idiomatic as it:
- Avoids conflicts with administrative sysctl settings.
- Only affects specific zones experiencing pressure.
- Utilizes standard kswapd logic for natural decay after reclamation.
Responses to Vlastimil Babka's feedback:
> "Were they really packet drops observed? AFAIK the receive is deferred to non-irq
> context if those atomic allocations fail, it shouldn't mean a drop."
In our high-concurrency production environment, we observed that while the
network stack tries to defer processing, persistent GFP_ATOMIC failures
eventually lead to NIC-level drops due to RX buffer exhaustion.
> "As for the implementation I'd rather not be changing min_free_kbytes directly...
> We already have watermark_boost to dynamically change watermarks"
Agreed and implemented in v3.
Changes in v3:
- Replaced min_free_kbytes modification with watermark_boost calls.
- Removed all complex decay/persistence logic from v2, relying on kswapd's
standard behavior.
- Maintained the 10-second debounce mechanism.
- Engaged netdev@ community as requested by Andrew Morton.
Thanks for the thoughtful reviews!
wujing (1):
mm/page_alloc: auto-tune watermarks on atomic allocation failure
mm/page_alloc.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
--
2.39.5