Re: [patch] mm: memcontrol: switch soft limit default back to infinity

From: Michal Hocko
Date: Mon Dec 29 2014 - 03:22:42 EST


On Sun 28-12-14 13:47:48, Johannes Weiner wrote:
> 3e32cb2e0a12 ("mm: memcontrol: lockless page counters") accidentally
> switched the soft limit default from infinity to zero, which turns all

Should have noticed that during the review :/

> memcgs with even a single page into soft limit excessors and engages
> soft limit reclaim on all of them during global memory pressure. This
> makes global reclaim generally more aggressive, but also inverts the
> meaning of existing soft limit configurations where unset soft limits
> are usually more generous than set ones.
>
> Signed-off-by: Johannes Weiner <hannes@xxxxxxxxxxx>

Acked-by: Michal Hocko <mhocko@xxxxxxx>

Thanks!

> ---
> mm/memcontrol.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/mm/memcontrol.c b/mm/memcontrol.c
> index ef91e856c7e4..b7104a55ae64 100644
> --- a/mm/memcontrol.c
> +++ b/mm/memcontrol.c
> @@ -4679,6 +4679,7 @@ mem_cgroup_css_alloc(struct cgroup_subsys_state *parent_css)
> if (parent_css == NULL) {
> root_mem_cgroup = memcg;
> page_counter_init(&memcg->memory, NULL);
> + memcg->soft_limit = PAGE_COUNTER_MAX;
> page_counter_init(&memcg->memsw, NULL);
> page_counter_init(&memcg->kmem, NULL);
> }
> @@ -4724,6 +4725,7 @@ mem_cgroup_css_online(struct cgroup_subsys_state *css)
>
> if (parent->use_hierarchy) {
> page_counter_init(&memcg->memory, &parent->memory);
> + memcg->soft_limit = PAGE_COUNTER_MAX;
> page_counter_init(&memcg->memsw, &parent->memsw);
> page_counter_init(&memcg->kmem, &parent->kmem);
>
> @@ -4733,6 +4735,7 @@ mem_cgroup_css_online(struct cgroup_subsys_state *css)
> */
> } else {
> page_counter_init(&memcg->memory, NULL);
> + memcg->soft_limit = PAGE_COUNTER_MAX;
> page_counter_init(&memcg->memsw, NULL);
> page_counter_init(&memcg->kmem, NULL);
> /*
> @@ -4807,7 +4810,7 @@ static void mem_cgroup_css_reset(struct cgroup_subsys_state *css)
> mem_cgroup_resize_limit(memcg, PAGE_COUNTER_MAX);
> mem_cgroup_resize_memsw_limit(memcg, PAGE_COUNTER_MAX);
> memcg_update_kmem_limit(memcg, PAGE_COUNTER_MAX);
> - memcg->soft_limit = 0;
> + memcg->soft_limit = PAGE_COUNTER_MAX;
> }
>
> #ifdef CONFIG_MMU
> --
> 2.2.0
>

--
Michal Hocko
SUSE Labs
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/