blob: b1a8cb80675dfbb5d2591f19a22d1ff1895baff0 [file] [log] [blame]
#undef TRACE_SYSTEM
#define TRACE_SYSTEM mm_event
#if !defined(_TRACE_MM_EVENT_H) || defined(TRACE_HEADER_MULTI_READ)
#define _TRACE_MM_EVENT_H
#include <linux/types.h>
#include <linux/tracepoint.h>
#include <linux/mm.h>
#include <linux/mm_event.h>
struct mm_event_task;
struct mm_event_vmstat;
#define show_mm_event_type(type) \
__print_symbolic(type, \
{ MM_MIN_FAULT, "min_flt" }, \
{ MM_MAJ_FAULT, "maj_flt" }, \
{ MM_READ_IO, "read_io" }, \
{ MM_COMPACTION, "compaction" }, \
{ MM_RECLAIM, "reclaim" }, \
{ MM_SWP_FAULT, "swp_flt" }, \
{ MM_KERN_ALLOC, "kern_alloc" })
TRACE_EVENT(mm_event_record,
TP_PROTO(enum mm_event_type type, struct mm_event_task *record),
TP_ARGS(type, record),
TP_STRUCT__entry(
__field(enum mm_event_type, type)
__field(unsigned int, count)
__field(unsigned int, avg_lat)
__field(unsigned int, max_lat)
),
TP_fast_assign(
__entry->type = type;
__entry->count = record->count;
__entry->avg_lat = record->accm_lat / record->count;
__entry->max_lat = record->max_lat;
),
TP_printk("%s count=%d avg_lat=%u max_lat=%u",
show_mm_event_type(__entry->type),
__entry->count, __entry->avg_lat,
__entry->max_lat)
);
TRACE_EVENT(mm_event_vmstat_record,
TP_PROTO(struct mm_event_vmstat *vmstat),
TP_ARGS(vmstat),
TP_STRUCT__entry(
__field(unsigned long, free)
__field(unsigned long, file)
__field(unsigned long, anon)
__field(unsigned long, ion)
__field(unsigned long, slab)
__field(unsigned long, ws_refault)
__field(unsigned long, ws_activate)
__field(unsigned long, mapped)
__field(unsigned long, pgin)
__field(unsigned long, pgout)
__field(unsigned long, swpin)
__field(unsigned long, swpout)
__field(unsigned long, reclaim_steal)
__field(unsigned long, reclaim_scan)
__field(unsigned long, compact_scan)
),
TP_fast_assign(
__entry->free = vmstat->free;
__entry->file = vmstat->file;
__entry->anon = vmstat->anon;
__entry->ion = vmstat->ion;
__entry->slab = vmstat->slab;
__entry->ws_refault = vmstat->ws_refault;
__entry->ws_activate = vmstat->ws_activate;
__entry->mapped = vmstat->mapped;
__entry->pgin = vmstat->pgin;
__entry->pgout = vmstat->pgout;
__entry->swpin = vmstat->swpin;
__entry->swpout = vmstat->swpout;
__entry->reclaim_steal = vmstat->reclaim_steal;
__entry->reclaim_scan = vmstat->reclaim_scan;
__entry->compact_scan = vmstat->compact_scan;
),
TP_printk("free=%lu file=%lu anon=%lu ion=%lu slab=%lu ws_refault=%lu "
"ws_activate=%lu mapped=%lu pgin=%lu pgout=%lu swpin=%lu "
"swpout=%lu reclaim_steal=%lu reclaim_scan=%lu compact_scan=%lu",
__entry->free, __entry->file,
__entry->anon, __entry->ion, __entry->slab,
__entry->ws_refault, __entry->ws_activate,
__entry->mapped, __entry->pgin, __entry->pgout,
__entry->swpin, __entry->swpout,
__entry->reclaim_steal, __entry->reclaim_scan,
__entry->compact_scan)
);
#endif /* _TRACE_MM_EVENT_H */
/* This part must be outside protection */
#include <trace/define_trace.h>