[Devel] [PATCH RHEL COMMIT] ms/memcg: enable accounting for ldt_struct objects

Konstantin Khorenko khorenko at virtuozzo.com
Tue Sep 28 14:16:25 MSK 2021


The commit is pushed to "branch-rh9-5.14.vz9.1.x-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git
after ark-5.14
------>
commit b080f22dffa9d15451e48981a5a2d7c0fb8cc320
Author: Vasily Averin <vvs at virtuozzo.com>
Date:   Tue Sep 28 14:16:25 2021 +0300

    ms/memcg: enable accounting for ldt_struct objects
    
    Each task can request own LDT and force the kernel to allocate up to 64Kb
    memory per-mm.
    
    There are legitimate workloads with hundreds of processes and there can be
    hundreds of workloads running on large machines.  The unaccounted memory
    can cause isolation issues between the workloads particularly on highly
    utilized machines.
    
    It makes sense to account for this objects to restrict the host's memory
    consumption from inside the memcg-limited container.
    
    Link: https://lkml.kernel.org/r/38010594-50fe-c06d-7cb0-d1f77ca422f3@virtuozzo.com
    Signed-off-by: Vasily Averin <vvs at virtuozzo.com>
    
    Acked-by: Borislav Petkov <bp at suse.de>
    Reviewed-by: Shakeel Butt <shakeelb at google.com>
    Cc: Alexander Viro <viro at zeniv.linux.org.uk>
    Cc: Alexey Dobriyan <adobriyan at gmail.com>
    Cc: Andrei Vagin <avagin at gmail.com>
    Cc: Borislav Petkov <bp at alien8.de>
    Cc: Christian Brauner <christian.brauner at ubuntu.com>
    Cc: Dmitry Safonov <0x7f454c46 at gmail.com>
    Cc: "Eric W. Biederman" <ebiederm at xmission.com>
    Cc: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
    Cc: "H. Peter Anvin" <hpa at zytor.com>
    Cc: Ingo Molnar <mingo at redhat.com>
    Cc: "J. Bruce Fields" <bfields at fieldses.org>
    Cc: Jeff Layton <jlayton at kernel.org>
    Cc: Jens Axboe <axboe at kernel.dk>
    Cc: Jiri Slaby <jirislaby at kernel.org>
    Cc: Johannes Weiner <hannes at cmpxchg.org>
    Cc: Kirill Tkhai <ktkhai at virtuozzo.com>
    Cc: Michal Hocko <mhocko at kernel.org>
    Cc: Oleg Nesterov <oleg at redhat.com>
    Cc: Roman Gushchin <guro at fb.com>
    Cc: Serge Hallyn <serge at hallyn.com>
    Cc: Tejun Heo <tj at kernel.org>
    Cc: Thomas Gleixner <tglx at linutronix.de>
    Cc: Vladimir Davydov <vdavydov.dev at gmail.com>
    Cc: Yutian Yang <nglaive at gmail.com>
    Cc: Zefan Li <lizefan.x at bytedance.com>
    Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
    (cherry picked from commit ec403e2ae0dfc85996aad6e944a98a16e6dfcc6d)
    https://jira.sw.ru/browse/PSBM-133990
    Signed-off-by: Vasily Averin <vvs at virtuozzo.com>
---
 arch/x86/kernel/ldt.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/arch/x86/kernel/ldt.c b/arch/x86/kernel/ldt.c
index aa15132228da..525876e7b9f4 100644
--- a/arch/x86/kernel/ldt.c
+++ b/arch/x86/kernel/ldt.c
@@ -154,7 +154,7 @@ static struct ldt_struct *alloc_ldt_struct(unsigned int num_entries)
 	if (num_entries > LDT_ENTRIES)
 		return NULL;
 
-	new_ldt = kmalloc(sizeof(struct ldt_struct), GFP_KERNEL);
+	new_ldt = kmalloc(sizeof(struct ldt_struct), GFP_KERNEL_ACCOUNT);
 	if (!new_ldt)
 		return NULL;
 
@@ -168,9 +168,9 @@ static struct ldt_struct *alloc_ldt_struct(unsigned int num_entries)
 	 * than PAGE_SIZE.
 	 */
 	if (alloc_size > PAGE_SIZE)
-		new_ldt->entries = vzalloc(alloc_size);
+		new_ldt->entries = __vmalloc(alloc_size, GFP_KERNEL_ACCOUNT | __GFP_ZERO);
 	else
-		new_ldt->entries = (void *)get_zeroed_page(GFP_KERNEL);
+		new_ldt->entries = (void *)get_zeroed_page(GFP_KERNEL_ACCOUNT);
 
 	if (!new_ldt->entries) {
 		kfree(new_ldt);


More information about the Devel mailing list