From: Ming Lei <ming.lei@redhat.com>
To: Matthew Wilcox <willy@infradead.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
linux-fsdevel@vger.kernel.org, linux-mm@kvack.org,
linux-kernel@vger.kernel.org, Mike Snitzer <snitzer@kernel.org>,
Don Dutile <ddutile@redhat.com>,
Raghavendra K T <raghavendra.kt@linux.vnet.ibm.com>,
ming.lei@redhat.com
Subject: Re: [RFC PATCH] mm/readahead: readahead aggressively if read drops in willneed range
Date: Mon, 29 Jan 2024 11:00:36 +0800 [thread overview]
Message-ID: <ZbcU1PXACdxbtjWx@fedora> (raw)
In-Reply-To: <ZbbPCQZdazF7s0_b@casper.infradead.org>
On Sun, Jan 28, 2024 at 10:02:49PM +0000, Matthew Wilcox wrote:
> 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?
It is just miss to Cc you, sorry.
>
> > 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".
Both 6d2be915e589 and the commit log provids background about this
issue, let me explain it more:
1) before commit 6d2be915e589, madvise/fadvise(WILLNEED)/readahead
syscalls try to readahead in the specified range if memory is allowed,
and for each readahead in this range, the ra size is set as max sectors
of the block device, see force_page_cache_ra().
2) since commit 6d2be915e589, only 2MB bytes are load in these syscalls,
and the remained bytes fallback to future normal readahead when reads
from page cache or mmap buffer
3) this patch wires the advise(WILLNEED) range info to normal readahead for
both mmap fault and buffered read code path, so each readhead can use
max sectors of block size for the ra, basically takes the similar
approach before commit 6d2be915e589
>
> > @@ -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?
Can you explain why it has to be embedded? core-api/maple_tree.rst
mentioned it is fine to call "mt_init() for dynamically allocated ones".
maple tree provides one easy way to record the advised willneed range,
so readahead code path can apply this info for speedup readahead.
Thanks,
Ming
next prev parent reply other threads:[~2024-01-29 3:00 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-28 14:25 [RFC PATCH] mm/readahead: readahead aggressively if read drops in willneed range Ming Lei
2024-01-28 22:02 ` Matthew Wilcox
2024-01-28 23:12 ` Mike Snitzer
2024-01-29 0:21 ` Matthew Wilcox
2024-01-29 0:39 ` Mike Snitzer
2024-01-29 1:47 ` Dave Chinner
2024-01-29 2:12 ` Mike Snitzer
2024-01-29 4:56 ` Dave Chinner
2024-01-29 3:57 ` Ming Lei
2024-01-29 5:15 ` Dave Chinner
2024-01-29 8:25 ` Ming Lei
2024-01-29 13:26 ` Matthew Wilcox
2024-01-29 22:07 ` Dave Chinner
2024-01-30 3:13 ` Ming Lei
2024-01-30 5:29 ` Dave Chinner
2024-01-30 11:34 ` Ming Lei
2024-01-29 3:20 ` Ming Lei
2024-01-29 3:00 ` Ming Lei [this message]
2024-01-29 17:19 ` Mike Snitzer
2024-01-29 17:42 ` Mike Snitzer
2024-01-29 22:12 ` Dave Chinner
2024-01-29 22:46 ` Mike Snitzer
2024-01-30 10:43 ` David Hildenbrand
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZbcU1PXACdxbtjWx@fedora \
--to=ming.lei@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=ddutile@redhat.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=raghavendra.kt@linux.vnet.ibm.com \
--cc=snitzer@kernel.org \
--cc=willy@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).