Merge "sched/walt: Improve the scheduler"
This commit is contained in:
commit
315a58f72b
@ -61,6 +61,7 @@ unsigned int sysctl_sched_many_wakeup_threshold = WALT_MANY_WAKEUP_DEFAULT;
|
|||||||
const int sched_user_hint_max = 1000;
|
const int sched_user_hint_max = 1000;
|
||||||
unsigned int sysctl_walt_rtg_cfs_boost_prio = 99; /* disabled by default */
|
unsigned int sysctl_walt_rtg_cfs_boost_prio = 99; /* disabled by default */
|
||||||
unsigned int sysctl_sched_sync_hint_enable = 1;
|
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_panic_on_walt_bug;
|
||||||
unsigned int sysctl_sched_suppress_region2;
|
unsigned int sysctl_sched_suppress_region2;
|
||||||
|
|
||||||
@ -713,6 +714,15 @@ struct ctl_table walt_table[] = {
|
|||||||
.extra1 = SYSCTL_ZERO,
|
.extra1 = SYSCTL_ZERO,
|
||||||
.extra2 = SYSCTL_ONE,
|
.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",
|
.procname = "sched_suppress_region2",
|
||||||
.data = &sysctl_sched_suppress_region2,
|
.data = &sysctl_sched_suppress_region2,
|
||||||
|
@ -4130,6 +4130,23 @@ static void android_rvh_force_compatible_post(void *unused, void *unused2)
|
|||||||
cpu_maps_update_done();
|
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)
|
static void register_walt_hooks(void)
|
||||||
{
|
{
|
||||||
register_trace_android_rvh_wake_up_new_task(android_rvh_wake_up_new_task, NULL);
|
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_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_pre(android_rvh_force_compatible_pre, NULL);
|
||||||
register_trace_android_rvh_force_compatible_post(android_rvh_force_compatible_post, 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;
|
atomic64_t walt_irq_work_lastq_ws;
|
||||||
|
@ -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 __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_walt_low_latency_task_threshold; /* disabled by default */
|
||||||
extern unsigned int sysctl_sched_sync_hint_enable;
|
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 unsigned int sysctl_sched_suppress_region2;
|
||||||
extern struct ctl_table walt_table[];
|
extern struct ctl_table walt_table[];
|
||||||
extern struct ctl_table walt_base_table[];
|
extern struct ctl_table walt_base_table[];
|
||||||
|
@ -11,23 +11,6 @@
|
|||||||
#include "walt.h"
|
#include "walt.h"
|
||||||
#include "walt_debug.h"
|
#include "walt_debug.h"
|
||||||
|
|
||||||
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();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void android_rvh_schedule_bug(void *unused, struct task_struct *unused2)
|
static void android_rvh_schedule_bug(void *unused, struct task_struct *unused2)
|
||||||
{
|
{
|
||||||
BUG();
|
BUG();
|
||||||
@ -41,7 +24,6 @@ static int __init walt_debug_init(void)
|
|||||||
if (ret)
|
if (ret)
|
||||||
return 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);
|
register_trace_android_rvh_schedule_bug(android_rvh_schedule_bug, NULL);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user