Merge "sched: don't assume higher capacity means higher power in lb"
This commit is contained in:
commit
818156d2ac
3 changed files with 10 additions and 8 deletions
|
@ -7229,9 +7229,7 @@ bail_inter_cluster_balance(struct lb_env *env, struct sd_lb_stats *sds)
|
||||||
local_pwr_cost = cpu_max_power_cost(local_cpu);
|
local_pwr_cost = cpu_max_power_cost(local_cpu);
|
||||||
busiest_pwr_cost = cpu_max_power_cost(busiest_cpu);
|
busiest_pwr_cost = cpu_max_power_cost(busiest_cpu);
|
||||||
|
|
||||||
if (local_capacity < busiest_capacity ||
|
if (local_pwr_cost <= busiest_pwr_cost)
|
||||||
(local_capacity == busiest_capacity &&
|
|
||||||
local_pwr_cost <= busiest_pwr_cost))
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (local_capacity > busiest_capacity &&
|
if (local_capacity > busiest_capacity &&
|
||||||
|
@ -8868,9 +8866,6 @@ static inline int find_new_hmp_ilb(int type)
|
||||||
for_each_cpu_and(ilb, nohz.idle_cpus_mask,
|
for_each_cpu_and(ilb, nohz.idle_cpus_mask,
|
||||||
sched_domain_span(sd)) {
|
sched_domain_span(sd)) {
|
||||||
if (idle_cpu(ilb) && (type != NOHZ_KICK_RESTRICT ||
|
if (idle_cpu(ilb) && (type != NOHZ_KICK_RESTRICT ||
|
||||||
(hmp_capable() &&
|
|
||||||
cpu_max_possible_capacity(ilb) <=
|
|
||||||
cpu_max_possible_capacity(call_cpu)) ||
|
|
||||||
cpu_max_power_cost(ilb) <=
|
cpu_max_power_cost(ilb) <=
|
||||||
cpu_max_power_cost(call_cpu))) {
|
cpu_max_power_cost(call_cpu))) {
|
||||||
rcu_read_unlock();
|
rcu_read_unlock();
|
||||||
|
@ -9224,8 +9219,7 @@ static inline int _nohz_kick_needed_hmp(struct rq *rq, int cpu, int *type)
|
||||||
if (!sysctl_sched_restrict_cluster_spill || sched_boost())
|
if (!sysctl_sched_restrict_cluster_spill || sched_boost())
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
if (hmp_capable() && cpu_max_possible_capacity(cpu) ==
|
if (cpu_max_power_cost(cpu) == max_power_cost)
|
||||||
max_possible_capacity)
|
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
rcu_read_lock();
|
rcu_read_lock();
|
||||||
|
|
|
@ -357,6 +357,8 @@ DECLARE_BITMAP(all_cluster_ids, NR_CPUS);
|
||||||
struct sched_cluster *sched_cluster[NR_CPUS];
|
struct sched_cluster *sched_cluster[NR_CPUS];
|
||||||
int num_clusters;
|
int num_clusters;
|
||||||
|
|
||||||
|
unsigned int max_power_cost = 1;
|
||||||
|
|
||||||
struct sched_cluster init_cluster = {
|
struct sched_cluster init_cluster = {
|
||||||
.list = LIST_HEAD_INIT(init_cluster.list),
|
.list = LIST_HEAD_INIT(init_cluster.list),
|
||||||
.id = 0,
|
.id = 0,
|
||||||
|
@ -466,6 +468,7 @@ static void sort_clusters(void)
|
||||||
{
|
{
|
||||||
struct sched_cluster *cluster;
|
struct sched_cluster *cluster;
|
||||||
struct list_head new_head;
|
struct list_head new_head;
|
||||||
|
unsigned int tmp_max = 1;
|
||||||
|
|
||||||
INIT_LIST_HEAD(&new_head);
|
INIT_LIST_HEAD(&new_head);
|
||||||
|
|
||||||
|
@ -474,7 +477,11 @@ static void sort_clusters(void)
|
||||||
max_task_load());
|
max_task_load());
|
||||||
cluster->min_power_cost = power_cost(cluster_first_cpu(cluster),
|
cluster->min_power_cost = power_cost(cluster_first_cpu(cluster),
|
||||||
0);
|
0);
|
||||||
|
|
||||||
|
if (cluster->max_power_cost > tmp_max)
|
||||||
|
tmp_max = cluster->max_power_cost;
|
||||||
}
|
}
|
||||||
|
max_power_cost = tmp_max;
|
||||||
|
|
||||||
move_list(&new_head, &cluster_head, true);
|
move_list(&new_head, &cluster_head, true);
|
||||||
|
|
||||||
|
|
|
@ -1039,6 +1039,7 @@ extern unsigned int min_capacity;
|
||||||
extern unsigned int max_load_scale_factor;
|
extern unsigned int max_load_scale_factor;
|
||||||
extern unsigned int max_possible_capacity;
|
extern unsigned int max_possible_capacity;
|
||||||
extern unsigned int min_max_possible_capacity;
|
extern unsigned int min_max_possible_capacity;
|
||||||
|
extern unsigned int max_power_cost;
|
||||||
extern unsigned int sched_upmigrate;
|
extern unsigned int sched_upmigrate;
|
||||||
extern unsigned int sched_downmigrate;
|
extern unsigned int sched_downmigrate;
|
||||||
extern unsigned int sched_init_task_load_windows;
|
extern unsigned int sched_init_task_load_windows;
|
||||||
|
|
Loading…
Add table
Reference in a new issue