On Thu, Dec 21, 2017 at 04:00:22PM +0530, Viresh Kumar wrote: > On 21-12-17, 11:25, Peter Zijlstra wrote: > > On Thu, Dec 21, 2017 at 02:45:02PM +0530, Viresh Kumar wrote: > > > On 20-12-17, 16:43, Peter Zijlstra wrote: > > > > The below makes more sense to me too; hmm? > > > > > > > > @@ -335,12 +335,11 @@ static unsigned int sugov_next_freq_shar > > > > > > > > j_max = j_sg_cpu->max; > > > > j_util = sugov_aggregate_util(j_sg_cpu); > > > > + sugov_iowait_boost(j_sg_cpu, &util, &max); > > > > This should 'obviously' have been: > > > > sugov_iowait_boost(j_sg_cpu, &j_util, *j_max); > > Actually it should be: > > sugov_iowait_boost(j_sg_cpu, &j_util, &j_max);
Yes, clearly I cannot type much ;-) > and this is how it was in the commit I reviewed from your tree. But my query > still stands, what difference will it make ? > > > > > if (j_util * max > j_max * util) { > > > > util = j_util; > > > > max = j_max; > > > > } > > > > - > > > > - sugov_iowait_boost(j_sg_cpu, &util, &max); > The difference is that we apply the per-cpu boost on the per-cpu util value and _then_ find the overall maximum. Instead of finding the overall maximum and then apply the per-cpu boost to that.