Skip to content

Commit

Permalink
PM: EM: Use runtime modified EM for CPUs energy estimation in EAS
Browse files Browse the repository at this point in the history
The new Energy Model (EM) supports runtime modification of the performance
state table to better model the power used by the SoC. Use this new
feature to improve energy estimation and therefore task placement in
Energy Aware Scheduler (EAS).

Reviewed-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
Tested-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
Signed-off-by: Lukasz Luba <lukasz.luba@arm.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
  • Loading branch information
Lukasz Luba authored and Rafael J. Wysocki committed Feb 8, 2024
1 parent ca0fc87 commit aa11a7e
Showing 1 changed file with 9 additions and 3 deletions.
12 changes: 9 additions & 3 deletions include/linux/energy_model.h
Original file line number Diff line number Diff line change
Expand Up @@ -239,9 +239,14 @@ static inline unsigned long em_cpu_energy(struct em_perf_domain *pd,
unsigned long allowed_cpu_cap)
{
unsigned long freq, ref_freq, scale_cpu;
struct em_perf_table *em_table;
struct em_perf_state *ps;
int cpu, i;

#ifdef CONFIG_SCHED_DEBUG
WARN_ONCE(!rcu_read_lock_held(), "EM: rcu read lock needed\n");
#endif

if (!sum_util)
return 0;

Expand All @@ -264,9 +269,10 @@ static inline unsigned long em_cpu_energy(struct em_perf_domain *pd,
* Find the lowest performance state of the Energy Model above the
* requested frequency.
*/
i = em_pd_get_efficient_state(pd->table, pd->nr_perf_states, freq,
pd->flags);
ps = &pd->table[i];
em_table = rcu_dereference(pd->em_table);
i = em_pd_get_efficient_state(em_table->state, pd->nr_perf_states,
freq, pd->flags);
ps = &em_table->state[i];

/*
* The capacity of a CPU in the domain at the performance state (ps)
Expand Down

0 comments on commit aa11a7e

Please sign in to comment.