xref: /openbmc/linux/include/trace/events/oom.h (revision 422580c3)
1 #undef TRACE_SYSTEM
2 #define TRACE_SYSTEM oom
3 
4 #if !defined(_TRACE_OOM_H) || defined(TRACE_HEADER_MULTI_READ)
5 #define _TRACE_OOM_H
6 #include <linux/tracepoint.h>
7 #include <trace/events/mmflags.h>
8 
9 TRACE_EVENT(oom_score_adj_update,
10 
11 	TP_PROTO(struct task_struct *task),
12 
13 	TP_ARGS(task),
14 
15 	TP_STRUCT__entry(
16 		__field(	pid_t,	pid)
17 		__array(	char,	comm,	TASK_COMM_LEN )
18 		__field(	short,	oom_score_adj)
19 	),
20 
21 	TP_fast_assign(
22 		__entry->pid = task->pid;
23 		memcpy(__entry->comm, task->comm, TASK_COMM_LEN);
24 		__entry->oom_score_adj = task->signal->oom_score_adj;
25 	),
26 
27 	TP_printk("pid=%d comm=%s oom_score_adj=%hd",
28 		__entry->pid, __entry->comm, __entry->oom_score_adj)
29 );
30 
31 TRACE_EVENT(reclaim_retry_zone,
32 
33 	TP_PROTO(struct zoneref *zoneref,
34 		int order,
35 		unsigned long reclaimable,
36 		unsigned long available,
37 		unsigned long min_wmark,
38 		int no_progress_loops,
39 		bool wmark_check),
40 
41 	TP_ARGS(zoneref, order, reclaimable, available, min_wmark, no_progress_loops, wmark_check),
42 
43 	TP_STRUCT__entry(
44 		__field(	int, node)
45 		__field(	int, zone_idx)
46 		__field(	int,	order)
47 		__field(	unsigned long,	reclaimable)
48 		__field(	unsigned long,	available)
49 		__field(	unsigned long,	min_wmark)
50 		__field(	int,	no_progress_loops)
51 		__field(	bool,	wmark_check)
52 	),
53 
54 	TP_fast_assign(
55 		__entry->node = zone_to_nid(zoneref->zone);
56 		__entry->zone_idx = zoneref->zone_idx;
57 		__entry->order = order;
58 		__entry->reclaimable = reclaimable;
59 		__entry->available = available;
60 		__entry->min_wmark = min_wmark;
61 		__entry->no_progress_loops = no_progress_loops;
62 		__entry->wmark_check = wmark_check;
63 	),
64 
65 	TP_printk("node=%d zone=%-8s order=%d reclaimable=%lu available=%lu min_wmark=%lu no_progress_loops=%d wmark_check=%d",
66 			__entry->node, __print_symbolic(__entry->zone_idx, ZONE_TYPE),
67 			__entry->order,
68 			__entry->reclaimable, __entry->available, __entry->min_wmark,
69 			__entry->no_progress_loops,
70 			__entry->wmark_check)
71 );
72 
73 TRACE_EVENT(mark_victim,
74 	TP_PROTO(int pid),
75 
76 	TP_ARGS(pid),
77 
78 	TP_STRUCT__entry(
79 		__field(int, pid)
80 	),
81 
82 	TP_fast_assign(
83 		__entry->pid = pid;
84 	),
85 
86 	TP_printk("pid=%d", __entry->pid)
87 );
88 
89 TRACE_EVENT(wake_reaper,
90 	TP_PROTO(int pid),
91 
92 	TP_ARGS(pid),
93 
94 	TP_STRUCT__entry(
95 		__field(int, pid)
96 	),
97 
98 	TP_fast_assign(
99 		__entry->pid = pid;
100 	),
101 
102 	TP_printk("pid=%d", __entry->pid)
103 );
104 
105 TRACE_EVENT(start_task_reaping,
106 	TP_PROTO(int pid),
107 
108 	TP_ARGS(pid),
109 
110 	TP_STRUCT__entry(
111 		__field(int, pid)
112 	),
113 
114 	TP_fast_assign(
115 		__entry->pid = pid;
116 	),
117 
118 	TP_printk("pid=%d", __entry->pid)
119 );
120 
121 TRACE_EVENT(finish_task_reaping,
122 	TP_PROTO(int pid),
123 
124 	TP_ARGS(pid),
125 
126 	TP_STRUCT__entry(
127 		__field(int, pid)
128 	),
129 
130 	TP_fast_assign(
131 		__entry->pid = pid;
132 	),
133 
134 	TP_printk("pid=%d", __entry->pid)
135 );
136 
137 TRACE_EVENT(skip_task_reaping,
138 	TP_PROTO(int pid),
139 
140 	TP_ARGS(pid),
141 
142 	TP_STRUCT__entry(
143 		__field(int, pid)
144 	),
145 
146 	TP_fast_assign(
147 		__entry->pid = pid;
148 	),
149 
150 	TP_printk("pid=%d", __entry->pid)
151 );
152 
153 #ifdef CONFIG_COMPACTION
154 TRACE_EVENT(compact_retry,
155 
156 	TP_PROTO(int order,
157 		enum compact_priority priority,
158 		enum compact_result result,
159 		int retries,
160 		int max_retries,
161 		bool ret),
162 
163 	TP_ARGS(order, priority, result, retries, max_retries, ret),
164 
165 	TP_STRUCT__entry(
166 		__field(	int, order)
167 		__field(	int, priority)
168 		__field(	int, result)
169 		__field(	int, retries)
170 		__field(	int, max_retries)
171 		__field(	bool, ret)
172 	),
173 
174 	TP_fast_assign(
175 		__entry->order = order;
176 		__entry->priority = priority;
177 		__entry->result = compact_result_to_feedback(result);
178 		__entry->retries = retries;
179 		__entry->max_retries = max_retries;
180 		__entry->ret = ret;
181 	),
182 
183 	TP_printk("order=%d priority=%s compaction_result=%s retries=%d max_retries=%d should_retry=%d",
184 			__entry->order,
185 			__print_symbolic(__entry->priority, COMPACTION_PRIORITY),
186 			__print_symbolic(__entry->result, COMPACTION_FEEDBACK),
187 			__entry->retries, __entry->max_retries,
188 			__entry->ret)
189 );
190 #endif /* CONFIG_COMPACTION */
191 #endif
192 
193 /* This part must be outside protection */
194 #include <trace/define_trace.h>
195