diff options
author | Mel Gorman <mgorman@suse.de> | 2012-10-19 09:07:31 -0400 |
---|---|---|
committer | Mel Gorman <mgorman@suse.de> | 2012-12-11 09:28:35 -0500 |
commit | 7b2a2d4a18fffac3c4872021529b0657896db788 (patch) | |
tree | a0f05be191f12711a774368f6feb15bcd2eebf1a /include/trace | |
parent | 5647bc293ab15f66a7b1cda850c5e9d162a6c7c2 (diff) |
mm: migrate: Add a tracepoint for migrate_pages
The pgmigrate_success and pgmigrate_fail vmstat counters tells the user
about migration activity but not the type or the reason. This patch adds
a tracepoint to identify the type of page migration and why the page is
being migrated.
Signed-off-by: Mel Gorman <mgorman@suse.de>
Reviewed-by: Rik van Riel <riel@redhat.com>
Diffstat (limited to 'include/trace')
-rw-r--r-- | include/trace/events/migrate.h | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/include/trace/events/migrate.h b/include/trace/events/migrate.h new file mode 100644 index 000000000000..ec2a6ccfd7e5 --- /dev/null +++ b/include/trace/events/migrate.h | |||
@@ -0,0 +1,51 @@ | |||
1 | #undef TRACE_SYSTEM | ||
2 | #define TRACE_SYSTEM migrate | ||
3 | |||
4 | #if !defined(_TRACE_MIGRATE_H) || defined(TRACE_HEADER_MULTI_READ) | ||
5 | #define _TRACE_MIGRATE_H | ||
6 | |||
7 | #define MIGRATE_MODE \ | ||
8 | {MIGRATE_ASYNC, "MIGRATE_ASYNC"}, \ | ||
9 | {MIGRATE_SYNC_LIGHT, "MIGRATE_SYNC_LIGHT"}, \ | ||
10 | {MIGRATE_SYNC, "MIGRATE_SYNC"} | ||
11 | |||
12 | #define MIGRATE_REASON \ | ||
13 | {MR_COMPACTION, "compaction"}, \ | ||
14 | {MR_MEMORY_FAILURE, "memory_failure"}, \ | ||
15 | {MR_MEMORY_HOTPLUG, "memory_hotplug"}, \ | ||
16 | {MR_SYSCALL, "syscall_or_cpuset"}, \ | ||
17 | {MR_MEMPOLICY_MBIND, "mempolicy_mbind"}, \ | ||
18 | {MR_CMA, "cma"} | ||
19 | |||
20 | TRACE_EVENT(mm_migrate_pages, | ||
21 | |||
22 | TP_PROTO(unsigned long succeeded, unsigned long failed, | ||
23 | enum migrate_mode mode, int reason), | ||
24 | |||
25 | TP_ARGS(succeeded, failed, mode, reason), | ||
26 | |||
27 | TP_STRUCT__entry( | ||
28 | __field( unsigned long, succeeded) | ||
29 | __field( unsigned long, failed) | ||
30 | __field( enum migrate_mode, mode) | ||
31 | __field( int, reason) | ||
32 | ), | ||
33 | |||
34 | TP_fast_assign( | ||
35 | __entry->succeeded = succeeded; | ||
36 | __entry->failed = failed; | ||
37 | __entry->mode = mode; | ||
38 | __entry->reason = reason; | ||
39 | ), | ||
40 | |||
41 | TP_printk("nr_succeeded=%lu nr_failed=%lu mode=%s reason=%s", | ||
42 | __entry->succeeded, | ||
43 | __entry->failed, | ||
44 | __print_symbolic(__entry->mode, MIGRATE_MODE), | ||
45 | __print_symbolic(__entry->reason, MIGRATE_REASON)) | ||
46 | ); | ||
47 | |||
48 | #endif /* _TRACE_MIGRATE_H */ | ||
49 | |||
50 | /* This part must be outside protection */ | ||
51 | #include <trace/define_trace.h> | ||