Re: [PATCH -mm 0/2] mm: page_ext: split page_ext flags

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, Dec 18, 2022 at 4:08 PM Hyeonggon Yoo <42.hyeyoo@xxxxxxxxx> 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,

> 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.

> 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.  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.

> 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 and it can be broken easily if MM guys
introduce other deferred freeing functions inside mm/.  That will be a
burden for further development.

-- 
Regards
Yafang




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux