**Next message:**Sudeep Holla: "Re: [PATCH -next] tracepoint: ipi: don't trace IPI on offline CPUs"**Previous message:**Greg Kroah-Hartman: "Re: Oops in 3.10.99 -- NULL pointer dereference in radeon_fence_ref"**In reply to:**Michael Turquette: "Re: [PATCH 6/6] cpufreq: schedutil: New governor based on scheduler utilization data"**Next in thread:**Rafael J. Wysocki: "Re: [PATCH 6/6] cpufreq: schedutil: New governor based on scheduler utilization data"**Messages sorted by:**[ date ] [ thread ] [ subject ] [ author ]

On Tue, Mar 08, 2016 at 09:05:50PM +0100, Rafael J. Wysocki wrote:

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

I could not make anything of those numbers.

>

>

>

>

I'm not seeing that, you get that by using a > 1. No need for

non-linear.

>

>

>

>

>

>

>

>

>

>

>

next_freq = a * x * current_freq / max_freq

[ a := max_freq, x := 1 ] ->

= max_freq * 1 * current_freq / max_freq

= current_freq

!= max_freq

But I think I see what you're saying; because at x = 1,

current_frequency must be max_frequency. Per your earlier point.

>

>

>

OK, so that gets us:

a = (1 + 1/n) ; n > 0

[ I would not have chosen (1 + 1/n), but lets stick to that ]

So for n = 4 that gets you: a = 1.25, which effectively gets you an 80%

utilization tipping point. That is, 1.25 * .8 = 1, iow. you'll pick the

next frequency (assuming RELATION_L like selection).

Together this gets you:

next_freq = (1 + 1/n) * max_freq * x * current_freq / max_freq

= (1 + 1/n) * x * current_freq

Again, with n = 4, x > .8 will result in a next_freq > current_freq, and

hence (RELATION_L) pick a higher one.

>

>

>

>

>

(its very confusing how you use 'x' for both invariant and

non-invariant).

That doesn't make sense, remember:

util = \Sum_i u_i * freq_i / max_freq (1)

Which for systems where freq_i is constant reduces to:

util = util_raw * current_freq / max_freq (2)

But you cannot reverse this. IOW you cannot try and divide out

current_freq on a frequency invariant metric.

So going by:

next_freq = (1 + 1/n) * max_freq * util (3)

if we substitute (2) into (3) we get:

= (1 + 1/n) * max_freq * util_raw * current_freq / max_freq

= (1 + 1/n) * current_freq * util_raw (4)

Which gets you two formula with the same general behaviour. As (2) is

the only approximation of (1) we can make.

**Next message:**Sudeep Holla: "Re: [PATCH -next] tracepoint: ipi: don't trace IPI on offline CPUs"**Previous message:**Greg Kroah-Hartman: "Re: Oops in 3.10.99 -- NULL pointer dereference in radeon_fence_ref"**In reply to:**Michael Turquette: "Re: [PATCH 6/6] cpufreq: schedutil: New governor based on scheduler utilization data"**Next in thread:**Rafael J. Wysocki: "Re: [PATCH 6/6] cpufreq: schedutil: New governor based on scheduler utilization data"**Messages sorted by:**[ date ] [ thread ] [ subject ] [ author ]