android_kernel_xiaomi_sm7250/include/linux/mm_event.h
Jaegeuk Kim 1e0161d75b mm: mm_event: show MM/FS/IO/UFS latencies in fault flow
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>
2022-11-12 11:20:48 +00:00

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