]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
memcg: deprecate memory.force_empty knob
authorMichal Hocko <mhocko@suse.cz>
Thu, 26 Jun 2014 00:43:22 +0000 (10:43 +1000)
committerStephen Rothwell <sfr@canb.auug.org.au>
Fri, 27 Jun 2014 04:21:52 +0000 (14:21 +1000)
force_empty has been introduced primarily to drop memory before it gets
reparented on the group removal.  This alone doesn't sound fully justified
because reparented pages which are not in use can be reclaimed also later
when there is a memory pressure on the parent level.

Mark the knob CFTYPE_INSANE which tells the cgroup core that it shouldn't
create the knob with the experimental sane_behavior.  Other users will get
informed about the deprecation and asked to tell us more because I do not
expect most users will use sane_behavior cgroups mode very soon.

Anyway I expect that most users will be simply cgroup remove handlers
which do that since ever without having any good reason for it.

If somebody really cares because reparented pages, which would be dropped
otherwise, push out more important ones then we should fix the reparenting
code and put pages to the tail.

Signed-off-by: Michal Hocko <mhocko@suse.cz>
Acked-by: Johannes Weiner <hannes@cmpxchg.org>
Cc: Greg Thelen <gthelen@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Documentation/cgroups/memory.txt
mm/memcontrol.c

index 02ab997a1ed276d6e32928ec48cd2e82164d807a..e2a847c4943c954898c04482ca25b2d5ab1ce27c 100644 (file)
@@ -473,6 +473,9 @@ About use_hierarchy, see Section 6.
   write will still return success. In this case, it is expected that
   memory.kmem.usage_in_bytes == memory.usage_in_bytes.
 
+  Please note that this knob is considered deprecated and will be removed
+  in future.
+
   About use_hierarchy, see Section 6.
 
 5.2 stat file
index 6c3ffb02651e436c2db62b6837c468b1710b5c1b..a7b2a316468d706a58ce8940c9f4f7a1700a7d8d 100644 (file)
@@ -4135,6 +4135,10 @@ static ssize_t mem_cgroup_force_empty_write(struct kernfs_open_file *of,
 
        if (mem_cgroup_is_root(memcg))
                return -EINVAL;
+       pr_info("%s (%d): memory.force_empty is deprecated and will be removed.",
+                       current->comm, task_pid_nr(current));
+       pr_cont(" Let us know if you know if it needed in your usecase at");
+       pr_cont(" linux-mm@kvack.org\n");
        return mem_cgroup_force_empty(memcg) ?: nbytes;
 }
 
@@ -5311,6 +5315,7 @@ static struct cftype mem_cgroup_files[] = {
        },
        {
                .name = "force_empty",
+               .flags = CFTYPE_INSANE,
                .write = mem_cgroup_force_empty_write,
        },
        {