linux/include/trace/events/kmem.h
<<
>>
Prefs
   1#undef TRACE_SYSTEM
   2#define TRACE_SYSTEM kmem
   3
   4#if !defined(_TRACE_KMEM_H) || defined(TRACE_HEADER_MULTI_READ)
   5#define _TRACE_KMEM_H
   6
   7#include <linux/types.h>
   8#include <linux/tracepoint.h>
   9#include <trace/events/mmflags.h>
  10
  11DECLARE_EVENT_CLASS(kmem_alloc,
  12
  13        TP_PROTO(unsigned long call_site,
  14                 const void *ptr,
  15                 size_t bytes_req,
  16                 size_t bytes_alloc,
  17                 gfp_t gfp_flags),
  18
  19        TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags),
  20
  21        TP_STRUCT__entry(
  22                __field(        unsigned long,  call_site       )
  23                __field(        const void *,   ptr             )
  24                __field(        size_t,         bytes_req       )
  25                __field(        size_t,         bytes_alloc     )
  26                __field(        gfp_t,          gfp_flags       )
  27        ),
  28
  29        TP_fast_assign(
  30                __entry->call_site      = call_site;
  31                __entry->ptr            = ptr;
  32                __entry->bytes_req      = bytes_req;
  33                __entry->bytes_alloc    = bytes_alloc;
  34                __entry->gfp_flags      = gfp_flags;
  35        ),
  36
  37        TP_printk("call_site=%lx ptr=%p bytes_req=%zu bytes_alloc=%zu gfp_flags=%s",
  38                __entry->call_site,
  39                __entry->ptr,
  40                __entry->bytes_req,
  41                __entry->bytes_alloc,
  42                show_gfp_flags(__entry->gfp_flags))
  43);
  44
  45DEFINE_EVENT(kmem_alloc, kmalloc,
  46
  47        TP_PROTO(unsigned long call_site, const void *ptr,
  48                 size_t bytes_req, size_t bytes_alloc, gfp_t gfp_flags),
  49
  50        TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags)
  51);
  52
  53DEFINE_EVENT(kmem_alloc, kmem_cache_alloc,
  54
  55        TP_PROTO(unsigned long call_site, const void *ptr,
  56                 size_t bytes_req, size_t bytes_alloc, gfp_t gfp_flags),
  57
  58        TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags)
  59);
  60
  61DECLARE_EVENT_CLASS(kmem_alloc_node,
  62
  63        TP_PROTO(unsigned long call_site,
  64                 const void *ptr,
  65                 size_t bytes_req,
  66                 size_t bytes_alloc,
  67                 gfp_t gfp_flags,
  68                 int node),
  69
  70        TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags, node),
  71
  72        TP_STRUCT__entry(
  73                __field(        unsigned long,  call_site       )
  74                __field(        const void *,   ptr             )
  75                __field(        size_t,         bytes_req       )
  76                __field(        size_t,         bytes_alloc     )
  77                __field(        gfp_t,          gfp_flags       )
  78                __field(        int,            node            )
  79        ),
  80
  81        TP_fast_assign(
  82                __entry->call_site      = call_site;
  83                __entry->ptr            = ptr;
  84                __entry->bytes_req      = bytes_req;
  85                __entry->bytes_alloc    = bytes_alloc;
  86                __entry->gfp_flags      = gfp_flags;
  87                __entry->node           = node;
  88        ),
  89
  90        TP_printk("call_site=%lx ptr=%p bytes_req=%zu bytes_alloc=%zu gfp_flags=%s node=%d",
  91                __entry->call_site,
  92                __entry->ptr,
  93                __entry->bytes_req,
  94                __entry->bytes_alloc,
  95                show_gfp_flags(__entry->gfp_flags),
  96                __entry->node)
  97);
  98
  99DEFINE_EVENT(kmem_alloc_node, kmalloc_node,
 100
 101        TP_PROTO(unsigned long call_site, const void *ptr,
 102                 size_t bytes_req, size_t bytes_alloc,
 103                 gfp_t gfp_flags, int node),
 104
 105        TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags, node)
 106);
 107
 108DEFINE_EVENT(kmem_alloc_node, kmem_cache_alloc_node,
 109
 110        TP_PROTO(unsigned long call_site, const void *ptr,
 111                 size_t bytes_req, size_t bytes_alloc,
 112                 gfp_t gfp_flags, int node),
 113
 114        TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags, node)
 115);
 116
 117DECLARE_EVENT_CLASS(kmem_free,
 118
 119        TP_PROTO(unsigned long call_site, const void *ptr),
 120
 121        TP_ARGS(call_site, ptr),
 122
 123        TP_STRUCT__entry(
 124                __field(        unsigned long,  call_site       )
 125                __field(        const void *,   ptr             )
 126        ),
 127
 128        TP_fast_assign(
 129                __entry->call_site      = call_site;
 130                __entry->ptr            = ptr;
 131        ),
 132
 133        TP_printk("call_site=%lx ptr=%p", __entry->call_site, __entry->ptr)
 134);
 135
 136DEFINE_EVENT(kmem_free, kfree,
 137
 138        TP_PROTO(unsigned long call_site, const void *ptr),
 139
 140        TP_ARGS(call_site, ptr)
 141);
 142
 143DEFINE_EVENT(kmem_free, kmem_cache_free,
 144
 145        TP_PROTO(unsigned long call_site, const void *ptr),
 146
 147        TP_ARGS(call_site, ptr)
 148);
 149
 150TRACE_EVENT(mm_page_free,
 151
 152        TP_PROTO(struct page *page, unsigned int order),
 153
 154        TP_ARGS(page, order),
 155
 156        TP_STRUCT__entry(
 157                __field(        unsigned long,  pfn             )
 158                __field(        unsigned int,   order           )
 159        ),
 160
 161        TP_fast_assign(
 162                __entry->pfn            = page_to_pfn(page);
 163                __entry->order          = order;
 164        ),
 165
 166        TP_printk("page=%p pfn=%lu order=%d",
 167                        pfn_to_page(__entry->pfn),
 168                        __entry->pfn,
 169                        __entry->order)
 170);
 171
 172TRACE_EVENT(mm_page_free_batched,
 173
 174        TP_PROTO(struct page *page, int cold),
 175
 176        TP_ARGS(page, cold),
 177
 178        TP_STRUCT__entry(
 179                __field(        unsigned long,  pfn             )
 180                __field(        int,            cold            )
 181        ),
 182
 183        TP_fast_assign(
 184                __entry->pfn            = page_to_pfn(page);
 185                __entry->cold           = cold;
 186        ),
 187
 188        TP_printk("page=%p pfn=%lu order=0 cold=%d",
 189                        pfn_to_page(__entry->pfn),
 190                        __entry->pfn,
 191                        __entry->cold)
 192);
 193
 194TRACE_EVENT(mm_page_alloc,
 195
 196        TP_PROTO(struct page *page, unsigned int order,
 197                        gfp_t gfp_flags, int migratetype),
 198
 199        TP_ARGS(page, order, gfp_flags, migratetype),
 200
 201        TP_STRUCT__entry(
 202                __field(        unsigned long,  pfn             )
 203                __field(        unsigned int,   order           )
 204                __field(        gfp_t,          gfp_flags       )
 205                __field(        int,            migratetype     )
 206        ),
 207
 208        TP_fast_assign(
 209                __entry->pfn            = page ? page_to_pfn(page) : -1UL;
 210                __entry->order          = order;
 211                __entry->gfp_flags      = gfp_flags;
 212                __entry->migratetype    = migratetype;
 213        ),
 214
 215        TP_printk("page=%p pfn=%lu order=%d migratetype=%d gfp_flags=%s",
 216                __entry->pfn != -1UL ? pfn_to_page(__entry->pfn) : NULL,
 217                __entry->pfn != -1UL ? __entry->pfn : 0,
 218                __entry->order,
 219                __entry->migratetype,
 220                show_gfp_flags(__entry->gfp_flags))
 221);
 222
 223DECLARE_EVENT_CLASS(mm_page,
 224
 225        TP_PROTO(struct page *page, unsigned int order, int migratetype),
 226
 227        TP_ARGS(page, order, migratetype),
 228
 229        TP_STRUCT__entry(
 230                __field(        unsigned long,  pfn             )
 231                __field(        unsigned int,   order           )
 232                __field(        int,            migratetype     )
 233        ),
 234
 235        TP_fast_assign(
 236                __entry->pfn            = page ? page_to_pfn(page) : -1UL;
 237                __entry->order          = order;
 238                __entry->migratetype    = migratetype;
 239        ),
 240
 241        TP_printk("page=%p pfn=%lu order=%u migratetype=%d percpu_refill=%d",
 242                __entry->pfn != -1UL ? pfn_to_page(__entry->pfn) : NULL,
 243                __entry->pfn != -1UL ? __entry->pfn : 0,
 244                __entry->order,
 245                __entry->migratetype,
 246                __entry->order == 0)
 247);
 248
 249DEFINE_EVENT(mm_page, mm_page_alloc_zone_locked,
 250
 251        TP_PROTO(struct page *page, unsigned int order, int migratetype),
 252
 253        TP_ARGS(page, order, migratetype)
 254);
 255
 256TRACE_EVENT(mm_page_pcpu_drain,
 257
 258        TP_PROTO(struct page *page, unsigned int order, int migratetype),
 259
 260        TP_ARGS(page, order, migratetype),
 261
 262        TP_STRUCT__entry(
 263                __field(        unsigned long,  pfn             )
 264                __field(        unsigned int,   order           )
 265                __field(        int,            migratetype     )
 266        ),
 267
 268        TP_fast_assign(
 269                __entry->pfn            = page ? page_to_pfn(page) : -1UL;
 270                __entry->order          = order;
 271                __entry->migratetype    = migratetype;
 272        ),
 273
 274        TP_printk("page=%p pfn=%lu order=%d migratetype=%d",
 275                pfn_to_page(__entry->pfn), __entry->pfn,
 276                __entry->order, __entry->migratetype)
 277);
 278
 279TRACE_EVENT(mm_page_alloc_extfrag,
 280
 281        TP_PROTO(struct page *page,
 282                int alloc_order, int fallback_order,
 283                int alloc_migratetype, int fallback_migratetype),
 284
 285        TP_ARGS(page,
 286                alloc_order, fallback_order,
 287                alloc_migratetype, fallback_migratetype),
 288
 289        TP_STRUCT__entry(
 290                __field(        unsigned long,  pfn                     )
 291                __field(        int,            alloc_order             )
 292                __field(        int,            fallback_order          )
 293                __field(        int,            alloc_migratetype       )
 294                __field(        int,            fallback_migratetype    )
 295                __field(        int,            change_ownership        )
 296        ),
 297
 298        TP_fast_assign(
 299                __entry->pfn                    = page_to_pfn(page);
 300                __entry->alloc_order            = alloc_order;
 301                __entry->fallback_order         = fallback_order;
 302                __entry->alloc_migratetype      = alloc_migratetype;
 303                __entry->fallback_migratetype   = fallback_migratetype;
 304                __entry->change_ownership       = (alloc_migratetype ==
 305                                        get_pageblock_migratetype(page));
 306        ),
 307
 308        TP_printk("page=%p pfn=%lu alloc_order=%d fallback_order=%d pageblock_order=%d alloc_migratetype=%d fallback_migratetype=%d fragmenting=%d change_ownership=%d",
 309                pfn_to_page(__entry->pfn),
 310                __entry->pfn,
 311                __entry->alloc_order,
 312                __entry->fallback_order,
 313                pageblock_order,
 314                __entry->alloc_migratetype,
 315                __entry->fallback_migratetype,
 316                __entry->fallback_order < pageblock_order,
 317                __entry->change_ownership)
 318);
 319
 320#endif /* _TRACE_KMEM_H */
 321
 322/* This part must be outside protection */
 323#include <trace/define_trace.h>
 324