memory.force_empty清空cgroup内存

Time: 十一月 5, 2015
Category: 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 Comment