Re: problem in changing from active to passive mode

From: Julia Lawall
Date: Mon Oct 25 2021 - 01:17:53 EST




On Sun, 24 Oct 2021, Doug Smythies wrote:

> On Sun, Oct 24, 2021 at 6:03 AM Julia Lawall <julia.lawall@xxxxxxxx> wrote:
> >
> > Hello,
>
> Hi,
>
> >
> > I have an Intel 6130 and an Intel 5218. These machines have HWP. They
> > are configured to boot with active mode and performance as the power
> > governor. Since the following commit:
> >
> > commit a365ab6b9dfbaf8fb4fb4cd5d8a4c55dc4fb8b1c (HEAD, refs/bisect/bad)
> > Author: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx>
> > Date: Mon Dec 14 21:09:26 2020 +0100
> >
> > cpufreq: intel_pstate: Implement the ->adjust_perf() callback
> >
> > If I change te mode from active to passive, I have the impression that the
> > machine is no longer able to raise the core frequencies above the minimum.
> > Changing the mode back to active has no effect. This persists if I reboot
> > to another kernel.
> >
> > Here are some runs that illustrate the problem. I have tested the
> > benchmark many times, and apart from this issue its performance is stable.
>
> Could you also list the CPU frequency scaling governor being used in your
> tests. I know you mentioned the performance governor above, but it
> changes between active/passive/active transitions.

Performance. I only booted and then changed to passive and then changed
back.

I originally saw the problem when changeing from active-performance to
passive-schedutil. But seeing the problem doesn't require changing the
governor to schedutil.

>
> Example from my test computer:
>
> Note 1: It is only for brevity of this e-mail that I only list for one CPU.
> Obviously, I looked at all CPUs when doing this.
>
> Note 2: The test example and conditions have been cherry picked
> for dramatic effect.
>
> $ cat /sys/devices/system/cpu/cpu6/cpufreq/scaling_driver
> intel_pstate
> $ cat /sys/devices/system/cpu/cpu6/cpufreq/scaling_governor
> performance
> $ cat /sys/devices/system/cpu/intel_pstate/status
> active
> $ ./ping-pong-many 100000 500 10
> 1418.0660 usecs/loop. (less is better)
>
> $ echo passive | sudo tee /sys/devices/system/cpu/intel_pstate/status
> passive

So converting to passive send you directly to schedutil? I didn't check
on that - I have always changed to passive and then explicitly change to
schedutil.

> $ cat /sys/devices/system/cpu/cpu6/cpufreq/scaling_driver
> intel_cpufreq
> $ cat /sys/devices/system/cpu/cpu6/cpufreq/scaling_governor
> schedutil
> $ cat /sys/devices/system/cpu/intel_pstate/status
> passive
> $ ./ping-pong-many 100000 500 10
> 5053.6355 usecs/loop.
>
> $ echo active | sudo tee /sys/devices/system/cpu/intel_pstate/status
> active
> $ cat /sys/devices/system/cpu/cpu6/cpufreq/scaling_driver
> intel_pstate
> $ cat /sys/devices/system/cpu/cpu6/cpufreq/scaling_governor
> powersave
> $ cat /sys/devices/system/cpu/intel_pstate/status
> active
> $ ./ping-pong-many 100000 500 10
> 2253.5833 usecs/loop.

So now you are twice as slow, but don't know how much this benchmark
varies. I suspect that on my machine I would get the 5000 number. I also
traced the frequencies and they were at the lowest point (1GHz) almost all
of the time.

I'll redo my tests and collect all of this information.

thanks,
julia

> ... Doug
>
> >
> > Intel 6130:
> >
> > root@yeti-2:/tmp# java -jar dacapo-9.12-MR1-bach.jar avrora -n 3
> > ===== DaCapo 9.12-MR1 avrora starting warmup 1 =====
> > ===== DaCapo 9.12-MR1 avrora completed warmup 1 in 3420 msec =====
> > ===== DaCapo 9.12-MR1 avrora starting warmup 2 =====
> > ===== DaCapo 9.12-MR1 avrora completed warmup 2 in 2536 msec =====
> > ===== DaCapo 9.12-MR1 avrora starting =====
> > ===== DaCapo 9.12-MR1 avrora PASSED in 2502 msec =====
> > root@yeti-2:/tmp# echo passive | tee /sys/devices/system/cpu/intel_pstate/status
> > passive
> > root@yeti-2:/tmp#
> > root@yeti-2:/tmp# echo active | tee /sys/devices/system/cpu/intel_pstate/status
> > active
> > root@yeti-2:/tmp# java -jar dacapo-9.12-MR1-bach.jar avrora -n 3
> > ===== DaCapo 9.12-MR1 avrora starting warmup 1 =====
> > ===== DaCapo 9.12-MR1 avrora completed warmup 1 in 7561 msec =====
> > ===== DaCapo 9.12-MR1 avrora starting warmup 2 =====
> > ===== DaCapo 9.12-MR1 avrora completed warmup 2 in 6528 msec =====
> > ===== DaCapo 9.12-MR1 avrora starting =====
> > ===== DaCapo 9.12-MR1 avrora PASSED in 7796 msec =====
> >
> > -------------------------------------------------------------------------
> >
> > Intel 5218:
> >
> > root@troll-2:/tmp# java -jar dacapo-9.12-MR1-bach.jar avrora -n 3
> > ===== DaCapo 9.12-MR1 avrora starting warmup 1 =====
> > ===== DaCapo 9.12-MR1 avrora completed warmup 1 in 2265 msec =====
> > ===== DaCapo 9.12-MR1 avrora starting warmup 2 =====
> > ===== DaCapo 9.12-MR1 avrora completed warmup 2 in 2033 msec =====
> > ===== DaCapo 9.12-MR1 avrora starting =====
> > ===== DaCapo 9.12-MR1 avrora PASSED in 2068 msec =====
> > root@troll-2:/tmp# echo passive | tee /sys/devices/system/cpu/intel_pstate/status
> > passive
> > root@troll-2:/tmp# echo active | tee /sys/devices/system/cpu/intel_pstate/statusactive
> > root@troll-2:/tmp# java -jar dacapo-9.12-MR1-bach.jar avrora -n 3
> > ===== DaCapo 9.12-MR1 avrora starting warmup 1 =====
> > ===== DaCapo 9.12-MR1 avrora completed warmup 1 in 4363 msec =====
> > ===== DaCapo 9.12-MR1 avrora starting warmup 2 =====
> > ===== DaCapo 9.12-MR1 avrora completed warmup 2 in 4486 msec =====
> > ===== DaCapo 9.12-MR1 avrora starting =====
> > ===== DaCapo 9.12-MR1 avrora PASSED in 3417 msec =====
> >
> > -------------------------------------------------------------------------
> >
> > thanks,
> > julia
>