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