65 lines
1.9 KiB
C
Executable File
65 lines
1.9 KiB
C
Executable File
#ifndef _LINUX_SLI_H
|
|
#define _LINUX_SLI_H
|
|
#include <linux/cgroup.h>
|
|
|
|
enum sli_memlat_stat_item {
|
|
MEM_LAT_GLOBAL_DIRECT_RECLAIM, /* global direct reclaim latency */
|
|
MEM_LAT_MEMCG_DIRECT_RECLAIM, /* memcg direct reclaim latency */
|
|
MEM_LAT_DIRECT_COMPACT, /* direct compact latency */
|
|
MEM_LAT_GLOBAL_DIRECT_SWAPOUT, /* global direct swapout latency */
|
|
MEM_LAT_MEMCG_DIRECT_SWAPOUT, /* memcg direct swapout latency */
|
|
MEM_LAT_DIRECT_SWAPIN, /* direct swapin latency */
|
|
MEM_LAT_PAGE_ALLOC, /* latency of page alloc */
|
|
MEM_LAT_STAT_NR,
|
|
};
|
|
|
|
/* Memory latency histogram distribution, in milliseconds */
|
|
enum sli_lat_count {
|
|
LAT_0_1,
|
|
LAT_1_4,
|
|
LAT_4_8,
|
|
LAT_8_16,
|
|
LAT_16_32,
|
|
LAT_32_64,
|
|
LAT_64_128,
|
|
LAT_128_INF,
|
|
LAT_COUNT_NR,
|
|
};
|
|
|
|
enum sli_schedlat_stat_item {
|
|
SCHEDLAT_WAIT,
|
|
SCHEDLAT_BLOCK,
|
|
SCHEDLAT_IOBLOCK,
|
|
SCHEDLAT_SLEEP,
|
|
SCHEDLAT_RUNDELAY,
|
|
SCHEDLAT_LONGSYS,
|
|
SCHEDLAT_STAT_NR
|
|
};
|
|
|
|
struct sli_memlat_stat {
|
|
unsigned long latency_max[SCHEDLAT_STAT_NR];
|
|
unsigned long item[MEM_LAT_STAT_NR][LAT_COUNT_NR];
|
|
};
|
|
|
|
struct sli_schedlat_stat {
|
|
unsigned long latency_max[SCHEDLAT_STAT_NR];
|
|
unsigned long item[SCHEDLAT_STAT_NR][LAT_COUNT_NR];
|
|
};
|
|
|
|
int sli_cgroup_alloc(struct cgroup *cgroup);
|
|
void sli_cgroup_free(struct cgroup *cgroup);
|
|
void sli_memlat_stat_start(u64 *start);
|
|
void sli_memlat_stat_end(enum sli_memlat_stat_item sidx, u64 start);
|
|
int sli_memlat_stat_show(struct seq_file *m, struct cgroup *cgrp);
|
|
int sli_memlat_max_show(struct seq_file *m, struct cgroup *cgrp);
|
|
void sli_schedlat_stat(struct task_struct *task,enum sli_schedlat_stat_item sidx, u64 delta);
|
|
void sli_schedlat_rundelay(struct task_struct *task, struct task_struct *prev, u64 delta);
|
|
int sli_schedlat_stat_show(struct seq_file *m, struct cgroup *cgrp);
|
|
int sli_schedlat_max_show(struct seq_file *m, struct cgroup *cgrp);
|
|
#ifdef CONFIG_SCHED_INFO
|
|
void sli_check_longsys(struct task_struct *tsk);
|
|
#else
|
|
static void sli_check_longsys(struct task_struct *tsk){};
|
|
#endif
|
|
#endif /*_LINUX_SLI_H*/
|