Re: problem in changing from active to passive mode
From: Julia Lawall <julia.lawall@inria.fr>
Date: 2021-10-25 05:17:53
Also in:
lkml
On Sun, 24 Oct 2021, Doug Smythies wrote:
On Sun, Oct 24, 2021 at 6:03 AM Julia Lawall [off-list ref] wrote:quoted
Hello,Hi,quoted
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 [off-list ref] 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
... Dougquoted
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