sched/walt: Improve the scheduler

This change is for general scheduler improvement.

Change-Id: Ic6be9069f6119d52e3915ea032f72ea35d27ee3e
Signed-off-by: Jonathan Avila <avilaj@codeaurora.org>
Signed-off-by: Sai Harshini Nimmala <snimmala@codeaurora.org>
This commit is contained in:
Jonathan Avila 2019-10-29 17:19:35 -07:00 committed by Sai Harshini Nimmala
parent e2c44d5b41
commit 50db4a3909
3 changed files with 8 additions and 3 deletions

View File

@ -991,6 +991,7 @@ struct rq {
struct walt_sched_stats walt_stats;
u64 window_start;
u32 prev_window_size;
unsigned long walt_flags;
u64 cur_irqload;

View File

@ -301,6 +301,7 @@ update_window_start(struct rq *rq, u64 wallclock, int event)
rq->cum_window_demand_scaled =
rq->walt_stats.cumulative_runnable_avg_scaled;
rq->prev_window_size = sched_ravg_window;
return old_window_start;
}
@ -1460,7 +1461,7 @@ static void update_cpu_busy_time(struct task_struct *p, struct rq *rq,
int p_is_curr_task = (p == rq->curr);
u64 mark_start = p->ravg.mark_start;
u64 window_start = rq->window_start;
u32 window_size = sched_ravg_window;
u32 window_size = rq->prev_window_size;
u64 delta;
u64 *curr_runnable_sum = &rq->curr_runnable_sum;
u64 *prev_runnable_sum = &rq->prev_runnable_sum;
@ -3343,9 +3344,10 @@ void walt_irq_work(struct irq_work *irq_work)
*/
if (!is_migration) {
if (sched_ravg_window != new_sched_ravg_window) {
printk_deferred("ALERT: changing window size from %u to %u\n",
printk_deferred("ALERT: changing window size from %u to %u at %lu\n",
sched_ravg_window,
new_sched_ravg_window);
new_sched_ravg_window,
sched_ktime_clock());
sched_ravg_window = new_sched_ravg_window;
walt_tunables_fixup();
}
@ -3494,6 +3496,7 @@ void walt_sched_init_rq(struct rq *rq)
cpumask_set_cpu(cpu_of(rq), &rq->freq_domain_cpumask);
rq->walt_stats.cumulative_runnable_avg_scaled = 0;
rq->prev_window_size = sched_ravg_window;
rq->window_start = 0;
rq->walt_stats.nr_big_tasks = 0;
rq->walt_flags = 0;

View File

@ -31,6 +31,7 @@
#define SCHED_NEW_TASK_WINDOWS 5
extern unsigned int sched_ravg_window;
extern unsigned int new_sched_ravg_window;
extern unsigned int max_possible_efficiency;
extern unsigned int min_possible_efficiency;
extern unsigned int max_possible_freq;