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

Commit 15d78f22 authored by Morten Rasmussen's avatar Morten Rasmussen Committed by Chris Redpath
Browse files

ANDROID: sched/fair: Add energy_diff dead-zone margin



It is not worth the overhead to migrate tasks for tiny insignificant
energy savings. To prevent this, an energy margin is introduced in
energy_diff() which effectively adds a dead-zone that rounds tiny energy
differences to zero. Since no scale is enforced for energy model data
the margin can't be absolute. Instead it is defined as +/-1.56% energy
saving compared to the current total estimated energy consumption.

Signed-off-by: default avatarMorten Rasmussen <morten.rasmussen@arm.com>
Change-Id: I89c0043fcc414f5e57eb6264b76b6137cc43c886
Signed-off-by: default avatarChris Redpath <chris.redpath@arm.com>
parent a35c8cc0
Loading
Loading
Loading
Loading
+13 −1
Original line number Diff line number Diff line
@@ -5594,6 +5594,7 @@ static int energy_diff(struct energy_env *eenv)
	struct sched_domain *sd;
	struct sched_group *sg;
	int sd_cpu = -1, energy_before = 0, energy_after = 0;
	int diff, margin;

	struct energy_env eenv_before = {
		.util_delta	= 0,
@@ -5626,7 +5627,18 @@ static int energy_diff(struct energy_env *eenv)
		}
	} while (sg = sg->next, sg != sd->groups);

	return energy_after-energy_before;
	/*
	 * Dead-zone margin preventing too many migrations.
	 */

	margin = energy_before >> 6; /* ~1.56% */

	diff = energy_after-energy_before;

	if (abs(diff) < margin)
		return 0;

	return diff;
}

/*