linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Hyeonggon Yoo <42.hyeyoo@gmail.com>
To: Yafang Shao <laoar.shao@gmail.com>
Cc: akpm@linux-foundation.org, vbabka@suse.cz, willy@infradead.org,
	linux-mm@kvack.org
Subject: Re: [PATCH -mm 0/2] mm: page_ext: split page_ext flags
Date: Sun, 18 Dec 2022 20:22:21 +0900	[thread overview]
Message-ID: <Y5737VEzwRuncw7W@hyeyoo> (raw)
In-Reply-To: <CALOAHbB6sncbuUO4wSDH7YL8QGM1f8p1AXgsJAMwXBq2qoMBNg@mail.gmail.com>

On Sun, Dec 18, 2022 at 06:01:09PM +0800, Yafang Shao wrote:
> On Sun, Dec 18, 2022 at 4:08 PM Hyeonggon Yoo <42.hyeyoo@gmail.com> wrote:
> >
> > On Sat, Dec 17, 2022 at 10:58:31AM +0000, Yafang Shao wrote:
> > > On 64bit system, page extension is for debugging purpose only currently,
> > > because of its overhead, in particular the memory overhead.
> > >
> > > Once a page_ext is enabled, at least it will take 0.2% of the total
> > > memory because of the page_ext flags, no matter this page_ext uses it or
> > > not. Currently this page_ext flags is only used for page_owner on 64bit
> > > system. So it doesn't make sense to allocate this flags for all page_ext
> > > by default. We'd better move it into page_owner's structure, then when
> > > someone wants to introduce a new page_ext which may be memory-overhead
> > > sensitive, it will save this unneeded overhead.
> >
> 
> Hi Hyeonggon,

Hi Yafang.

> > I'm still worried about the approach of using page_ext for BPF memory
> > accounting.
> >
> 
> This patchset is independent of BPF memory accounting. It is just an
> improvement for the page_ext itself.

this improvement doesn't make sense until we have non-debugging/memory
overhead sensitive use case of page_ext.

> > Let's say we finally accepted the approach of using page_ext for BPF memory
> > accounting, and if it's not enabled by default, you need to rebuild the kernel
> > when you want to check BPF memory usage. (Or make everyone bear the overhead
> > by enabling page_ext default for BPF memory accounting that one may not be interested)
> >
> 
> The compile config can be enabled by default, but the static key is
> disabled by default.  That said, the user doesn't need to rebuild the
> kernel. The user can pass a kernel parameter to enable or disable it.
> But that doesn't mean I have made a final decision to use page_ext to
> account for it.

Okay.

> I will investigate if the dynamic page_ext can be
> introduced or not first.  If we can allocate page_ext dynamically
> rather than allocate them at boot, the page_ext will be used in the
> production environment rather than for debugging purposes only, that
> will make it more useful.

IMHO that's gonna be quite challenging....

To get page_ext using pfn, we need array of page_ext.
And in FLATMEM size of the array can be bigger than
maximum allocation size supported by buddy allocator.
(that's why page_ext uses early memory allocator, memblock in FLATMEM
 and memblock is unavailable after boot process)

Why challenge page_ext if call_rcu() can solve the problem? 

> > How the problem of accounting kfree_rcu() is going?
> > Doesn't call_rcu() work for the problem?
> > I still think it's much more feasible.
> >
> 
> I'm also investigating the call_rcu() solution. The disadvantage of
> call_rcu(), as I have explained in earlier replyment, is that it adds
> restrictions for this solution

What kind of restrictions did you mean?

> and it can be broken easily if MM guys
> introduce other deferred freeing functions inside mm/.  That will be a
> burden for further development.

No, if call_rcu() is called in BPF subsystem and if the callback just accounts
memory usage & calls memory free API (like kfree()/vfree()/etc),
this is not going to be burden for MM developers at all.

Also, even if it is considered as burden, it can be justified because
it avoids increasing memory usage.

-- 
Thanks,
Hyeonggon


  reply	other threads:[~2022-12-18 11:22 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-17 10:58 Yafang Shao
2022-12-17 10:58 ` [PATCH -mm 1/2] mm: page_owner: split page_owner's flag from the comm flags Yafang Shao
2022-12-17 10:58 ` [PATCH -mm 2/2] mm: page_idle: split 32bit page_idle's flag from the common flags Yafang Shao
2022-12-17 12:45   ` kernel test robot
2022-12-17 13:59     ` Yafang Shao
2022-12-17 12:45   ` kernel test robot
2022-12-18  8:08 ` [PATCH -mm 0/2] mm: page_ext: split page_ext flags Hyeonggon Yoo
2022-12-18 10:01   ` Yafang Shao
2022-12-18 11:22     ` Hyeonggon Yoo [this message]
2023-01-16 10:58 ` Vlastimil Babka
2023-01-18  3:15   ` Yafang Shao

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=Y5737VEzwRuncw7W@hyeyoo \
    --to=42.hyeyoo@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=laoar.shao@gmail.com \
    --cc=linux-mm@kvack.org \
    --cc=vbabka@suse.cz \
    --cc=willy@infradead.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox