linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Matthew Wilcox <willy@infradead.org>
To: Yafang Shao <laoar.shao@gmail.com>
Cc: akpm@linux-foundation.org, linux-mm@kvack.org
Subject: Re: [RFC PATCH] mm: Add large folio support for async readahead
Date: Mon, 4 Nov 2024 17:00:24 +0000	[thread overview]
Message-ID: <Zyj9qGEEIS5xRn2t@casper.infradead.org> (raw)
In-Reply-To: <20241104143015.34684-1-laoar.shao@gmail.com>

On Mon, Nov 04, 2024 at 10:30:15PM +0800, Yafang Shao wrote:
> When testing large folio support with XFS on our servers, we observed that
> only a few large folios are mapped when reading large files via mmap. This
> behavior occurs because large folio support is currently implemented only
> for sync readahead, not for async readahead. Consequently, while the
> first filemap fault may map to a large folio, subsequent filemap faults are
> mapped to regular folios. This can be verified with a simple test case, as
> shown below:

I awear I tested this and it worked at the time.  Here's what's supposed
to happen:

You touch the first byte of the mapping, and there's no page in the page
cache.  So we go into the sync readahead path, and force it to read two
PMDs.  From your email, I assume this is succeeding.  The readahead
flag gets set on the second PMD so that when we get to 2MB, we go into
the 'time to do more readahead' path, ie the 'do_async_mmap_readahead'
function you patch below.

Now, page_cache_async_ra() does this:

        unsigned int order = folio_order(folio);
...
        if (index == expected) {
                ra->start += ra->size;
                ra->size = get_next_ra_size(ra, max_pages);
                ra->async_size = ra->size;
                goto readit;
        }
readit:
        ractl->_index = ra->start;
        page_cache_ra_order(ractl, ra, order);

So it should already be doing readahead of PMD size.  Can you dig into
what's going wrong, now that you understand that this is supposed to
work already?


  reply	other threads:[~2024-11-04 17:00 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-11-04 14:30 Yafang Shao
2024-11-04 17:00 ` Matthew Wilcox [this message]
2024-11-05  3:01   ` Yafang Shao
2024-11-05  4:21     ` Matthew Wilcox
2024-11-05  5:48       ` Yafang Shao

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=Zyj9qGEEIS5xRn2t@casper.infradead.org \
    --to=willy@infradead.org \
    --cc=akpm@linux-foundation.org \
    --cc=laoar.shao@gmail.com \
    --cc=linux-mm@kvack.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