mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-04 16:25:34 +00:00
mm/page_alloc: use folio_mapped() in __alloc_contig_migrate_range()
We want to limit the use of page_mapcount() to the places where it is absolutely necessary. For tracing purposes, we use page_mapcount() in __alloc_contig_migrate_range(). Adding that mapcount to total_mapped sounds strange: total_migrated and total_reclaimed would count each page only once, not multiple times. But then, isolate_migratepages_range() adds each folio only once to the list. So for large folios, we would query the mapcount of the first page of the folio, which doesn't make too much sense for large folios. Let's simply use folio_mapped() * folio_nr_pages(), which makes more sense as nr_migratepages is also incremented by the number of pages in the folio in case of successful migration. Link: https://lkml.kernel.org/r/20240409192301.907377-11-david@redhat.com Signed-off-by: David Hildenbrand <david@redhat.com> Cc: Chris Zankel <chris@zankel.net> Cc: Hugh Dickins <hughd@google.com> Cc: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de> Cc: Jonathan Corbet <corbet@lwn.net> Cc: Matthew Wilcox (Oracle) <willy@infradead.org> Cc: Max Filippov <jcmvbkbc@gmail.com> Cc: Miaohe Lin <linmiaohe@huawei.com> Cc: Muchun Song <muchun.song@linux.dev> Cc: Naoya Horiguchi <nao.horiguchi@gmail.com> Cc: Peter Xu <peterx@redhat.com> Cc: Richard Chang <richardycc@google.com> Cc: Rich Felker <dalias@libc.org> Cc: Ryan Roberts <ryan.roberts@arm.com> Cc: Yang Shi <shy828301@gmail.com> Cc: Yin Fengwei <fengwei.yin@intel.com> Cc: Yoshinori Sato <ysato@users.sourceforge.jp> Cc: Zi Yan <ziy@nvidia.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
33d844bb84
commit
7115936ac1
1 changed files with 6 additions and 2 deletions
|
@ -6347,8 +6347,12 @@ int __alloc_contig_migrate_range(struct compact_control *cc,
|
|||
|
||||
if (trace_mm_alloc_contig_migrate_range_info_enabled()) {
|
||||
total_reclaimed += nr_reclaimed;
|
||||
list_for_each_entry(page, &cc->migratepages, lru)
|
||||
total_mapped += page_mapcount(page);
|
||||
list_for_each_entry(page, &cc->migratepages, lru) {
|
||||
struct folio *folio = page_folio(page);
|
||||
|
||||
total_mapped += folio_mapped(folio) *
|
||||
folio_nr_pages(folio);
|
||||
}
|
||||
}
|
||||
|
||||
ret = migrate_pages(&cc->migratepages, alloc_migration_target,
|
||||
|
|
Loading…
Add table
Reference in a new issue