mm: mm_event supports vmstat
[GitHub/MotorolaMobilityLLC/kernel-slsi.git] / include / trace / events / mm_event.h
1 #undef TRACE_SYSTEM
2 #define TRACE_SYSTEM mm_event
3
4 #if !defined(_TRACE_MM_EVENT_H) || defined(TRACE_HEADER_MULTI_READ)
5 #define _TRACE_MM_EVENT_H
6
7 #include <linux/types.h>
8 #include <linux/tracepoint.h>
9 #include <linux/mm.h>
10 #include <linux/mm_event.h>
11
12 struct mm_event_task;
13 struct mm_event_vmstat;
14
15 #define show_mm_event_type(type) \
16 __print_symbolic(type, \
17 { MM_MIN_FAULT, "min_flt" }, \
18 { MM_MAJ_FAULT, "maj_flt" }, \
19 { MM_READ_IO, "read_io" }, \
20 { MM_COMPACTION, "compaction" }, \
21 { MM_RECLAIM, "reclaim" }, \
22 { MM_SWP_FAULT, "swp_flt" }, \
23 { MM_KERN_ALLOC, "kern_alloc" })
24
25 TRACE_EVENT(mm_event_record,
26
27 TP_PROTO(enum mm_event_type type, struct mm_event_task *record),
28
29 TP_ARGS(type, record),
30
31 TP_STRUCT__entry(
32 __field(enum mm_event_type, type)
33 __field(unsigned int, count)
34 __field(unsigned int, avg_lat)
35 __field(unsigned int, max_lat)
36 ),
37
38 TP_fast_assign(
39 __entry->type = type;
40 __entry->count = record->count;
41 __entry->avg_lat = record->accm_lat / record->count;
42 __entry->max_lat = record->max_lat;
43 ),
44
45 TP_printk("%s count=%d avg_lat=%u max_lat=%u",
46 show_mm_event_type(__entry->type),
47 __entry->count, __entry->avg_lat,
48 __entry->max_lat)
49 );
50
51 TRACE_EVENT(mm_event_vmstat_record,
52
53 TP_PROTO(struct mm_event_vmstat *vmstat),
54
55 TP_ARGS(vmstat),
56
57 TP_STRUCT__entry(
58 __field(unsigned long, free)
59 __field(unsigned long, file)
60 __field(unsigned long, anon)
61 __field(unsigned long, slab)
62 __field(unsigned long, ws_refault)
63 __field(unsigned long, ws_activate)
64 __field(unsigned long, mapped)
65 __field(unsigned long, pgin)
66 __field(unsigned long, pgout)
67 __field(unsigned long, swpin)
68 __field(unsigned long, swpout)
69 __field(unsigned long, reclaim_steal)
70 __field(unsigned long, reclaim_scan)
71 __field(unsigned long, compact_scan)
72 ),
73
74 TP_fast_assign(
75 __entry->free = vmstat->free;
76 __entry->file = vmstat->file;
77 __entry->anon = vmstat->anon;
78 __entry->slab = vmstat->slab;
79 __entry->ws_refault = vmstat->ws_refault;
80 __entry->ws_activate = vmstat->ws_activate;
81 __entry->mapped = vmstat->mapped;
82 __entry->pgin = vmstat->pgin;
83 __entry->pgout = vmstat->pgout;
84 __entry->swpin = vmstat->swpin;
85 __entry->swpout = vmstat->swpout;
86 __entry->reclaim_steal = vmstat->reclaim_steal;
87 __entry->reclaim_scan = vmstat->reclaim_scan;
88 __entry->compact_scan = vmstat->compact_scan;
89 ),
90
91 TP_printk("free=%lu file=%lu anon=%lu slab=%lu ws_refault=%lu "
92 "ws_activate=%lu mapped=%lu pgin=%lu pgout=%lu, swpin=%lu "
93 "swpout=%lu reclaim_steal=%lu reclaim_scan=%lu compact_scan=%lu",
94 __entry->free, __entry->file,
95 __entry->anon, __entry->slab,
96 __entry->ws_refault, __entry->ws_activate,
97 __entry->mapped, __entry->pgin, __entry->pgout,
98 __entry->swpin, __entry->swpout,
99 __entry->reclaim_steal, __entry->reclaim_scan,
100 __entry->compact_scan)
101 );
102
103 #endif /* _TRACE_MM_EVENT_H */
104
105 /* This part must be outside protection */
106 #include <trace/define_trace.h>