linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Yang Shi <shy828301@gmail.com>
To: John Hubbard <jhubbard@nvidia.com>
Cc: "Huang, Ying" <ying.huang@intel.com>,
	Alistair Popple <apopple@nvidia.com>,
	linux-mm@kvack.org,  linux-kernel@vger.kernel.org,
	Andrew Morton <akpm@linux-foundation.org>,
	 Zi Yan <ziy@nvidia.com>,
	Baolin Wang <baolin.wang@linux.alibaba.com>,
	 Oscar Salvador <osalvador@suse.de>,
	Matthew Wilcox <willy@infradead.org>
Subject: Re: [RFC 2/6] mm/migrate_pages: split unmap_and_move() to _unmap() and _move()
Date: Tue, 27 Sep 2022 13:57:47 -0700	[thread overview]
Message-ID: <CAHbLzkqRyav0fZ5gzaKbkTfGBxkQXTpu0NJz-A9j7UaHhVBxEQ@mail.gmail.com> (raw)
In-Reply-To: <46807002-c42c-1232-0938-5b48050171ee@nvidia.com>

On Tue, Sep 27, 2022 at 1:35 PM John Hubbard <jhubbard@nvidia.com> wrote:
>
> On 9/26/22 18:51, Huang, Ying wrote:
> >>> But there might be other cases which may incur deadlock, for example,
> >>> filesystem writeback IIUC. Some filesystems may lock a bunch of pages
> >>> then write them back in a batch. The same pages may be on the
> >>> migration list and they are also dirty and seen by writeback. I'm not
> >>> sure whether I miss something that could prevent such a deadlock from
> >>> happening.
> >>
> >> I'm not overly familiar with that area but I would assume any filesystem
> >> code doing this would already have to deal with deadlock potential.
> >
> > Thank you very much for pointing this out.  I think the deadlock is a
> > real issue.  Anyway, we shouldn't forbid other places in kernel to lock
> > 2 pages at the same time.
> >
>
> I also agree that we cannot make any rules such as "do not lock > 1 page
> at the same time, elsewhere in the kernel", because it is already
> happening, for example in page-writeback.c, which locks PAGEVEC_SIZE
> (15) pages per batch [1].
>
> The only deadlock prevention convention that I see is the convention of
> locking the pages in order of ascending address. That only helps if
> everything does it that way, and migrate code definitely does not.
> However...I thought that up until now, at least, the migrate code relied
> on trylock (which can fail, and so migration can fail, too), to avoid
> deadlock. Is that changing somehow, I didn't see it?

The trylock is used by async mode which does try to avoid blocking.
But sync mode does use lock. The current implementation of migration
does migrate one page at a time, so it is not a problem.

>
>
> [1] https://elixir.bootlin.com/linux/latest/source/mm/page-writeback.c#L2296
>
> thanks,
>
> --
> John Hubbard
> NVIDIA
>
> > The simplest solution is to batch page migration only if mode ==
> > MIGRATE_ASYNC.  Then we may consider to fall back to non-batch mode if
> > mode != MIGRATE_ASYNC and trylock page fails.
> >
>
>


  reply	other threads:[~2022-09-27 20:58 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-21  6:06 [RFC 0/6] migrate_pages(): batch TLB flushing Huang Ying
2022-09-21  6:06 ` [RFC 1/6] mm/migrate_pages: separate huge page and normal pages migration Huang Ying
2022-09-21 15:55   ` Zi Yan
2022-09-22  1:14     ` Huang, Ying
2022-09-22  6:03   ` Baolin Wang
2022-09-22  6:22     ` Huang, Ying
2022-09-21  6:06 ` [RFC 2/6] mm/migrate_pages: split unmap_and_move() to _unmap() and _move() Huang Ying
2022-09-21 16:08   ` Zi Yan
2022-09-22  1:15     ` Huang, Ying
2022-09-22  6:36   ` Baolin Wang
2022-09-26  9:28   ` Alistair Popple
2022-09-26 18:06     ` Yang Shi
2022-09-27  0:02       ` Alistair Popple
2022-09-27  1:51         ` Huang, Ying
2022-09-27 20:34           ` John Hubbard
2022-09-27 20:57             ` Yang Shi [this message]
2022-09-28  0:59               ` Alistair Popple
2022-09-28  1:41                 ` Huang, Ying
2022-09-28  1:44                   ` John Hubbard
2022-09-28  1:49                     ` Yang Shi
2022-09-28  1:56                       ` John Hubbard
2022-09-28  2:14                         ` Yang Shi
2022-09-28  2:57                           ` John Hubbard
2022-09-28  3:25                             ` Yang Shi
2022-09-28  3:39                               ` Yang Shi
2022-09-27 20:56           ` Yang Shi
2022-09-27 20:54         ` Yang Shi
2022-09-21  6:06 ` [RFC 3/6] mm/migrate_pages: restrict number of pages to migrate in batch Huang Ying
2022-09-21 16:10   ` Zi Yan
2022-09-21 16:15     ` Zi Yan
2022-09-22  1:15     ` Huang, Ying
2022-09-21  6:06 ` [RFC 4/6] mm/migrate_pages: batch _unmap and _move Huang Ying
2022-09-21  6:06 ` [RFC 5/6] mm/migrate_pages: share more code between " Huang Ying
2022-09-21  6:06 ` [RFC 6/6] mm/migrate_pages: batch flushing TLB Huang Ying
2022-09-21 15:47 ` [RFC 0/6] migrate_pages(): batch TLB flushing Zi Yan
2022-09-22  1:45   ` Huang, Ying
2022-09-22  3:47   ` haoxin
2022-09-22  4:36     ` Huang, Ying
2022-09-22 12:50 ` Bharata B Rao
2022-09-23  7:52   ` Huang, Ying
2022-09-27 10:46     ` Bharata B Rao
2022-09-28  1:46       ` Huang, Ying
2022-09-26  9:11 ` Alistair Popple
2022-09-27 11:21 ` haoxin
2022-09-28  2:01   ` Huang, Ying
2022-09-28  3:33     ` haoxin
2022-09-28  4:53       ` Huang, Ying
2022-11-01 14:49   ` Hesham Almatary
2022-11-02  3:14     ` Huang, Ying
2022-11-02 14:13       ` Hesham Almatary

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=CAHbLzkqRyav0fZ5gzaKbkTfGBxkQXTpu0NJz-A9j7UaHhVBxEQ@mail.gmail.com \
    --to=shy828301@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=apopple@nvidia.com \
    --cc=baolin.wang@linux.alibaba.com \
    --cc=jhubbard@nvidia.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=osalvador@suse.de \
    --cc=willy@infradead.org \
    --cc=ying.huang@intel.com \
    --cc=ziy@nvidia.com \
    /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).