lkml.org 
[lkml]   [2022]   [May]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH mm v3 1/9] memcg: enable accounting for struct cgroup
    Creating each new cgroup allocates 4Kb for struct cgroup. This is the
    largest memory allocation in this scenario and is epecially important
    for small VMs with 1-2 CPUs.

    Common part of the cgroup creation:
    Allocs Alloc $1*$2 Sum Allocation
    number size
    --------------------------------------------
    16 ~ 352 5632 5632 KERNFS
    1 + 4096 4096 9728 (cgroup_mkdir+0xe4)
    1 584 584 10312 (radix_tree_node_alloc.constprop.0+0x89)
    1 192 192 10504 (__d_alloc+0x29)
    2 72 144 10648 (avc_alloc_node+0x27)
    2 64 128 10776 (percpu_ref_init+0x6a)
    1 64 64 10840 (memcg_list_lru_alloc+0x21a)
    percpu:
    1 + 192 192 192 call_site=psi_cgroup_alloc+0x1e
    1 + 96 96 288 call_site=cgroup_rstat_init+0x5f
    2 12 24 312 call_site=percpu_ref_init+0x23
    1 6 6 318 call_site=__percpu_counter_init+0x22

    '+' -- to be accounted,
    '~' -- partially accounted

    Accounting of this memory helps to avoid misuse inside memcg-limited
    containers.

    Signed-off-by: Vasily Averin <vvs@openvz.org>
    Reviewed-by: Roman Gushchin <roman.gushchin@linux.dev>
    Reviewed-by: Michal Koutný <mkoutny@suse.com>
    Acked-by: Shakeel Butt <shakeelb@google.com>
    Reviewed-by: Muchun Song <songmuchun@bytedance.com>
    ---
    kernel/cgroup/cgroup.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c
    index 1779ccddb734..1be0f81fe8e1 100644
    --- a/kernel/cgroup/cgroup.c
    +++ b/kernel/cgroup/cgroup.c
    @@ -5353,7 +5353,7 @@ static struct cgroup *cgroup_create(struct cgroup *parent, const char *name,

    /* allocate the cgroup and its ID, 0 is reserved for the root */
    cgrp = kzalloc(struct_size(cgrp, ancestor_ids, (level + 1)),
    - GFP_KERNEL);
    + GFP_KERNEL_ACCOUNT);
    if (!cgrp)
    return ERR_PTR(-ENOMEM);

    --
    2.36.1
    \
     
     \ /
      Last update: 2022-05-30 13:27    [W:4.737 / U:0.124 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site