Re: [PATCH 4/6] mm/page_alloc: Scale the number of pages that are batch freed

Vlastimil Babka
2021-05-28T11:20:10Z

On 5/25/21 10:01 AM, Mel Gorman wrote:
> When a task is freeing a large number of order-0 pages, it may acquire
> the zone->lock multiple times freeing pages in batches. This may
> unnecessarily contend on the zone lock when freeing very large number
> of pages. This patch adapts the size of the batch based on the recent
> pattern to scale the batch size for subsequent frees.
>
> As the machines I used were not large enough to test this are not large
> enough to illustrate a problem, a debugging patch shows patterns like
> the following (slightly editted for clarity)
>
> Baseline vanilla kernel
> time-unmap-14426 [...] free_pcppages_bulk: free 63 count 378 high 378
> time-unmap-14426 [...] free_pcppages_bulk: free 63 count 378 high 378
> time-unmap-14426 [...] free_pcppages_bulk: free 63 count 378 high 378
> time-unmap-14426 [...] free_pcppages_bulk: free 63 count 378 high 378
> time-unmap-14426 [...] free_pcppages_bulk: free 63 count 378 high 378
>
> With patches
> time-unmap-7724 [...] free_pcppages_bulk: free 126 count 814 high 814
> time-unmap-7724 [...] free_pcppages_bulk: free 252 count 814 high 814
> time-unmap-7724 [...] free_pcppages_bulk: free 504 count 814 high 814
> time-unmap-7724 [...] free_pcppages_bulk: free 751 count 814 high 814
> time-unmap-7724 [...] free_pcppages_bulk: free 751 count 814 high 814
>
> Signed-off-by: Mel Gorman <mgorman@techsingularity.net>
> Acked-by: Dave Hansen <dave.hansen@linux.intel.com>

Acked-by: Vlastimil Babka <vbabka@suse.cz>