Skip to content

Commit 6a4746b

Browse files
vaverintorvalds
authored andcommitted
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. Considering at least 2 pages for task_struct and 2 pages for the kernel stack, a back of the envelope calculation gives a footprint amplification of <1.5 so this temporal buffer can be safely ignored. The factor would IMO be interesting if it was >> 2 (from the PoV of excessive (ab)use, fine-grained accounting seems to be currently unfeasible due to performance impact). Link: https://lore.kernel.org/lkml/[email protected]/ Fixes: 1831949 ("memcg: enable accounting of ipc resources") Signed-off-by: Vasily Averin <[email protected]> Acked-by: Michal Hocko <[email protected]> Reviewed-by: Michal Koutný <[email protected]> Acked-by: Shakeel Butt <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
1 parent 1619b69 commit 6a4746b

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

ipc/sem.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2238,7 +2238,7 @@ static long do_semtimedop(int semid, struct sembuf __user *tsops,
22382238
return -EINVAL;
22392239

22402240
if (nsops > SEMOPM_FAST) {
2241-
sops = kvmalloc_array(nsops, sizeof(*sops), GFP_KERNEL_ACCOUNT);
2241+
sops = kvmalloc_array(nsops, sizeof(*sops), GFP_KERNEL);
22422242
if (sops == NULL)
22432243
return -ENOMEM;
22442244
}

0 commit comments

Comments
 (0)