ThinkPad T43 CPU scaling (ondemand/fixed/..) not working correctly - Ubuntu 9.10/10.4 (stock & mainline)

Bug #519142 reported by sotirovlyu
32
This bug affects 5 people
Affects Status Importance Assigned to Milestone
linux (Ubuntu)
Won't Fix
Undecided
Unassigned
Nominated for Lucid by sotirovlyu
Nominated for Maverick by sotirovlyu
Nominated for Natty by sotirovlyu

Bug Description

CPU speed is stuck at 800MHz, almost all of the time, doesn't matter if CPU is loaded or not.

I can see from utilities like powertop or the gnome cpu freq applet, that it changes to 2GHz in some moments, but without actual relation with cpu load. When I need the CPU speed for an intensive CPU task (e.g. most trivial watching a flash video, it would lag and cannot be played normally) I see that CPU load is at 98% all the time.. but CPU speed stays at 800MHz.

I can change the default ondemand governor to some other (via the gnome applet), but without any difference in cpu scaling. It just continues to jump to 2GHz for some seconds but as I said unrelated to load of system. I *cannot* set the speed to a fixed one, e.g. 2GHz or any of the others, neither with the applet nor with tools like cpufrequtils.

Problem is present with all kernels provided with ubuntu karmic - 2.6.31-14,-17,-19

I did a test with ubuntu hardy 8.04 and problem is not present, all is working fine. It was with kernel 2.6.24-26 and acpi_cpufreq is a module there it seems.

---

Some interesting (for me) observation that I made is while trying to use a custom 2.6.31-17 ubuntu kernel provided by linux-phc team, meant for undervolting the cpu (can be found on "https://launchpad.net/~linux-phc/+archive/ppa" (linux-phc.org) ):

1. I installed their kernel which is shipped with default acpi_cpufreq compiled as a module, which module is later supposed to be replaced by a custom module by linux-phc.org.

After installation/booting and *before* putting the custom module I noticed that the system is running with the ondemand governer and CPU scaling looked to work fine. E.g. the fastest test for me is to play some flash videos that I cannnot play with normal karmic install. All was working. Then I tried to set the speed to fixed one 2GHz via the gnome applet and I didn't succeed. Then it never worked any more, even after reboot, neither with ondemand governor nor with other governors or fixed speeds.

2. I replaced the acpi_cpufreq with the custom module and again it looked for some time that the ondemand governer was working fine. Until I tried to set a fixed speed via the gnome applet. Then again it all stopped working, reboots didn't change the status-quo.

I'm not very sure if these observations are correct, that's why I put them under line.

ProblemType: Bug
Architecture: i386
AudioDevicesInUse:
 USER PID ACCESS COMMAND
 /dev/snd/controlC0: u 1547 F.... pulseaudio
CRDA: Error: [Errno 2] No such file or directory
Card0.Amixer.info:
 Card hw:0 'ICH6'/'Intel ICH6 with AD1981B at irq 22'
   Mixer name : 'Analog Devices AD1981B'
   Components : 'AC97a:41445374'
   Controls : 26
   Simple ctrls : 18
Date: Tue Feb 9 05:33:02 2010
DistroRelease: Ubuntu 9.10
HibernationDevice: RESUME=UUID=24cfd17e-9154-4562-a039-00ab6d21a593
InstallationMedia: Ubuntu 9.10 "Karmic Koala" - Release i386 (20091028.5)
MachineType: IBM 2668VYU
Package: linux-image-2.6.31-19-generic 2.6.31-19.56
PccardctlIdent:
 Socket 0:
   no product info available
PccardctlStatus:
 Socket 0:
   no card
ProcCmdLine: BOOT_IMAGE=/boot/vmlinuz-2.6.31-19-generic root=UUID=a94c75fc-bc48-46db-b642-36d5f5d0bca9 ro splash quiet splash
ProcEnviron:
 LANG=en_US.UTF-8
 SHELL=/bin/bash
ProcVersionSignature: Ubuntu 2.6.31-19.56-generic
RelatedPackageVersions:
 linux-backports-modules-2.6.31-19-generic N/A
 linux-firmware 1.25
RfKill:
 0: phy0: Wireless LAN
  Soft blocked: no
  Hard blocked: no
