refresh patches
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
From d0ce01e1def080e52770f9a899476bb840807b37 Mon Sep 17 00:00:00 2001
|
||||
From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com>
|
||||
Date: Mon, 27 Jan 2020 18:21:09 +0100
|
||||
Subject: ZEN: INTERACTIVE: Enable background reclaim of hugepages
|
||||
|
||||
Use [defer+madvise] as default khugepaged defrag strategy:
|
||||
|
||||
For some reason, the default strategy to respond to THP fault fallbacks
|
||||
is still just madvise, meaning stall if the program wants transparent
|
||||
hugepages, but don't trigger a background reclaim / compaction if THP
|
||||
begins to fail allocations. This creates a snowball affect where we
|
||||
still use the THP code paths, but we almost always fail once a system
|
||||
has been active and busy for a while.
|
||||
|
||||
The option "defer" was created for interactive systems where THP can
|
||||
still improve performance. If we have to fallback to a regular page due
|
||||
to an allocation failure or anything else, we will trigger a background
|
||||
reclaim and compaction so future THP attempts succeed and previous
|
||||
attempts eventually have their smaller pages combined without stalling
|
||||
running applications.
|
||||
|
||||
We still want madvise to stall applications that explicitely want THP,
|
||||
so defer+madvise _does_ make a ton of sense. Make it the default for
|
||||
interactive systems, especially if the kernel maintainer left
|
||||
transparent hugepages on "always".
|
||||
|
||||
Reasoning and details in the original patch: https://lwn.net/Articles/711248/
|
||||
---
|
||||
init/Kconfig | 4 ++++
|
||||
mm/huge_memory.c | 4 ++++
|
||||
2 files changed, 8 insertions(+)
|
||||
|
||||
--- a/init/Kconfig
|
||||
+++ b/init/Kconfig
|
||||
@@ -168,6 +168,10 @@ config ZEN_INTERACTIVE
|
||||
Default scheduler for SQ..: mq-deadline -> bfq
|
||||
Default scheduler for MQ..: none -> kyber
|
||||
|
||||
+ --- Virtual Memory Subsystem ---------------------------
|
||||
+
|
||||
+ Background-reclaim hugepages...: no -> yes
|
||||
+
|
||||
config BROKEN
|
||||
bool
|
||||
|
||||
--- a/mm/huge_memory.c
|
||||
+++ b/mm/huge_memory.c
|
||||
@@ -64,7 +64,11 @@ unsigned long transparent_hugepage_flags
|
||||
#ifdef CONFIG_TRANSPARENT_HUGEPAGE_MADVISE
|
||||
(1<<TRANSPARENT_HUGEPAGE_REQ_MADV_FLAG)|
|
||||
#endif
|
||||
+#ifdef CONFIG_ZEN_INTERACTIVE
|
||||
+ (1<<TRANSPARENT_HUGEPAGE_DEFRAG_KSWAPD_OR_MADV_FLAG)|
|
||||
+#else
|
||||
(1<<TRANSPARENT_HUGEPAGE_DEFRAG_REQ_MADV_FLAG)|
|
||||
+#endif
|
||||
(1<<TRANSPARENT_HUGEPAGE_DEFRAG_KHUGEPAGED_FLAG)|
|
||||
(1<<TRANSPARENT_HUGEPAGE_USE_ZERO_PAGE_FLAG);
|
||||
|
Reference in New Issue
Block a user