We have an IPFire Duo Box where I have enabled power throttling with cpufreq-set -c 0 -g powersave (also for the second core). EIST has been enabled in the BIOS. The graph looks like it is throttling, but there is so little deviation that I think this is not working correctly. At least on weekends, there should be a significant dent in the curves.
Here is cpufreq-info and /proc/cpuinfo (for one core):
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0:
driver: intel_cpufreq
CPUs which run at the same hardware frequency: 0
CPUs which need to have their frequency coordinated by software: 0
maximum transition latency: 20.0 us.
hardware limits: 800 MHz - 1.40 GHz
available cpufreq governors: conservative, ondemand, userspace, powersave, performance, schedutil
current policy: frequency should be within 800 MHz and 1.40 GHz.
The governor "powersave" may decide which speed to use
within this range.
current CPU frequency is 1.40 GHz.
I am not expert on any of this by a long chalk but looking up the Celeron 2957U processor it is a Haswell version which came after the Sandy Bridge processor code name.
Since Sandy Bridge Intel chips are using the built in intel_pstate module.
intel_pstate This driver implements a scaling driver with an internal governor for Intel Core (Sandy Bridge and newer) processors.
From my understanding that means that it no longer uses the old kernel driver but one that is built in to the cpu and uses different algorithms for the governor setting application.
So maybe cpufreq is using its algorithm to decide the freq to set but the cpu chip is ignoring it and doing its own thing.
I found the following statement in an Arch Linux wiki page on cpu frequency scaling.
The intel_pstate CPU power scaling driver is used automatically for modern Intel CPUs instead of the other drivers below. This driver takes priority over other drivers and is built-in as opposed to being a module. This driver is currently automatically used for Sandy Bridge and newer CPUs. The intel_pstate may ignore the BIOS P-State settings. intel_pstate may run in “passive mode” via the intel_cpufreq driver for older CPUs. If you encounter a problem while using this driver, add intel_pstate=disable to your kernel line in order to revert to using the acpi_cpufreq driver.
Maybe you could try the suggestion to disable the intel_pstate in the kernel line. Whether it helps or not depends on if the intel_pstate is doing a good job or not. Maybe it can save power without having a huge impact on the frequency.
I just found the following note in the same Arch Linux wiki page:-
the internal powersave governor for Intel CPUs using the intel_pstate driver is equivalent to schedutil).
Governor ----- Description
performance ----- Run the CPU at the maximum frequency, obtained from /sys/devices/system/cpu/cpuX/cpufreq/scaling_max_freq.
powersave ----- Run the CPU at the minimum frequency, obtained from /sys/devices/system/cpu/cpuX/cpufreq/scaling_min_freq.
userspace ----- Run the CPU at user specified frequencies, configurable via /sys/devices/system/cpu/cpuX/cpufreq/scaling_setspeed.
ondemand ----- Scales the frequency dynamically according to current load. Jumps to the highest frequency and then possibly back off as the idle time increases.
conservative ----- Scales the frequency dynamically according to current load. Scales the frequency more gradually than ondemand.
schedutil ----- Scheduler-driven CPU frequency selection [4], [5].
Thanks for the detailled information. As this is a production firewall, I’d rather not change the kernel line even if this might be safe for the moment. Frequency is not that important.
It might also be that the intel_pstate driver with the schedutil governor is able to achieve the best power saving by a combination of freq and voltage and hence not reduce the frequency as much as the acpi_cpufreq driver with the powersave governor that deals with frequency alone.