However sometimes the computer takes a very long time (20 seconds to -- I think -- 15 minutes or more) to react to a change in the load. I have run commands like "stress --cpu 1" or "stress --cpu 8" and watched i7z.  When the governor is powersave it may stay at 800MHz and when the governor is performance it may stay between 1000MHz to 1400MHz.  If I leave the stress running long enough it seems like eventually the frequency will go up to the expected values.  Once the CPU frequency goes up I can keep it up by leaving the stress running and my applications are responsive.  If I kill the stress process, the system may or may not respond quickly to changes in load.

I thought that I would give my current best work-around to this problem for any future googler who has the same problem. This solution is looking like it is good enough to keep.  It is based on experimentation without any understanding of the underlying mechanics.

I have put the lines
for i in 0 1 2 3 4 5
do
   /usr/bin/cpupower -c 6 idle-set --disable $i
done
/usr/bin/cpupower frequency-set -g powersave
into my rc.local script.  I have noticed before that disabling idle states seems to mean that once the cpu frequency becomes responsive to cpu load it remains responsive to cpu load.  But without the "-c 6" the machine ran somewhat hot whereas with the "-c 6" the machine seems to cool down pretty well when it is idle.  I don't think that the powersave line is necessary because I think that powersave is the default.  I am wondering if "-c 0" would be better but I will experiment with that later.

I also have some other lines in my rc.local suggested by powertop but I don't think that these lines are making any difference to my problem:

#
# disable nmi watchdog (powertop)
#
echo '0' > /proc/sys/kernel/nmi_watchdog

#
# VM writeback timeout
#
echo '1500' > '/proc/sys/vm/dirty_writeback_centisecs'

-Timothy


On 11/12/2014 07:52 PM, Timothy Redmond wrote:

I have a Thinkpad W520 computer (4270CTO) and I am running Fedora 20 and keeping its packages up to date.  Often when I am working the cpu frequency transitions beautifully and the computer is very responsive. I have run some programs that take a long time (hours to days) and have watched the frequency go up when there is only one thread running and go down when there are several threads running. So it seems to be working very nicely.

However sometimes the computer takes a very long time (20 seconds to -- I think -- 15 minutes or more) to react to a change in the load. I have run commands like "stress --cpu 1" or "stress --cpu 8" and watched i7z.  When the governor is powersave it may stay at 800MHz and when the governor is performance it may stay between 1000MHz to 1400MHz.  If I leave the stress running long enough it seems like eventually the frequency will go up to the expected values.  Once the CPU frequency goes up I can keep it up by leaving the stress running and my applications are responsive.  If I kill the stress process, the system may or may not respond quickly to changes in load.

There is some googleable discussion about the BIOS limiting the frequency for Thinkpads. However, the value in

     /sys/module/processor/parameters/ignore_ppc


does not seem to matter though and the file

     /sys/devices/system/cpu/cpu0/cpufreq/bios_limit


is never present.  Also the system will respond when I change the governor from performance to powersave and back which does not seem consistent with a limit provided by the BIOS.

Does anyone know what could be wrong or how I can debug this?

-Timothy