Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 03163c31 authored by Srivatsa Vaddagiri's avatar Srivatsa Vaddagiri Committed by Steve Muckle
Browse files

sched: Use rq->efficiency in scaling load stats



Extend task load scaling function to account for cpu efficiency
factor. Task load is scaled in reference to "most" efficient cpu.

Change-Id: I7bf829211a6e1293076e8ba0f93b4f6abcf20d92
Signed-off-by: default avatarSrivatsa Vaddagiri <vatsa@codeaurora.org>
parent 28445566
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -1449,6 +1449,7 @@ void update_task_ravg(struct task_struct *p, struct rq *rq, int update_sum)

		if (update_sum) {
			unsigned int cur_freq = rq->cur_freq;
			int sf;

			delta = now - p->ravg.mark_start;
			BUG_ON(delta < 0);
@@ -1460,6 +1461,9 @@ void update_task_ravg(struct task_struct *p, struct rq *rq, int update_sum)

			delta = div64_u64(delta  * cur_freq,
							max_possible_freq);
			sf = (rq->efficiency * 1024) / max_possible_efficiency;
			delta *= sf;
			delta >>= 10;
			p->ravg.sum += delta;
			WARN_ON(p->ravg.sum > window_size);
		}
+4 −0
Original line number Diff line number Diff line
@@ -1678,6 +1678,7 @@ add_to_scaled_stat(int cpu, struct sched_avg *sa, u64 delta)
	int cur_freq = rq->cur_freq, max_freq = rq->max_freq;
	int cpu_max_possible_freq = rq->max_possible_freq;
	u64 scaled_delta;
	int sf;

	if (unlikely(cur_freq > max_possible_freq ||
		     (cur_freq == max_freq &&
@@ -1685,6 +1686,9 @@ add_to_scaled_stat(int cpu, struct sched_avg *sa, u64 delta)
		cur_freq = max_possible_freq;

	scaled_delta = div64_u64(delta * cur_freq, max_possible_freq);
	sf = (rq->efficiency * 1024) / max_possible_efficiency;
	scaled_delta *= sf;
	scaled_delta >>= 10;
	sa->runnable_avg_sum_scaled += scaled_delta;
}