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
next prev parent 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