Coretemp seems to be off quite a bit

Jeremy Chadwick koitsu at FreeBSD.org
Mon Oct 6 18:07:35 UTC 2008


On Mon, Oct 06, 2008 at 09:39:40AM -0500, Kirk Strauser wrote:
> I have a Gigabyte motherboard with an Intel ICH-9 chipset, and a 3.0GHz 
> Core 2 Duo (E8400).  The coretemp sysctls seem to always show 50C as the 
> baseline temperature:
>
> $ sysctl dev.cpu | grep temp
> dev.cpu.0.temperature: 50
> dev.cpu.1.temperature: 50
>
> This is with a big PSU fan, a good CPU fan, a clean heatsink, and two  
> case fans aimed the right direction (front fan pulling cool air in, rear 
> fan pushing warm air out).  If I reboot and go into the BIOS, I get 
> numbers around 42-43C.

First and foremost: there is always the possibility of a bug in
coretemp(4).  I'm not dissuading that possibility, but let's talk about
the other aspects first.

There is a common misconception that what the BIOS reports is the on-die
CPU temperature.  This is often not the case.  In 90% of the
motherboards out there, the temperatures shown in the BIOS are taken
from external sensors: that is to say, a thermistor on the motherboard
intended for monitoring system temperature.  This is very different from
the on-die processor core temperatures that coretemp(4) shows.

You didn't state what exact model of Gigabyte motherboard you're using,
nor did you state what BIOS version, so I can't help here.  But all
of these boards come with 1) the ability to monitor voltages, 2) the
ability to monitor fan RPMs, and 2) the ability to monitor temperatures.
All of these requires an external H/W monitoring IC, which *is not*
the same thing coretemp(4) reports.

Secondly, if the BIOS does in fact report on-die core temperatures,
then there is a certain amount of differential which should be allowed.
That's often 4-5C, believe it or not.  The BIOS has a tendency to run
hotter, because it does not do things such as execute HLT instructions
on idle processors and so on, like FreeBSD, Linux, and Windows do.

Thirdly, there is a known "issue" with on-die temperature reporting.  On
my E6550, the Windows program called RMClock reports my cores at
something like 56C each, yet CoreTemp (which uses the same data) reports
them at 36C.  While on my Q9550, all cores are reported properly in both
CoreTemp and RMClock (about 30-36C per core; the variance between cores
is normal).

The 20C difference seen on my E6550 between RMClock and CoreTemp has to
do with something called "TJunction", or at least that's what I'm told
by the RMClock author.  You can Google for that term and see exactly
what I'm talking about.  Different software authors implement the
calculation formula differently.

http://www.alcpu.com/CoreTemp/howitworks.html

Finally, there's also something called "TjunctionMax", which is the
temperature point where if any of the cores reach, will result in the
processor literally shutting off.  CoreTemp also shows this.  I believe
it's set to 85C on my E6550, while 100C on my Q9550.  God forbid the
temperatures ever reach that.

> I know it's kind of hard to compare directly, but the coretemp numbers
> are from a totally idle system with powerd scaling it back to 373MHz,
> so it should be as cool as when sitting idle in the BIOS screens.
> When I work the system hard, like running "make -j4 buildworld", I see
> temperatures up around 63-64C, and I'm almost positive that's not
> right.

If at all possible, boot Windows and run CoreTemp.  If the numbers shown
there are identical to what FreeBSD shows (give or take a couple
degrees), then they are correct.  If Windows is not an option, surely
Linux has something that can show core temperatures.

Be aware that the stock retail heatsink/fan on Intel CPUs is known to be
*horrible* at cooling, and after a few months of use will become noisy
as hell.

If you're using your own heatsink/fan, I highly recommend you consider
removing it and reseating it.  The temperatures you're reporting, in or
out of the BIOS, are what I consider "high".  I used to see ~36-37C
on my E6550 per core when idling, and ~43-44C under load.  On my Q9550 I
see ~30-36C on idle, and 40-42C on load.

> Any ideas why coretemp and the BIOS would show such different numbers?

See above.

-- 
| Jeremy Chadwick                                jdc at parodius.com |
| Parodius Networking                       http://www.parodius.com/ |
| UNIX Systems Administrator                  Mountain View, CA, USA |
| Making life hard for others since 1977.              PGP: 4BD6C0CB |



More information about the freebsd-questions mailing list