Re: [RFC PATCH] mm/readahead: readahead aggressively if read drops in willneed range

From: Matthew Wilcox
Date: Sun Jan 28 2024 - 17:03:04 EST


On Sun, Jan 28, 2024 at 10:25:22PM +0800, Ming Lei wrote:
> Since commit 6d2be915e589 ("mm/readahead.c: fix readahead failure for
> memoryless NUMA nodes and limit readahead max_pages"), ADV_WILLNEED
> only tries to readahead 512 pages, and the remained part in the advised
> range fallback on normal readahead.

Does the MAINTAINERS file mean nothing any more?

> If bdi->ra_pages is set as small, readahead will perform not efficient
> enough. Increasing read ahead may not be an option since workload may
> have mixed random and sequential I/O.

I thik there needs to be a lot more explanation than this about what's
going on before we jump to "And therefore this patch is the right
answer".

> @@ -972,6 +974,7 @@ struct file_ra_state {
> unsigned int ra_pages;
> unsigned int mmap_miss;
> loff_t prev_pos;
> + struct maple_tree *need_mt;

No. Embed the struct maple tree. Don't allocate it. What made you
think this was the right approach?