mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-04 04:06:26 +00:00
mm: compaction: fix the migration stats in trace_mm_compaction_migratepages()
Now the migrate_pages() has changed to return the number of {normal page, THP, hugetlb} instead, thus we should not use the return value to calculate the number of pages migrated successfully. Instead we can just use the 'nr_succeeded' which indicates the number of normal pages migrated successfully to calculate the non-migrated pages in trace_mm_compaction_migratepages(). Link: https://lkml.kernel.org/r/b4225251c4bec068dcd90d275ab7de88a39e2bd7.1636275127.git.baolin.wang@linux.alibaba.com Signed-off-by: Baolin Wang <baolin.wang@linux.alibaba.com> Reviewed-by: Steven Rostedt (VMware) <rostedt@goodmis.org> Cc: Zi Yan <ziy@nvidia.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
5d39a7ebc8
commit
84b328aa81
@ -68,10 +68,9 @@ DEFINE_EVENT(mm_compaction_isolate_template, mm_compaction_isolate_freepages,
|
||||
TRACE_EVENT(mm_compaction_migratepages,
|
||||
|
||||
TP_PROTO(unsigned long nr_all,
|
||||
int migrate_rc,
|
||||
struct list_head *migratepages),
|
||||
unsigned int nr_succeeded),
|
||||
|
||||
TP_ARGS(nr_all, migrate_rc, migratepages),
|
||||
TP_ARGS(nr_all, nr_succeeded),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field(unsigned long, nr_migrated)
|
||||
@ -79,23 +78,8 @@ TRACE_EVENT(mm_compaction_migratepages,
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
unsigned long nr_failed = 0;
|
||||
struct list_head *page_lru;
|
||||
|
||||
/*
|
||||
* migrate_pages() returns either a non-negative number
|
||||
* with the number of pages that failed migration, or an
|
||||
* error code, in which case we need to count the remaining
|
||||
* pages manually
|
||||
*/
|
||||
if (migrate_rc >= 0)
|
||||
nr_failed = migrate_rc;
|
||||
else
|
||||
list_for_each(page_lru, migratepages)
|
||||
nr_failed++;
|
||||
|
||||
__entry->nr_migrated = nr_all - nr_failed;
|
||||
__entry->nr_failed = nr_failed;
|
||||
__entry->nr_migrated = nr_succeeded;
|
||||
__entry->nr_failed = nr_all - nr_succeeded;
|
||||
),
|
||||
|
||||
TP_printk("nr_migrated=%lu nr_failed=%lu",
|
||||
|
@ -2280,6 +2280,7 @@ compact_zone(struct compact_control *cc, struct capture_control *capc)
|
||||
unsigned long last_migrated_pfn;
|
||||
const bool sync = cc->mode != MIGRATE_ASYNC;
|
||||
bool update_cached;
|
||||
unsigned int nr_succeeded = 0;
|
||||
|
||||
/*
|
||||
* These counters track activities during zone compaction. Initialize
|
||||
@ -2398,10 +2399,10 @@ compact_zone(struct compact_control *cc, struct capture_control *capc)
|
||||
|
||||
err = migrate_pages(&cc->migratepages, compaction_alloc,
|
||||
compaction_free, (unsigned long)cc, cc->mode,
|
||||
MR_COMPACTION, NULL);
|
||||
MR_COMPACTION, &nr_succeeded);
|
||||
|
||||
trace_mm_compaction_migratepages(cc->nr_migratepages, err,
|
||||
&cc->migratepages);
|
||||
trace_mm_compaction_migratepages(cc->nr_migratepages,
|
||||
nr_succeeded);
|
||||
|
||||
/* All pages were either migrated or will be released */
|
||||
cc->nr_migratepages = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user