brintos

brintos / linux-shallow public Read only

0
0
Text · 4.9 KiB · 9f0a5d1 Raw
224 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2#undef TRACE_SYSTEM3#define TRACE_SYSTEM oom4 5#if !defined(_TRACE_OOM_H) || defined(TRACE_HEADER_MULTI_READ)6#define _TRACE_OOM_H7#include <linux/tracepoint.h>8#include <trace/events/mmflags.h>9 10#define PG_COUNT_TO_KB(x) ((x) << (PAGE_SHIFT - 10))11 12TRACE_EVENT(oom_score_adj_update,13 14	TP_PROTO(struct task_struct *task),15 16	TP_ARGS(task),17 18	TP_STRUCT__entry(19		__field(	pid_t,	pid)20		__array(	char,	comm,	TASK_COMM_LEN )21		__field(	short,	oom_score_adj)22	),23 24	TP_fast_assign(25		__entry->pid = task->pid;26		memcpy(__entry->comm, task->comm, TASK_COMM_LEN);27		__entry->oom_score_adj = task->signal->oom_score_adj;28	),29 30	TP_printk("pid=%d comm=%s oom_score_adj=%hd",31		__entry->pid, __entry->comm, __entry->oom_score_adj)32);33 34TRACE_EVENT(reclaim_retry_zone,35 36	TP_PROTO(struct zoneref *zoneref,37		int order,38		unsigned long reclaimable,39		unsigned long available,40		unsigned long min_wmark,41		int no_progress_loops,42		bool wmark_check),43 44	TP_ARGS(zoneref, order, reclaimable, available, min_wmark, no_progress_loops, wmark_check),45 46	TP_STRUCT__entry(47		__field(	int, node)48		__field(	int, zone_idx)49		__field(	int,	order)50		__field(	unsigned long,	reclaimable)51		__field(	unsigned long,	available)52		__field(	unsigned long,	min_wmark)53		__field(	int,	no_progress_loops)54		__field(	bool,	wmark_check)55	),56 57	TP_fast_assign(58		__entry->node = zonelist_node_idx(zoneref);59		__entry->zone_idx = zonelist_zone_idx(zoneref);60		__entry->order = order;61		__entry->reclaimable = reclaimable;62		__entry->available = available;63		__entry->min_wmark = min_wmark;64		__entry->no_progress_loops = no_progress_loops;65		__entry->wmark_check = wmark_check;66	),67 68	TP_printk("node=%d zone=%-8s order=%d reclaimable=%lu available=%lu min_wmark=%lu no_progress_loops=%d wmark_check=%d",69			__entry->node, __print_symbolic(__entry->zone_idx, ZONE_TYPE),70			__entry->order,71			__entry->reclaimable, __entry->available, __entry->min_wmark,72			__entry->no_progress_loops,73			__entry->wmark_check)74);75 76TRACE_EVENT(mark_victim,77	TP_PROTO(struct task_struct *task, uid_t uid),78 79	TP_ARGS(task, uid),80 81	TP_STRUCT__entry(82		__field(int, pid)83		__string(comm, task->comm)84		__field(unsigned long, total_vm)85		__field(unsigned long, anon_rss)86		__field(unsigned long, file_rss)87		__field(unsigned long, shmem_rss)88		__field(uid_t, uid)89		__field(unsigned long, pgtables)90		__field(short, oom_score_adj)91	),92 93	TP_fast_assign(94		__entry->pid = task->pid;95		__assign_str(comm);96		__entry->total_vm = PG_COUNT_TO_KB(task->mm->total_vm);97		__entry->anon_rss = PG_COUNT_TO_KB(get_mm_counter(task->mm, MM_ANONPAGES));98		__entry->file_rss = PG_COUNT_TO_KB(get_mm_counter(task->mm, MM_FILEPAGES));99		__entry->shmem_rss = PG_COUNT_TO_KB(get_mm_counter(task->mm, MM_SHMEMPAGES));100		__entry->uid = uid;101		__entry->pgtables = mm_pgtables_bytes(task->mm) >> 10;102		__entry->oom_score_adj = task->signal->oom_score_adj;103	),104 105	TP_printk("pid=%d comm=%s total-vm=%lukB anon-rss=%lukB file-rss:%lukB shmem-rss:%lukB uid=%u pgtables=%lukB oom_score_adj=%hd",106		__entry->pid,107		__get_str(comm),108		__entry->total_vm,109		__entry->anon_rss,110		__entry->file_rss,111		__entry->shmem_rss,112		__entry->uid,113		__entry->pgtables,114		__entry->oom_score_adj115	)116);117 118TRACE_EVENT(wake_reaper,119	TP_PROTO(int pid),120 121	TP_ARGS(pid),122 123	TP_STRUCT__entry(124		__field(int, pid)125	),126 127	TP_fast_assign(128		__entry->pid = pid;129	),130 131	TP_printk("pid=%d", __entry->pid)132);133 134TRACE_EVENT(start_task_reaping,135	TP_PROTO(int pid),136 137	TP_ARGS(pid),138 139	TP_STRUCT__entry(140		__field(int, pid)141	),142 143	TP_fast_assign(144		__entry->pid = pid;145	),146 147	TP_printk("pid=%d", __entry->pid)148);149 150TRACE_EVENT(finish_task_reaping,151	TP_PROTO(int pid),152 153	TP_ARGS(pid),154 155	TP_STRUCT__entry(156		__field(int, pid)157	),158 159	TP_fast_assign(160		__entry->pid = pid;161	),162 163	TP_printk("pid=%d", __entry->pid)164);165 166TRACE_EVENT(skip_task_reaping,167	TP_PROTO(int pid),168 169	TP_ARGS(pid),170 171	TP_STRUCT__entry(172		__field(int, pid)173	),174 175	TP_fast_assign(176		__entry->pid = pid;177	),178 179	TP_printk("pid=%d", __entry->pid)180);181 182#ifdef CONFIG_COMPACTION183TRACE_EVENT(compact_retry,184 185	TP_PROTO(int order,186		enum compact_priority priority,187		enum compact_result result,188		int retries,189		int max_retries,190		bool ret),191 192	TP_ARGS(order, priority, result, retries, max_retries, ret),193 194	TP_STRUCT__entry(195		__field(	int, order)196		__field(	int, priority)197		__field(	int, result)198		__field(	int, retries)199		__field(	int, max_retries)200		__field(	bool, ret)201	),202 203	TP_fast_assign(204		__entry->order = order;205		__entry->priority = priority;206		__entry->result = compact_result_to_feedback(result);207		__entry->retries = retries;208		__entry->max_retries = max_retries;209		__entry->ret = ret;210	),211 212	TP_printk("order=%d priority=%s compaction_result=%s retries=%d max_retries=%d should_retry=%d",213			__entry->order,214			__print_symbolic(__entry->priority, COMPACTION_PRIORITY),215			__print_symbolic(__entry->result, COMPACTION_FEEDBACK),216			__entry->retries, __entry->max_retries,217			__entry->ret)218);219#endif /* CONFIG_COMPACTION */220#endif221 222/* This part must be outside protection */223#include <trace/define_trace.h>224