mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-30 10:39:04 +00:00
05158082f6
Backport a preliminary version of Yu Zhao's multi-generational LRU, for improved memory management. Refresh the patches while at it. Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com>
81 lines
2.4 KiB
Diff
81 lines
2.4 KiB
Diff
From 3008095eb835d207dd7e5b60899aad17f32aa9f7 Mon Sep 17 00:00:00 2001
|
|
From: Yu Zhao <yuzhao@google.com>
|
|
Date: Mon, 25 Jan 2021 21:47:24 -0700
|
|
Subject: [PATCH 09/10] mm: multigenerational lru: Kconfig
|
|
|
|
Add configuration options for the multigenerational lru.
|
|
|
|
Signed-off-by: Yu Zhao <yuzhao@google.com>
|
|
Tested-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
|
|
Change-Id: Ic74ea07f8fb5f56e6904a1b80c3c286bc2911635
|
|
---
|
|
mm/Kconfig | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
1 file changed, 59 insertions(+)
|
|
|
|
--- a/mm/Kconfig
|
|
+++ b/mm/Kconfig
|
|
@@ -899,4 +899,63 @@ config SECRETMEM
|
|
|
|
source "mm/damon/Kconfig"
|
|
|
|
+# the multigenerational lru {
|
|
+config LRU_GEN
|
|
+ bool "Multigenerational LRU"
|
|
+ depends on MMU
|
|
+ # the following options may leave not enough spare bits in page->flags
|
|
+ depends on !MAXSMP && (64BIT || !SPARSEMEM || SPARSEMEM_VMEMMAP)
|
|
+ help
|
|
+ A high performance LRU implementation to heavily overcommit workloads
|
|
+ that are not IO bound. See Documentation/vm/multigen_lru.rst for
|
|
+ details.
|
|
+
|
|
+ Warning: do not enable this option unless you plan to use it because
|
|
+ it introduces a small per-process and per-memcg and per-node memory
|
|
+ overhead.
|
|
+
|
|
+config LRU_GEN_ENABLED
|
|
+ bool "Turn on by default"
|
|
+ depends on LRU_GEN
|
|
+ help
|
|
+ The default value of /sys/kernel/mm/lru_gen/enabled is 0. This option
|
|
+ changes it to 1.
|
|
+
|
|
+ Warning: the default value is the fast path. See
|
|
+ Documentation/static-keys.txt for details.
|
|
+
|
|
+config LRU_GEN_STATS
|
|
+ bool "Full stats for debugging"
|
|
+ depends on LRU_GEN
|
|
+ help
|
|
+ This option keeps full stats for each generation, which can be read
|
|
+ from /sys/kernel/debug/lru_gen_full.
|
|
+
|
|
+ Warning: do not enable this option unless you plan to use it because
|
|
+ it introduces an additional small per-process and per-memcg and
|
|
+ per-node memory overhead.
|
|
+
|
|
+config NR_LRU_GENS
|
|
+ int "Max number of generations"
|
|
+ depends on LRU_GEN
|
|
+ range 4 31
|
|
+ default 7
|
|
+ help
|
|
+ This will use order_base_2(N+1) spare bits from page flags.
|
|
+
|
|
+ Warning: do not use numbers larger than necessary because each
|
|
+ generation introduces a small per-node and per-memcg memory overhead.
|
|
+
|
|
+config TIERS_PER_GEN
|
|
+ int "Number of tiers per generation"
|
|
+ depends on LRU_GEN
|
|
+ range 2 5
|
|
+ default 4
|
|
+ help
|
|
+ This will use N-2 spare bits from page flags.
|
|
+
|
|
+ Larger values generally offer better protection to active pages under
|
|
+ heavy buffered I/O workloads.
|
|
+# }
|
|
+
|
|
endmenu
|