sched/walt: Improve the scheduler

This change is for general scheduler improvemnts.

Change-Id: I9c8c1a9c00534700b63834384c3553145ae8c935
Signed-off-by: Stephen Dickey <dickey@codeaurora.org>
Signed-off-by: Sai Harshini Nimmala <snimmala@codeaurora.org>
This commit is contained in:
Sai Harshini Nimmala 2021-10-26 17:51:24 -07:00 committed by Rishabh Bhatnagar
parent 03504cab3c
commit 925dd42831
4 changed files with 29 additions and 1 deletions

View File

@ -61,6 +61,7 @@ unsigned int sysctl_sched_many_wakeup_threshold = WALT_MANY_WAKEUP_DEFAULT;
const int sched_user_hint_max = 1000;
unsigned int sysctl_walt_rtg_cfs_boost_prio = 99; /* disabled by default */
unsigned int sysctl_sched_sync_hint_enable = 1;
unsigned int sysctl_sched_bug_on_rt_throttle;
unsigned int sysctl_panic_on_walt_bug;
unsigned int sysctl_sched_suppress_region2;
@ -713,6 +714,15 @@ struct ctl_table walt_table[] = {
.extra1 = SYSCTL_ZERO,
.extra2 = SYSCTL_ONE,
},
{
.procname = "sched_bug_on_rt_throttle",
.data = &sysctl_sched_bug_on_rt_throttle,
.maxlen = sizeof(unsigned int),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
.extra1 = SYSCTL_ZERO,
.extra2 = SYSCTL_ONE,
},
{
.procname = "sched_suppress_region2",
.data = &sysctl_sched_suppress_region2,

View File

@ -4130,6 +4130,23 @@ static void android_rvh_force_compatible_post(void *unused, void *unused2)
cpu_maps_update_done();
}
static void dump_throttled_rt_tasks(void *unused, int cpu, u64 clock,
ktime_t rt_period, u64 rt_runtime, s64 rt_period_timer_expires)
{
printk_deferred("sched: RT throttling activated for cpu %d\n", cpu);
printk_deferred("rt_period_timer: expires=%lld now=%llu rt_time=%llu runtime=%llu period=%llu\n",
rt_period_timer_expires, ktime_get_ns(),
task_rq(current)->rt.rt_time, rt_runtime, rt_period);
printk_deferred("potential CPU hogs:\n");
#ifdef CONFIG_SCHED_INFO
if (sched_info_on())
printk_deferred("current %s (%d) is running for %llu nsec\n",
current->comm, current->pid,
clock - current->sched_info.last_arrival);
#endif
BUG_ON(sysctl_sched_bug_on_rt_throttle);
}
static void register_walt_hooks(void)
{
register_trace_android_rvh_wake_up_new_task(android_rvh_wake_up_new_task, NULL);
@ -4161,6 +4178,7 @@ static void register_walt_hooks(void)
register_trace_cpu_frequency_limits(walt_cpu_frequency_limits, NULL);
register_trace_android_rvh_force_compatible_pre(android_rvh_force_compatible_pre, NULL);
register_trace_android_rvh_force_compatible_post(android_rvh_force_compatible_post, NULL);
register_trace_android_vh_dump_throttled_rt_tasks(dump_throttled_rt_tasks, NULL);
}
atomic64_t walt_irq_work_lastq_ws;

View File

@ -286,6 +286,7 @@ extern unsigned int sysctl_sched_task_unfilter_period;
extern unsigned int __read_mostly sysctl_sched_asym_cap_sibling_freq_match_pct;
extern unsigned int sysctl_walt_low_latency_task_threshold; /* disabled by default */
extern unsigned int sysctl_sched_sync_hint_enable;
extern unsigned int sysctl_sched_bug_on_rt_throttle;
extern unsigned int sysctl_sched_suppress_region2;
extern struct ctl_table walt_table[];
extern struct ctl_table walt_base_table[];

View File

@ -41,7 +41,6 @@ static int __init walt_debug_init(void)
if (ret)
return ret;
register_trace_android_vh_dump_throttled_rt_tasks(dump_throttled_rt_tasks, NULL);
register_trace_android_rvh_schedule_bug(android_rvh_schedule_bug, NULL);
return 0;