SourcePackage: linux
Uname: Linux 2.6.31-19-generic i686
dmi.bios.date: 08/21/2006
dmi.bios.vendor: IBM
dmi.bios.version: 1YET65WW (1.29 )
dmi.board.name: 2668VYU
dmi.board.vendor: IBM
dmi.board.version: Not Available
dmi.chassis.asset.tag: No Asset Information
dmi.chassis.type: 10
dmi.chassis.vendor: IBM
dmi.chassis.version: Not Available
dmi.modalias: dmi:bvnIBM:bvr1YET65WW(1.29):bd08/21/2006:svnIBM:pn2668VYU:pvrThinkPadT43:rvnIBM:rn2668VYU:rvrNotAvailable:cvnIBM:ct10:cvrNotAvailable:
dmi.product.name: 2668VYU
dmi.product.version: ThinkPad T43
dmi.sys.vendor: IBM

Revision history for this message
sotirovlyu (sotirovlyu) wrote :
tags: added: karmic
Revision history for this message
Roland Orre (roland-orre) wrote :

I can confirm this bug as well, I'm running Karmic Koala with 2.6.31-19-generic
on a Lenovo X61T
vendor_id : GenuineIntel
cpu family : 6
model : 15
model name : Intel(R) Core(TM)2 Duo CPU L7500 @ 1.60GHz
My system config is 8 GB RAM and P256 SSD disk, noswap (OK, added a 0.5 GB RAM-swap...)

I had noticed that the machine had been very slow lately, occasionally due to the lockup bug which locks the machine for a half or up to a minute occasionally which seems to be present in 2.6.31 as well, it seems to get better though when I stopped running Chrome which seems to be a memory hog. Also there seem to be problem with the disk cache which doesn't seem to be tunable. I definitely don't want it to use all my memory for disk cache.

Anyway, now I tested the ondemand cpu scaling, and it doesn't work. As sotirovlyu also commented I've see it go up to 1.6 GHz now and then so I haven't thought about it, but now I've seen that this is not at all load related.

OK, for my own as I'm always running the machine on external battery, or power adapter, so the compuer doesn't really know when to switch, this doesn't bother me much as I now added another CPU applet to the panel. Then I can scale each core up down, but it seems as GNOME has treated the interface for this in a strange way.

Of course I don't want any authentification question now and then when changing, according this picture
http://i.imgur.com/OKQtq.png
I found a command which I believed was what GNOME uses /usr/bin/cpufreq-selector
and first added the %admin group to the sudoers file, didn't help. Then I added my own id, didn't help
then I found that the applet uses a separate configuration file
/etc/dbus-1/system.d/org.gnome.CPUFreqSelector.conf
and first changed user="root" to group="admin" but the stupid thing then was that I didn't get the frequency selector menu any more. Then I added user="orre" to the config file, and then got the frequency menu back, but now I still got that annoying authority question.

I finally though I found a working solution,
sudo cpufreq-selector -c 0 -f 800000
but that command is hanging, but now I finally have a working solution, I made a little sudo script
that can update the scaling like this
echo > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed 1200000
echo > /sys/devices/system/cpu/cpu1/cpufreq/scaling_setspeed 800000

Now I intended to add this to /etc/acpi/events/battery
but that script is not called upon when I unplug the power. Shouldn't it?
and there is no possibility to run a script from the Power Management Preferences.
but I found a flag /proc/acpi/ac_adapter/AC/state
I can write a cron script polling, to supervise my battery status.
I have the feeling that things are starting to get unnecessary complicated.

That works fine, and I'm pleased, but it seems as a lot of things could improve here...
So, it seems to be several things not working apart from the ondemand scaling:

* the command cpufreq-selector is hanging
* the frequency selection applet doesn't care about /etc/sudoers
* the /etc/acpi/events/ac is not called upon correctly
* the /etc/acpi/events/battery is not called upon correctly

Revision history for this message
Roland Orre (roland-orre) wrote :

PS: That RAM-swap was because I had seen somewhere that this could possibly help against the lockup problem (which possibly seems to be related to the disk cache which eats all available memory)
I put 8GB RAM into the machine just to be able to avoid swapping, which may not be suitable on an SSD.

Revision history for this message
jes.vestervang (jes-vestervang) wrote :

The same happens for me using Kubuntu 10.04 on my Thinkpad T43 with the 1.86 GHz processor (using the latest BIOS). While using Ubuntu 9.10 the PHC-kernels solved the problem for me too.

