All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@linux-foundation.org>
To: Roman Gushchin <guro@fb.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>,
	Michal Hocko <mhocko@kernel.org>, <linux-mm@kvack.org>,
	<kernel-team@fb.com>, <linux-kernel@vger.kernel.org>,
	Bharata B Rao <bharata@linux.ibm.com>, <stable@vger.kernel.org>
Subject: Re: [PATCH] mm: fork: fix kernel_stack memcg stats for various stack implementations
Date: Sat, 21 Mar 2020 16:48:56 -0700	[thread overview]
Message-ID: <20200321164856.be68344b7fac84b759e23727@linux-foundation.org> (raw)
In-Reply-To: <20200303233550.251375-1-guro@fb.com>

On Tue, 3 Mar 2020 15:35:50 -0800 Roman Gushchin <guro@fb.com> wrote:

> Depending on CONFIG_VMAP_STACK and the THREAD_SIZE / PAGE_SIZE ratio
> the space for task stacks can be allocated using __vmalloc_node_range(),
> alloc_pages_node() and kmem_cache_alloc_node(). In the first and the
> second cases page->mem_cgroup pointer is set, but in the third it's
> not: memcg membership of a slab page should be determined using the
> memcg_from_slab_page() function, which looks at
> page->slab_cache->memcg_params.memcg . In this case, using
> mod_memcg_page_state() (as in account_kernel_stack()) is incorrect:
> page->mem_cgroup pointer is NULL even for pages charged to a non-root
> memory cgroup.
> 
> It can lead to kernel_stack per-memcg counters permanently showing 0
> on some architectures (depending on the configuration).
> 
> In order to fix it, let's introduce a mod_memcg_obj_state() helper,
> which takes a pointer to a kernel object as a first argument, uses
> mem_cgroup_from_obj() to get a RCU-protected memcg pointer and
> calls mod_memcg_state(). It allows to handle all possible
> configurations (CONFIG_VMAP_STACK and various THREAD_SIZE/PAGE_SIZE
> values) without spilling any memcg/kmem specifics into fork.c .
> 
> Note: this patch has been first posted as a part of the new slab
> controller patchset. This is a slightly updated version: the fixes
> tag has been added and the commit log was extended by the advice
> of Johannes Weiner. Because it's a fix that makes sense by itself,
> I'm re-posting it as a standalone patch.

Actually, it isn't a standalone patch.

> --- a/mm/memcontrol.c
> +++ b/mm/memcontrol.c
> @@ -776,6 +776,17 @@ void __mod_lruvec_slab_state(void *p, enum node_stat_item idx, int val)
>  	rcu_read_unlock();
>  }
>  
> +void mod_memcg_obj_state(void *p, int idx, int val)
> +{
> +	struct mem_cgroup *memcg;
> +
> +	rcu_read_lock();
> +	memcg = mem_cgroup_from_obj(p);
> +	if (memcg)
> +		mod_memcg_state(memcg, idx, val);
> +	rcu_read_unlock();
> +}

mem_cgroup_from_obj() is later added by
http://lkml.kernel.org/r/20200117203609.3146239-1-guro@fb.com

We could merge both mm-memcg-slab-introduce-mem_cgroup_from_obj.patch
and this patch, but that's a whole lot of stuff to backport into
-stable.

Are you able to come up with a simpler suitable-for-stable fix?

  parent reply	other threads:[~2020-03-21 23:48 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-03 23:35 [PATCH] mm: fork: fix kernel_stack memcg stats for various stack implementations Roman Gushchin
2020-03-03 23:54 ` Shakeel Butt
2020-03-03 23:54   ` Shakeel Butt
2020-03-04  0:43 ` Johannes Weiner
2020-03-21 23:48 ` Andrew Morton [this message]
2020-03-22 16:37   ` Roman Gushchin
2020-03-24  0:42   ` Roman Gushchin
2020-03-24  1:03     ` Andrew Morton
2020-03-24  1:06       ` Andrew Morton
2020-03-24  1:08         ` Andrew Morton

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200321164856.be68344b7fac84b759e23727@linux-foundation.org \
    --to=akpm@linux-foundation.org \
    --cc=bharata@linux.ibm.com \
    --cc=guro@fb.com \
    --cc=hannes@cmpxchg.org \
    --cc=kernel-team@fb.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mhocko@kernel.org \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.