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