Mitch Bradley wmb at laptop.org
Tue Nov 3 13:09:03 EST 2009

Emiliano Pastorino wrote:
>     There is a way to check the temperature under Linux.  It involves
>     the "lmsensors" package, but I don't know the exact details.
> Yes, that's what I've been using. The package is lm_sensors, if 
> installed, you just have to type "sensors" and you get the temperature 
> in ºC.
> I've already checked that temperature never goes beyond 100ºC, so it 
> is working.
> But how does it work? Is it just underclocking?

The CPU changes the clock ratio dynamically when the temperature gets 
too high.

> I've checked /proc/cpuinfo, but clock is always at ~1GHz

I don't know the details of how /proc/cpuinfo gets the clock 
information.  You can see the clock transitions in Open Firmware as follows:

ok 198 .msr  show-temperature  (cr  many

In the unthrottled case, the MSR value will be 04060a06.04000a06.  In 
the throttled case it will be 04060a06.040c0406.
The fields in that value are AABBCCDD.EEFFGGHH, where

AA is the lowest supported clock ratio
BB is the lowest supported voltage
CC is the highest supported clock ratio
DD is the highest supported voltage
EE is the lowest configured clock ratio
FF contains status bits
GG is the current clock ratio
HH is the current voltage

All of the voltage fields are 06, which means that the voltage doesn't 
change.  The minimum clock ratio is 04, meaning 400 MHz, the maximum is 
0a (decimal 10) meaning 1 GHz.  The GG field is normally 0a - full speed 
- but changes to 04 briefly when the processor throttles back to drop 
the temperature from 100 to 95.  The FF status field changes from 00 to 
0c when throttling is in process.  It is possible that /proc/cpuinfo is 
reporting the correct information, but the throttling happens too 
briefly to notice the change.

The CPU runs at full speed until the temperature reaches 100, then it 
drops back to 400 MHz, but very quickly resumes full speed operation 
when the temperature drops to 95.

More information about the Devel mailing list