Re: [PATCH v3 00/11] Mitigate a vmap lock contention v3

Pedro Falcato
2024-02-22T23:16:11Z

Hi,

On Thu, Feb 22, 2024 at 8:35 AM Uladzislau Rezki <urezki@gmail.com> wrote:
>
> Hello, Folk!
>
>[...]
> pagetable_alloc - gets increased as soon as a higher pressure is applied by
> increasing number of workers. Running same number of jobs on a next run
> does not increase it and stays on same level as on previous.
>
> /**
> * pagetable_alloc - Allocate pagetables
> * @gfp: GFP flags
> * @order: desired pagetable order
> *
> * pagetable_alloc allocates memory for page tables as well as a page table
> * descriptor to describe that memory.
> *
> * Return: The ptdesc describing the allocated page tables.
> */
> static inline struct ptdesc *pagetable_alloc(gfp_t gfp, unsigned int order)
> {
> struct page *page = alloc_pages(gfp | __GFP_COMP, order);
>
> return page_ptdesc(page);
> }
>
> Could you please comment on it? Or do you have any thought? Is it expected?
> Is a page-table ever shrink?

It's my understanding that the vunmap_range helpers don't actively
free page tables, they just clear PTEs. munmap does free them in
mmap.c:free_pgtables, maybe something could be worked up for vmalloc
too.
I would not be surprised if the memory increase you're seeing is more
or less correlated to the maximum vmalloc footprint throughout the
whole test.

--
Pedro