$ cpufreq-info
cpufrequtils 006: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to <email address hidden>, please.
analyzing CPU 0:
  driver: acpi-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.87 GHz
  available frequency steps: 1.87 GHz, 1.60 GHz, 1.33 GHz, 1.07 GHz, 800 MHz
  available cpufreq governors: conservative, ondemand, userspace, powersave, performance
  current policy: frequency should be within 800 MHz and 800 MHz.
                  The governor "performance" may decide which speed to use
                  within this range.
  current CPU frequency is 800 MHz.
  cpufreq stats: 1.87 GHz:2,10%, 1.60 GHz:0,00%, 1.33 GHz:0,00%, 1.07 GHz:0,00%, 800 MHz:97,90% (3)
jes@padden:~$

Revision history for this message
Timo Jyrinki (timo-jyrinki) wrote :

I'm having this problem as well in Ubuntu 10.04.

Does the observation from bug #555315 apply to you, ie. it's dependent on whether AC is plugged or not? I cannot test right now since my battery is dead and I'm always on AC.

summary: - CPU scaling not working correctly, ThinkPad T43, Ubuntu 9.10
+ ondemand CPU scaling not working correctly, ThinkPad T43, Ubuntu 9.10
Revision history for this message
sotirovlyu (sotirovlyu) wrote : Re: ondemand CPU scaling not working correctly, ThinkPad T43, Ubuntu 9.10

No, the ondemand CPU scaling behaves the same way both in battery and in AC mode - i.e. it doesn't work correctly.

It's not only about the output of cpufreq-info (or some system values in /proc). Sometimes it shows "hardware limits: 800 MHz - 2.00 GHz", sometimes "hardware limits: 800 MHz - 800 MHz", may be there is a pattern, but i didn't examine much when what it shows. Important is that in either case CPU speed is around 800MHz with some strange jumps to higher values but not related to load.

Revision history for this message
sotirovlyu (sotirovlyu) wrote :

Important to note is that PHC kernels didn't solve for me the problem permanently, it looked only at first place solved, but then it became the same like with the standard Ubuntu kernels.

Revision history for this message
Jeremy Foshee (jeremyfoshee) wrote :

Hi sotirovlyu,

If you could also please test the latest upstream kernel available that would be great. It will allow additional upstream developers to examine the issue. Refer to https://wiki.ubuntu.com/KernelMainlineBuilds . Once you've tested the upstream kernel, please remove the 'needs-upstream-testing' tag. This can be done by clicking on the yellow pencil icon next to the tag located at the bottom of the bug description and deleting the 'needs-upstream-testing' text. Please let us know your results.

Thanks in advance.

    [This is an automated message. Apologies if it has reached you inappropriately; please just reply to this message indicating so.]

tags: added: needs-upstream-testing
tags: added: kj-triage
Changed in linux (Ubuntu):
status: New → Incomplete
Revision history for this message
teson (tjelvar) wrote :

same on aspire one a110.

after bootup (with ondemand), powertop shows 50% 1,6 GHz, 50% 800 Mhz. (??)

selecting fixed frequency from gnome-tool works fine,
selecting back to ondemand:
  if fixed 800 Mhz was selected before, => 100% 800 Mhz
  if 1,6 GHz was selected before back to 50%/50% as above..

something's wrong here...

Regards,

Revision history for this message
teson (tjelvar) wrote :

Additional info to #9
ubuntu 9.10, kernelversion 2.6.31-20

Now testing with AC plugged in, different behaviour,
setting to fixed 1,6 => 50% 1,33, 50% 1,6 GHz
fixed 1,33 => 50% 1,33, 50% 0,8 GHz.

As it seems, the little atom hasn't been running for full speed for quite a while.

Revision history for this message
teson (tjelvar) wrote :

Upgrade to 10.04. Everything works.

sotirovlyu (sotirovlyu)
summary: - ondemand CPU scaling not working correctly, ThinkPad T43, Ubuntu 9.10
+ ondemand CPU scaling not working correctly, ThinkPad T43, Ubuntu
+ 9.10/10.4
tags: added: lucid
tags: removed: needs-upstream-testing
sotirovlyu (sotirovlyu)
summary: - ondemand CPU scaling not working correctly, ThinkPad T43, Ubuntu
- 9.10/10.4
+ CPU scaling (ondemand/fixed/..) not working correctly, ThinkPad T43,
+ Ubuntu 9.10/10.4 & (stock & mainline)
summary: - CPU scaling (ondemand/fixed/..) not working correctly, ThinkPad T43,
+ ThinkPad T43 CPU scaling (ondemand/fixed/..) not working correctly -
Ubuntu 9.10/10.4 & (stock & mainline)
Revision history for this message
sotirovlyu (sotirovlyu) wrote : Re: ThinkPad T43 CPU scaling (ondemand/fixed/..) not working correctly - Ubuntu 9.10/10.4 & (stock & mainline)

