Re: [RFC PATCH v2 1/3] mm: Factor out the pagetable pages account into new helper function

From: Baolin Wang
Date: Fri Jun 24 2022 - 04:41:48 EST




On 6/24/2022 12:07 AM, Matthew Wilcox wrote:
On Wed, Jun 22, 2022 at 04:58:52PM +0800, Baolin Wang wrote:
+static inline void pgtable_set_and_inc(struct page *page)
+{
+ __SetPageTable(page);
+ inc_lruvec_page_state(page, NR_PAGETABLE);
+}

I don't like the names. The accounting is also wrong for non-order-0
allocations. It should be

mod_lruvec_page_state(page, NR_PAGETABLE, compound_nr(page))

Yes, seems need another patch to convert using compound_nr().


but it's probably better to change the API to pass in the number of
pages instead of recalculating it.

Lots of callers will not calculate the number of pages, so I think we can just add the compound_nr() in the API firstly, which also can avoid changing lots of callers.

I can't think of a good name. What's wrong with just adding

static inline bool pgtable_pud_page_ctor(struct page *page)

to go along with the pte and pmd variants?

IMHO that means we will need another function like pgtable_kernel_pte_page_ctor/dtor() to account kernel pagetable, however they do the same thing. So a common function which only do '__SetPageTable' and account pagetable will be more helpful.

So how about pgtable_page_inc()/pgtable_page_dec()?