linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Michal Koutný" <mkoutny@suse.com>
To: Muchun Song <songmuchun@bytedance.com>
Cc: hannes@cmpxchg.org, mhocko@kernel.org, roman.gushchin@linux.dev,
	shakeelb@google.com, akpm@linux-foundation.org,
	cgroups@vger.kernel.org, linux-mm@kvack.org,
	linux-kernel@vger.kernel.org, duanxiongchun@bytedance.com,
	longman@redhat.com
Subject: Re: [PATCH v5 09/11] mm: memcontrol: use obj_cgroup APIs to charge the LRU pages
Date: Wed, 1 Jun 2022 19:34:38 +0200	[thread overview]
Message-ID: <20220601173438.GC2434@blackbody.suse.cz> (raw)
In-Reply-To: <20220530074919.46352-10-songmuchun@bytedance.com>

Hello Muchun.

On Mon, May 30, 2022 at 03:49:17PM +0800, Muchun Song <songmuchun@bytedance.com> wrote:
> +static inline bool obj_cgroup_is_root(struct obj_cgroup *objcg)
> +{
> +	return objcg == root_obj_cgroup;
> +}

Admittedly, this predicate alone caught my eye, why it did not also
check root_mem_cgroup->objcg_list.
However, deeper look reveals it's purpose is to avoid missing uncharges
of pages that were charged in non-root memcg and later re-associated
upwards after reparenting.
So it's like obj_cgroup_root_origin() (I'm not suggesting a rename, just
illustrating the understanding).

get_obj_cgroup_from_current() gains some complexity but it still holds
that in root memcg neither kernel objects nor LRU pages are charged.
At the same time, reparented kernel objects or LRU pages are properly
uncharged.

These parts are 
Reviewed-by: Michal Koutný <mkoutny@suse.com>

(I did not look into the locking guarantees with the new API though.)


  reply	other threads:[~2022-06-01 17:34 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-30  7:49 [PATCH v5 00/11] Use obj_cgroup APIs to charge the LRU pages Muchun Song
2022-05-30  7:49 ` [PATCH v5 01/11] mm: memcontrol: remove dead code and comments Muchun Song
2022-06-10 23:01   ` Roman Gushchin
2022-05-30  7:49 ` [PATCH v5 02/11] mm: rename unlock_page_lruvec{_irq, _irqrestore} to lruvec_unlock{_irq, _irqrestore} Muchun Song
2022-06-10 23:08   ` Roman Gushchin
2022-05-30  7:49 ` [PATCH v5 03/11] mm: memcontrol: prepare objcg API for non-kmem usage Muchun Song
2022-06-01 17:34   ` Michal Koutný
2022-06-01 18:33     ` Roman Gushchin
2022-06-02 10:48       ` Muchun Song
2022-06-02  3:06     ` Muchun Song
2022-06-10 23:13   ` Roman Gushchin
2022-05-30  7:49 ` [PATCH v5 04/11] mm: memcontrol: make lruvec lock safe when LRU pages are reparented Muchun Song
2022-05-30  7:49 ` [PATCH v5 05/11] mm: vmscan: rework move_pages_to_lru() Muchun Song
2022-05-30  7:49 ` [PATCH v5 06/11] mm: thp: make split queue lock safe when LRU pages are reparented Muchun Song
2022-05-30  7:49 ` [PATCH v5 07/11] mm: memcontrol: make all the callers of {folio,page}_memcg() safe Muchun Song
2022-06-19 19:37   ` Roman Gushchin
2022-06-20  6:13     ` Muchun Song
2022-05-30  7:49 ` [PATCH v5 08/11] mm: memcontrol: introduce memcg_reparent_ops Muchun Song
2022-06-19 19:47   ` Roman Gushchin
2022-06-20  7:14     ` Muchun Song
2022-05-30  7:49 ` [PATCH v5 09/11] mm: memcontrol: use obj_cgroup APIs to charge the LRU pages Muchun Song
2022-06-01 17:34   ` Michal Koutný [this message]
2022-06-02  4:14     ` Muchun Song
2022-06-19 20:32   ` Roman Gushchin
2022-05-30  7:49 ` [PATCH v5 10/11] mm: lru: add VM_BUG_ON_FOLIO to lru maintenance function Muchun Song
2022-06-19 19:49   ` Roman Gushchin
2022-05-30  7:49 ` [PATCH v5 11/11] mm: lru: use lruvec lock to serialize memcg changes Muchun Song
2022-05-30 21:17 ` [PATCH v5 00/11] Use obj_cgroup APIs to charge the LRU pages Andrew Morton
2022-05-31  2:26   ` Muchun Song
2022-05-31  2:46   ` Roman Gushchin
2022-05-31  2:41 ` Waiman Long
2022-05-31  7:29   ` Muchun Song
2022-06-09  2:43 ` Muchun Song
2022-06-09  2:53   ` Roman Gushchin
2022-06-09  3:09     ` Muchun Song

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=20220601173438.GC2434@blackbody.suse.cz \
    --to=mkoutny@suse.com \
    --cc=akpm@linux-foundation.org \
    --cc=cgroups@vger.kernel.org \
    --cc=duanxiongchun@bytedance.com \
    --cc=hannes@cmpxchg.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=longman@redhat.com \
    --cc=mhocko@kernel.org \
    --cc=roman.gushchin@linux.dev \
    --cc=shakeelb@google.com \
    --cc=songmuchun@bytedance.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).