I installed 10.4 LTS and both with stock and also with daily mainline kernels (Linux boxybox 2.6.34-999-generic #201005121008 SMP Wed May 12 10:11:28 UTC 2010 i686 GNU/Linux) situation is again the same and bug is present. Removed the tag needs-upstream-testing.

@Timo Jyrinki
It is not related only to "ondemand" scaling/governor, but i can neither set a fixed frequency for example, so i modified back the title of the bug.

@teson
It looks to me that root cause for your issue is different than the one reported by me and they are unrelated directly.

summary: ThinkPad T43 CPU scaling (ondemand/fixed/..) not working correctly -
- Ubuntu 9.10/10.4 & (stock & mainline)
+ Ubuntu 9.10/10.4 (stock & mainline)
Revision history for this message
markozu (marko-zuzic) wrote :

Me too was suffering from this bug but the PHC kernel solved it after I compiled the phc-intel module.
Now the cpu scales as it should. The CPU gnome applet changes the frequencies normally.
I have another ThinkPad laptop (dual core) and all is working fine with the stock kernel. Could it be that single core CPU suffer from this bug?

Marko Zuzic

Revision history for this message
sotirovlyu (sotirovlyu) wrote :

Marko,

Thanks for your feedback. Could you please specify your exact thinkpad model (or at least intel chipset/cpu) and the version of Ubuntu/kernel you are using?

Revision history for this message
Alex Tomic (atomic777) wrote :

Hello,

These scaling problems are plaguing me on my Thinkpad T43 as well. The behaviour is very difficult to predict; sometimes it will scale fine on AC and battery power after a fresh boot, then begin to have problems on battery. Now it is failing to scale at all, even on AC power, on fresh boot.

My exact model is a 2668WMY, with a single core processor. (CPU details below)

I've also given the 2.6.32-22 phc kernel a try, and while it appeared to be helping at first, I'm now back to the unpredictable behaviour. I compiled and loaded the phc-intel module, and whlie I can now make the voltage adjustments, there's no help on the CPU scaling front.

processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 13
model name : Intel(R) Pentium(R) M processor 2.00GHz
stepping : 8
cpu MHz : 800.000

Revision history for this message
Eric Brasseur (eric-brasseur-gmail) wrote :
Download full text (5.0 KiB)

This is what worked for me, on an Intel-based HP Pavillon dv6000:

First of all, my puzzling started making sense only when I got rid of the Gnome CPU Frequency Scaling Monitor. It does and displays nonsense. For example, when the CPU is absolutely constantly at maximum speed, the Gnome applet will show that the CPU is mostly at minimum speed and sometimes rises at maximum speed.

I installed the sysfsutils package:

   sudo apt-get install sysfsutils

Which allowed to use this command line in a terminal window to monitor the frequency:

   while : ; do sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq ; sleep 1 ; done

Alternatively, for example if you don't want sysfsutils installed or you don't want to sudo, this command line should do the job:

   while : ; do cat /proc/cpuinfo | grep MHz ; sleep 1 ; done

Then, I had to install powernowd:

   sudo apt-get install powernowd

The presence of the powernowd package is what makes everything perform properly. Actually the powernowd daemon does not run on my system... It seems that it will not be started if the default governor is "ondemand". But anyway the package needs to be installed.

I had some doubts about the gnome-power-manager package but simply it seems to have no influence on this problem. I keep it so I can suspend the machine without having to type "sudo pm-suspend" in a terminal window. Some online texts made me believe that gnome-power-manager has an influence on the CPU frequency but gconf-editor doesn't show that there would be any related tuning. (The gnome-power-manager has a mostly nonsensical behavior, for example using its graphical interface often yields no or opposite results and the default behavior is very annoying. I used gconf-editor to just shut down most of its features.)

With the powernowd package installed, my machine suddenly became fast as craziness. The maximum speed is switched on instantaneously when required. It's a delight. No more need to purchase a new laptop. I lack an applet to monitor the frequency but actually this is not severe. I simply know that when at least on of the cores is fully busy, the CPU will be at maximum frequency. Also, I do no more need the applet to be able to tune maximum frequency when needed, because powernowd does it perfectly and automatically.

The only case when I need to tune the frequency is to impose a constant low frequency to avoid the machine heating or making noise in some occasions. I found no clean procedure to do that. Powernowd is unaware of the need to sometimes keep the machine at low power consumption. The commands below allow to do that but they have no effect on my system, whether or not powernowd is installed.

   sudo su
   echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
   exit

or:

cpufreq-selector -g ondemand

Linux is a strange system. It has a whole set of different tools for one purpose. Each tool is incomplete, has bugs and quite often the configuration procedure is obfuscated beyond repair. A computer scientist can often manage to assemble the working parts of some tools to get something that works for an individual case. But no distro maintainers ever managed to...

Read more...

Changed in linux (Ubuntu):
status: Incomplete → Confirmed
Revision history for this message
Timo Jyrinki (timo-jyrinki) wrote :

(changing back to Confirmed since the actions asked to be done when this was changed to Incomplete were done already)

For what it's worth, my problem went away (I think) when I replaced my faulty AC adapter that didn't charge the battery. Although it seems I have kept the following in /etc/rc.local anyway:
echo 20 > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/up_threshold
echo 20 > /sys/devices/system/cpu/cpu1/cpufreq/ondemand/up_threshold

@sotirovlyu: I also mostly wasn't able to change the clock speed forcefully, but also bumped into such stuff as GNOME's CPU speed applet being quite broken... but still, not even echoing to /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq (if I recall the path correctly) worked all the time.

Revision history for this message
sotirovlyu (sotirovlyu) wrote :

Well, Timo

T43 thinkpads feature Pentium M Dothan CPU (and the respective chipset), notice it's the previous generation before core solo/duo cpus. May be your issues are not the same as mine (and few other members here who reported T43 models)?

As I said something changed after 2.6.27 kernels.. dunno if mainline or in ubuntu, but as written above i did tests with a recent mainline.

p.s. echo-ing didn't help for me.

Revision history for this message
plafond (plafond) wrote :

I can also confirm the bug.

Thanks sotirovlyu for the suggestion - installing current version of linux-phc (2.6.32-25) seems to have (partly) resolved the issue for me as well. I simply installed from ppa and rebooted. This allows me to now run at max frequency however there are still some issues with scaling.

*************************************************
NOTE - i've observed the following behaviour after making the changes ilsted above:

when i plug in the power, regardless of what the 'governor' value is set, the MIN and MAX frequency values both get set to my MAX frequency (1.87GHz)

when i unplug the power, regardless of what the 'governor' value is set, the MIN and MAX frequency values both get set to my MIN frequency (800MHz)
***********************************************

I think this could be an indicator of where the original issue actually lies. Anybody else notice the same thing?

If the module which sets the scaling is always applying the 'case2' (mentioned above), then the original bug reported would be partly replicated. Prior to installing linux-phc module, the MIN/MAX frequency was always set to 800MHz, even when I manually changed the governor to 'performance'.

Revision history for this message
sotirovlyu (sotirovlyu) wrote :

plafond, thanks for your feedback. I dunno if this will be fixed somewhere in the future, may be if more ppl will complain.. though thinkpad T43 is an old machine, so i doubt any prirority is given to this. But this is one (not only) of the reasons i run Linux, to be able to use older hardware, which actually has the technical potential.

Before a few days I tried 10.10 Ubuntu with stock kernel, behaviour is the same. My thinkpad t43 runs crippled for over an year.. and I do use it as my primary workstation at home.. pitty :>

description: updated
tags: added: maverick
Revision history for this message
Thomas Hood (jdthood) wrote :

It was mentioned earlier but not so explicitly: ThinkPad firmware throttles the CPU if the machine is running on a 65W power supply with no battery installed.

See, e.g., http://forums.lenovo.com/t5/X-Series-Tablet-ThinkPad-Laptops/X61-Your-power-adapter-may-be-cheating-you/td-p/17870

Revision history for this message
Brad Figg (brad-figg) wrote : Unsupported series, setting status to "Won't Fix".

This bug was filed against a series that is no longer supported and so is being marked as Won't Fix. If this issue still exists in a supported series, please file a new bug.

This change has been made by an automated script, maintained by the Ubuntu Kernel Team.

Changed in linux (Ubuntu):
status: Confirmed → Won't Fix
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.