Re: [PATCH v3 2/2] mm/migrate: add nr_split to trace_mm_migrate_pages stats.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 10/18/2023 12:31 AM, Zi Yan wrote:
From: Zi Yan <ziy@xxxxxxxxxx>

Add nr_split to trace_mm_migrate_pages for large folio (including THP)
split events.

Signed-off-by: Zi Yan <ziy@xxxxxxxxxx>
Cc: Baolin Wang <baolin.wang@xxxxxxxxxxxxxxxxx>
Cc: David Hildenbrand <david@xxxxxxxxxx>
Cc: Huang Ying <ying.huang@xxxxxxxxx>
Cc: Matthew Wilcox <willy@xxxxxxxxxxxxx>

LGTM. Feel free to add:
Reviewed-by: Baolin Wang <baolin.wang@xxxxxxxxxxxxxxxxx>

---
  include/trace/events/migrate.h | 24 ++++++++++++++----------
  mm/migrate.c                   |  3 ++-
  2 files changed, 16 insertions(+), 11 deletions(-)

diff --git a/include/trace/events/migrate.h b/include/trace/events/migrate.h
index 061b5128f335..0190ef725b43 100644
--- a/include/trace/events/migrate.h
+++ b/include/trace/events/migrate.h
@@ -49,10 +49,11 @@ TRACE_EVENT(mm_migrate_pages,
TP_PROTO(unsigned long succeeded, unsigned long failed,
  		 unsigned long thp_succeeded, unsigned long thp_failed,
-		 unsigned long thp_split, enum migrate_mode mode, int reason),
+		 unsigned long thp_split, unsigned long large_folio_split,
+		 enum migrate_mode mode, int reason),
TP_ARGS(succeeded, failed, thp_succeeded, thp_failed,
-		thp_split, mode, reason),
+		thp_split, large_folio_split, mode, reason),
TP_STRUCT__entry(
  		__field(	unsigned long,		succeeded)
@@ -60,26 +61,29 @@ TRACE_EVENT(mm_migrate_pages,
  		__field(	unsigned long,		thp_succeeded)
  		__field(	unsigned long,		thp_failed)
  		__field(	unsigned long,		thp_split)
+		__field(	unsigned long,		large_folio_split)
  		__field(	enum migrate_mode,	mode)
  		__field(	int,			reason)
  	),
TP_fast_assign(
-		__entry->succeeded	= succeeded;
-		__entry->failed		= failed;
-		__entry->thp_succeeded	= thp_succeeded;
-		__entry->thp_failed	= thp_failed;
-		__entry->thp_split	= thp_split;
-		__entry->mode		= mode;
-		__entry->reason		= reason;
+		__entry->succeeded			= succeeded;
+		__entry->failed				= failed;
+		__entry->thp_succeeded		= thp_succeeded;
+		__entry->thp_failed			= thp_failed;
+		__entry->thp_split			= thp_split;
+		__entry->large_folio_split	= large_folio_split;
+		__entry->mode				= mode;
+		__entry->reason				= reason;
  	),
- TP_printk("nr_succeeded=%lu nr_failed=%lu nr_thp_succeeded=%lu nr_thp_failed=%lu nr_thp_split=%lu mode=%s reason=%s",
+	TP_printk("nr_succeeded=%lu nr_failed=%lu nr_thp_succeeded=%lu nr_thp_failed=%lu nr_thp_split=%lu nr_split=%lu mode=%s reason=%s",
  		__entry->succeeded,
  		__entry->failed,
  		__entry->thp_succeeded,
  		__entry->thp_failed,
  		__entry->thp_split,
+		__entry->large_folio_split,
  		__print_symbolic(__entry->mode, MIGRATE_MODE),
  		__print_symbolic(__entry->reason, MIGRATE_REASON))
  );
diff --git a/mm/migrate.c b/mm/migrate.c
index fc2e70b17704..1fecebf4c301 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -1979,7 +1979,8 @@ int migrate_pages(struct list_head *from, new_folio_t get_new_folio,
  	count_vm_events(THP_MIGRATION_SPLIT, stats.nr_thp_split);
  	trace_mm_migrate_pages(stats.nr_succeeded, stats.nr_failed_pages,
  			       stats.nr_thp_succeeded, stats.nr_thp_failed,
-			       stats.nr_thp_split, mode, reason);
+			       stats.nr_thp_split, stats.nr_split, mode,
+			       reason);
if (ret_succeeded)
  		*ret_succeeded = stats.nr_succeeded;




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux