Messages in this thread | | | From | Vincent Guittot <> | Date | Mon, 25 Aug 2014 15:47:39 +0200 | Subject | Re: [sched] 143e1e28cb4: +17.9% aim7.jobs-per-min, -9.7% hackbench.throughput |
| |
On 11 August 2014 15:33, Peter Zijlstra <peterz@infradead.org> wrote:
[snip]
> > > Now I think I see why this is; we've reduced load balancing frequency > significantly on this machine due to:
I agree with you about the root cause
> > > -#define SD_SIBLING_INIT (struct sched_domain) { \ > - .min_interval = 1, \ > - .max_interval = 2, \ > > > -#define SD_MC_INIT (struct sched_domain) { \ > - .min_interval = 1, \ > - .max_interval = 4, \ > > > -#define SD_CPU_INIT (struct sched_domain) { \ > - .min_interval = 1, \ > - .max_interval = 4, \ > > > *sd = (struct sched_domain){ > .min_interval = sd_weight, > .max_interval = 2*sd_weight, > > Which both increased the min and max value significantly for all domains > involved. > > That said; I think we might want to do something like the below; I can > imagine decreasing load balancing too much will negatively impact other > workloads. > > Maybe slightly modified to make sure the first domain has a min_interval > of 1. > > --- > kernel/sched/core.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/kernel/sched/core.c b/kernel/sched/core.c > index 1211575a2208..67ed5d854da1 100644 > --- a/kernel/sched/core.c > +++ b/kernel/sched/core.c > @@ -6049,8 +6049,8 @@ sd_init(struct sched_domain_topology_level *tl, int cpu) > sd_flags &= ~TOPOLOGY_SD_FLAGS; > > *sd = (struct sched_domain){ > - .min_interval = sd_weight, > - .max_interval = 2*sd_weight, > + .min_interval = max(1, sd_weight/2), > + .max_interval = sd_weight,
What about using ilog2 like the default scaling mode of other scheduler tunables ?
Regards, Vincent
> .busy_factor = 32, > .imbalance_pct = 125, > > @@ -6076,7 +6076,7 @@ sd_init(struct sched_domain_topology_level *tl, int cpu) > , > > .last_balance = jiffies, > - .balance_interval = sd_weight, > + .balance_interval = max(1, sd_weight/2), > .smt_gain = 0, > .max_newidle_lb_cost = 0, > .next_decay_max_lb_cost = jiffies,
| |