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@xxxxxxxxxxxxxxxxxxx> > Acked-by: Dave Hansen <dave.hansen@xxxxxxxxxxxxxxx> Acked-by: Vlastimil Babka <vbabka@xxxxxxx>