1e0161d75b
Tracing points are: mm_event types MM: Page fault - F2FS: read metadata in F2FS | F2FS: alloc_bio in F2FS | - - - - F2FS: merge bios in F2FS | | | | | BLOCK: submit_bio | | | | - blk_read_submit_bio BLOCK: IO scheduler/SCSI | | | | UFS: ufshcd_queuecommand | | | - ufs_read_queue_cmd UFS: resume/ungating | | | UFS: IO completion | | - ufs_read_compl_cmd BLOCK: softirq | | F2FS: read_end_io in F2FS | - f2fs_read_data MM: end of page fauilt - maj_flt For example, > cat /d/tracing/instances/pixel-trace/trace_pipe <...>-8364 [000] .... 5858.525417: mm_event_record: blk_read_submit_bio count=1 avg_lat=5 max_lat=5 <...>-8364 [000] .... 5858.525418: mm_event_record: ufs_read_queue_cmd count=1 avg_lat=96 max_lat=96 <...>-8364 [000] .... 5858.525418: mm_event_record: ufs_read_send_cmd count=1 avg_lat=143 max_lat=143 ... sitor-13079 [007] .... 5858.827375: mm_event_record: ufs_read_compl_cmd count=1 avg_lat=12545 max_lat=12545 sitor-13079 [007] .... 5858.827433: mm_event_record: f2fs_read_data count=1 avg_lat=12587 max_lat=12587 ... <...>-13174 [001] .... 5859.187505: mm_event_record: maj_flt count=1 avg_lat=12677 max_lat=12677 Signed-off-by: Jaegeuk Kim <jaegeuk@google.com> Change-Id: I0712f543212a14ab2b1d6f092a9a2a7e3ed9f0a0 Signed-off-by: UtsavBalar1231 <utsavbalar1231@gmail.com>
61 lines
1.5 KiB
C
61 lines
1.5 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef _LINUX_MM_EVENT_H
|
|
#define _LINUX_MM_EVENT_H
|
|
|
|
/*
|
|
* These enums are exposed to userspace via the ftrace trace_pipe_raw endpoint
|
|
* and are an ABI. Userspace tools depend on them.
|
|
*/
|
|
enum mm_event_type {
|
|
MM_MIN_FAULT = 0,
|
|
MM_MAJ_FAULT = 1,
|
|
MM_READ_IO = 2,
|
|
MM_COMPACTION = 3,
|
|
MM_RECLAIM = 4,
|
|
MM_SWP_FAULT = 5,
|
|
MM_KERN_ALLOC = 6,
|
|
BLK_READ_SUBMIT_BIO = 7,
|
|
UFS_READ_QUEUE_CMD = 8,
|
|
UFS_READ_SEND_CMD = 9,
|
|
UFS_READ_COMPL_CMD = 10,
|
|
F2FS_READ_DATA = 11,
|
|
MM_TYPE_NUM = 12,
|
|
};
|
|
|
|
struct mm_event_task {
|
|
unsigned int count;
|
|
unsigned int max_lat;
|
|
u64 accm_lat;
|
|
} __attribute__ ((packed));
|
|
|
|
struct mm_event_vmstat {
|
|
unsigned long free;
|
|
unsigned long file;
|
|
unsigned long anon;
|
|
unsigned long ion;
|
|
unsigned long slab;
|
|
unsigned long ws_refault;
|
|
unsigned long ws_activate;
|
|
unsigned long mapped;
|
|
unsigned long pgin;
|
|
unsigned long pgout;
|
|
unsigned long swpin;
|
|
unsigned long swpout;
|
|
unsigned long reclaim_steal;
|
|
unsigned long reclaim_scan;
|
|
unsigned long compact_scan;
|
|
};
|
|
|
|
#ifdef CONFIG_MM_EVENT_STAT
|
|
void mm_event_task_init(struct task_struct *tsk);
|
|
void mm_event_start(ktime_t *time);
|
|
void mm_event_end(enum mm_event_type event, ktime_t start);
|
|
void mm_event_count(enum mm_event_type event, int count);
|
|
#else
|
|
static inline void mm_event_task_init(struct task_struct *tsk) {}
|
|
static inline void mm_event_start(ktime_t *time) {}
|
|
static inline void mm_event_end(enum mm_event_type event, ktime_t start) {}
|
|
static inline void mm_event_count(enum mm_event_type event, int count) {}
|
|
#endif /* _LINUX_MM_EVENT_H */
|
|
#endif
|