From: Yang Yingliang
ohos inclusion
category: bugfix
issue: #I4LRGQ
CVE: NA
----------------------------------------
The kernel memory accounting for all memory cgroups is
not stable, and it will cause a 100% regression in
hackbench compared with kernel-4.19, so disable it by
default. We can use the following command line to enable
or disable it:
cgroup.memory=kmem or cgroup.memory=kmem.
Signed-off-by: Yang Yingliang
Reviewed-by: Kefeng Wang
Signed-off-by: Zheng Zengkai
Signed-off-by: Yu Changchun
---
Documentation/admin-guide/cgroup-v1/memory.rst | 6 +++---
Documentation/admin-guide/kernel-parameters.txt | 1 +
mm/memcontrol.c | 6 ++++--
3 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/Documentation/admin-guide/cgroup-v1/memory.rst b/Documentation/admin-guide/cgroup-v1/memory.rst
index 12757e63b26c..fd913ae64ea8 100644
--- a/Documentation/admin-guide/cgroup-v1/memory.rst
+++ b/Documentation/admin-guide/cgroup-v1/memory.rst
@@ -308,9 +308,9 @@ the amount of kernel memory used by the system. Kernel memory is fundamentally
different than user memory, since it can't be swapped out, which makes it
possible to DoS the system by consuming too much of this precious resource.
-Kernel memory accounting is enabled for all memory cgroups by default. But
-it can be disabled system-wide by passing cgroup.memory=nokmem to the kernel
-at boot time. In this case, kernel memory will not be accounted at all.
+Kernel memory accounting is disabled for all memory cgroups by default. But
+it can be enabled system-wide by passing cgroup.memory=kmem to the kernel
+at boot time. In this case, kernel memory will all be accounted.
Kernel memory limits are not imposed for the root cgroup. Usage for the root
cgroup may or may not be accounted. The memory used is accumulated into
diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
index f103667d3727..4c0a0ca7542e 100644
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
@@ -517,6 +517,7 @@
Format: <string>
nosocket -- Disable socket memory accounting.
nokmem -- Disable kernel memory accounting.
+ kmem -- Enable kernel memory accounting.
checkreqprot [SELINUX] Set initial checkreqprot flag value.
Format: { "0" | "1" }
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index 92bf987d0a41..00156aebbcad 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -79,8 +79,8 @@ DEFINE_PER_CPU(struct mem_cgroup *, int_active_memcg);
/* Socket memory accounting disabled? */
static bool cgroup_memory_nosocket;
-/* Kernel memory accounting disabled? */
-static bool cgroup_memory_nokmem;
+/* Kernel memory accounting disabled */
+static bool cgroup_memory_nokmem = true;
/* Whether the swap controller is active */
#ifdef CONFIG_MEMCG_SWAP
@@ -7134,6 +7134,8 @@ static int __init cgroup_memory(char *s)
cgroup_memory_nosocket = true;
if (!strcmp(token, "nokmem"))
cgroup_memory_nokmem = true;
+ else if (!strcmp(token, "kmem"))
+ cgroup_memory_nokmem = false;
}
return 0;
}
--
2.25.1