mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 19:08:57 +09:00
ANDROID: sched/core: Add a latency-sensitive flag to uclamp
Add a 'latency_sensitive' flag to uclamp in order to express the need for some tasks to find a CPU where they can wake-up quickly. This is not expected to be used without cgroup support, so add solely a cgroup interface for it. As this flag represents a boolean attribute and not an amount of resources to be shared, it is not clear what the delegation logic should be. As such, it is kept simple: every new cgroup starts with latency_sensitive set to false, regardless of the parent. In essence, this is similar to SchedTune's prefer-idle flag which was used in android-4.19 and prior. Change-Id: I722d8ecabb428bb7b95a5b54bc70a87f182dde2a Signed-off-by: Quentin Perret <quentin.perret@arm.com>
This commit is contained in:
committed by
Quentin Perret
parent
588085feb4
commit
c28f9d3945
@@ -7356,6 +7356,27 @@ static int cpu_uclamp_max_show(struct seq_file *sf, void *v)
|
||||
cpu_uclamp_print(sf, UCLAMP_MAX);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int cpu_uclamp_ls_write_u64(struct cgroup_subsys_state *css,
|
||||
struct cftype *cftype, u64 ls)
|
||||
{
|
||||
struct task_group *tg;
|
||||
|
||||
if (ls > 1)
|
||||
return -EINVAL;
|
||||
tg = css_tg(css);
|
||||
tg->latency_sensitive = (unsigned int) ls;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static u64 cpu_uclamp_ls_read_u64(struct cgroup_subsys_state *css,
|
||||
struct cftype *cft)
|
||||
{
|
||||
struct task_group *tg = css_tg(css);
|
||||
|
||||
return (u64) tg->latency_sensitive;
|
||||
}
|
||||
#endif /* CONFIG_UCLAMP_TASK_GROUP */
|
||||
|
||||
#ifdef CONFIG_FAIR_GROUP_SCHED
|
||||
@@ -7716,6 +7737,12 @@ static struct cftype cpu_legacy_files[] = {
|
||||
.seq_show = cpu_uclamp_max_show,
|
||||
.write = cpu_uclamp_max_write,
|
||||
},
|
||||
{
|
||||
.name = "uclamp.latency_sensitive",
|
||||
.flags = CFTYPE_NOT_ON_ROOT,
|
||||
.read_u64 = cpu_uclamp_ls_read_u64,
|
||||
.write_u64 = cpu_uclamp_ls_write_u64,
|
||||
},
|
||||
#endif
|
||||
{ } /* Terminate */
|
||||
};
|
||||
@@ -7897,6 +7924,12 @@ static struct cftype cpu_files[] = {
|
||||
.seq_show = cpu_uclamp_max_show,
|
||||
.write = cpu_uclamp_max_write,
|
||||
},
|
||||
{
|
||||
.name = "uclamp.latency_sensitive",
|
||||
.flags = CFTYPE_NOT_ON_ROOT,
|
||||
.read_u64 = cpu_uclamp_ls_read_u64,
|
||||
.write_u64 = cpu_uclamp_ls_write_u64,
|
||||
},
|
||||
#endif
|
||||
{ } /* terminate */
|
||||
};
|
||||
|
||||
@@ -399,6 +399,8 @@ struct task_group {
|
||||
struct uclamp_se uclamp_req[UCLAMP_CNT];
|
||||
/* Effective clamp values used for a task group */
|
||||
struct uclamp_se uclamp[UCLAMP_CNT];
|
||||
/* Latency-sensitive flag used for a task group */
|
||||
unsigned int latency_sensitive;
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user