[Devel] [PATCH RHEL8 COMMIT] ms/ipc: remove memcg accounting for sops objects in do_semtimedop()

Konstantin Khorenko khorenko at virtuozzo.com
Tue Sep 14 13:32:06 MSK 2021


The commit is pushed to "branch-rh8-4.18.0-305.3.1.vz8.7.x-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git
after rh8-4.18.0-305.3.1.vz8.7.12
------>
commit effeb8176f5999207f4d2a99314c54399640e3e8
Author: Vasily Averin <vvs at virtuozzo.com>
Date:   Tue Sep 14 09:56:06 2021 +0300

    ms/ipc: remove memcg accounting for sops objects in do_semtimedop()
    
    Linus proposes to revert an accounting for sops objects in
    do_semtimedop() because it's really just a temporary buffer
    for a single semtimedop() system call.
    
    This object can consume up to 2 pages, syscall is sleeping one,
    size and duration can be controlled by user, and this allocation
    can be repeated by many thread at the same time.
    
    However Shakeel Butt pointed that there are much more popular objects
    with the same life time and similar memory consumption, the accounting
    of which was decided to be rejected for performance reasons.
    
    In addition, any usual task consumes much more accounted memory,
    so 2 pages of this temporal buffer can be safely ignored.
    
    Link: https://patchwork.kernel.org/project/linux-fsdevel/patch/20171005222144.123797-1-shakeelb@google.com/
    [backport of upstream patch version]
    Link: https://lore.kernel.org/all/90e254df-0dfe-f080-011e-b7c53ee7fd20@virtuozzo.com/
    https://jira.sw.ru/browse/PSBM-128356
    Signed-off-by: Vasily Averin <vvs at virtuozzo.com>
    (cherry picked from vz7 commit bf7e83ec7683ec5e3bfd24afb131b490c238507c)
    
    To_merge: 9d6cf6fc1b6c ("memcg: charge kmem allocations accounted to UBC
    in PCS6 to memcg")
    Signed-off-by: Konstantin Khorenko <khorenko at virtuozzo.com>
---
 ipc/sem.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/ipc/sem.c b/ipc/sem.c
index 86f522d7bceb..6f1957869bb9 100644
--- a/ipc/sem.c
+++ b/ipc/sem.c
@@ -1962,7 +1962,7 @@ static long do_semtimedop(int semid, struct sembuf __user *tsops,
 	if (nsops > ns->sc_semopm)
 		return -E2BIG;
 	if (nsops > SEMOPM_FAST) {
-		sops = kvmalloc_array(nsops, sizeof(*sops), GFP_KERNEL_ACCOUNT);
+		sops = kvmalloc_array(nsops, sizeof(*sops), GFP_KERNEL);
 		if (sops == NULL)
 			return -ENOMEM;
 	}


More information about the Devel mailing list