文章归档

memory.force_empty清空cgroup内存

目录索引

linux-2.6.32.68

memory.force_empty这个参数的最主要作用就是触发cgroup内存回收。但是有两种方式:

  1. root用户通过echo 1 > memory.force_empty 强制回收内存
  2. memory cgroup被删除时,会将当前计数charge到parent cgroup。(可能会触发parent cgroup的内存回收)

对应内核的函数是

/*
 * make mem_cgroup's charge to be 0 if there is no task.
 * This enables deleting this mem_cgroup.
 */
static int mem_cgroup_force_empty(struct mem_cgroup *mem, bool free_all)

这个函数的使用有两个基本的前提条件:

  1. 当前cgroup里不允许有任何进程
  2. 不存在子cgroup

因为mem_cgroup_force_empty()函数的实现里多处使用如下判断:

    if (cgroup_task_count(cgrp) || !list_empty(&cgrp->children))
        goto out;

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>