From: Dev Jain <dev.jain@arm.com>
To: akpm@linux-foundation.org, shuah@kernel.org, david@redhat.com,
willy@infradead.org
Cc: ryan.roberts@arm.com, anshuman.khandual@arm.com,
catalin.marinas@arm.com, cl@gentwo.org, vbabka@suse.cz,
mhocko@suse.com, apopple@nvidia.com, osalvador@suse.de,
baolin.wang@linux.alibaba.com, dave.hansen@linux.intel.com,
will@kernel.org, baohua@kernel.org, ioworker0@gmail.com,
gshan@redhat.com, mark.rutland@arm.com,
kirill.shutemov@linux.intel.com, hughd@google.com,
aneesh.kumar@kernel.org, yang@os.amperecomputing.com,
peterx@redhat.com, broonie@kernel.org,
mgorman@techsingularity.net,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, linux-mm@kvack.org,
linux-kselftest@vger.kernel.org, Dev Jain <dev.jain@arm.com>
Subject: [PATCH 0/2] Improve migration by backing off earlier
Date: Fri, 9 Aug 2024 16:01:27 +0530 [thread overview]
Message-ID: <20240809103129.365029-1-dev.jain@arm.com> (raw)
It was recently observed at [1] that during the folio unmapping stage
of migration, when the PTEs are cleared, a racing thread faulting on that
folio may increase the refcount of the folio, sleep on the folio lock
(the migration path has the lock), and migration ultimately fails
when asserting the actual refcount against the expected.
Migration is a best effort service; the unmapping and the moving phase
are wrapped around loops for retrying. The refcount of the folio is
currently being asserted during the move stage; if it fails, we retry.
But, if a racing thread changes the refcount, and ends up sleeping on the
folio lock (which is mostly the case), there is no way the refcount would
be decremented; as a result, this renders the retrying useless. In the
first patch, we make the refcount check also during the unmap stage; if
it fails, we restore the original state of the PTE, drop the folio lock,
let the system make progress, and retry unmapping again. This improves the
probability of migration winning the race.
Given that migration is a best-effort service, it is wrong to fail the
test for just a single failure; hence, fail the test after 100 consecutive
failures (where 100 is still a subjective choice).
[1] https://lore.kernel.org/all/20240801081657.1386743-1-dev.jain@arm.com/
Dev Jain (2):
mm: Retry migration earlier upon refcount mismatch
selftests/mm: Do not fail test for a single migration failure
mm/migrate.c | 9 +++++++++
tools/testing/selftests/mm/migration.c | 17 +++++++++++------
2 files changed, 20 insertions(+), 6 deletions(-)
--
2.30.2
next reply other threads:[~2024-08-09 10:32 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-09 10:31 Dev Jain [this message]
2024-08-09 10:31 ` [PATCH 1/2] mm: Retry migration earlier upon refcount mismatch Dev Jain
2024-08-09 13:47 ` David Hildenbrand
2024-08-09 21:09 ` Christoph Lameter (Ampere)
2024-08-10 18:42 ` Dev Jain
2024-08-10 18:52 ` David Hildenbrand
2024-08-11 6:06 ` Dev Jain
2024-08-11 9:08 ` David Hildenbrand
2024-08-12 5:35 ` Dev Jain
2024-08-12 9:30 ` David Hildenbrand
2024-08-10 21:05 ` Zi Yan
2024-08-12 5:34 ` Huang, Ying
2024-08-12 6:01 ` Dev Jain
2024-08-12 6:15 ` Huang, Ying
2024-08-12 6:52 ` Dev Jain
2024-08-12 7:31 ` Huang, Ying
2024-08-12 12:08 ` Dev Jain
2024-08-13 5:00 ` Dev Jain
2024-08-13 7:22 ` Dev Jain
2024-08-16 11:31 ` Dev Jain
2024-08-19 6:58 ` Huang, Ying
2024-08-20 7:16 ` Dev Jain
2024-09-02 6:42 ` Huang, Ying
2024-08-12 6:13 ` Dev Jain
2024-08-12 6:20 ` Huang, Ying
2024-08-12 6:32 ` Dev Jain
2024-08-09 10:31 ` [PATCH 2/2] selftests/mm: Do not fail test for a single migration failure Dev Jain
2024-08-09 17:13 ` Shuah Khan
2024-08-09 21:10 ` Christoph Lameter (Ampere)
2024-08-12 6:19 ` Dev Jain
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=20240809103129.365029-1-dev.jain@arm.com \
--to=dev.jain@arm.com \
--cc=akpm@linux-foundation.org \
--cc=aneesh.kumar@kernel.org \
--cc=anshuman.khandual@arm.com \
--cc=apopple@nvidia.com \
--cc=baohua@kernel.org \
--cc=baolin.wang@linux.alibaba.com \
--cc=broonie@kernel.org \
--cc=catalin.marinas@arm.com \
--cc=cl@gentwo.org \
--cc=dave.hansen@linux.intel.com \
--cc=david@redhat.com \
--cc=gshan@redhat.com \
--cc=hughd@google.com \
--cc=ioworker0@gmail.com \
--cc=kirill.shutemov@linux.intel.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mark.rutland@arm.com \
--cc=mgorman@techsingularity.net \
--cc=mhocko@suse.com \
--cc=osalvador@suse.de \
--cc=peterx@redhat.com \
--cc=ryan.roberts@arm.com \
--cc=shuah@kernel.org \
--cc=vbabka@suse.cz \
--cc=will@kernel.org \
--cc=willy@infradead.org \
--cc=yang@os.amperecomputing.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).