Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

Dadioh

macrumors 65816
Original poster
Feb 3, 2010
1,123
36
Canada Eh?
I have a 2006 Mac Pro 1,1 with dual Xeon 2.66GHz. One of my favorite apps on my Macs is iStat Menus for which I purchased a family pack. I am running latest version 3. However, when I added it to my Mac Pro I am getting goofy CPU temp readings. At idle I am reading about 60C on one CPU and 55C on the other. But then if I fire up all the cores (Handbrake for example) then the reported CPU temps DROP to about 48C and 43C (notice same differential of 5C between CPUs). All the fan speeds stay the same so it is not extra cooling kicking in. Seems to be reading the wrong thing.

I know with Intel that the CPU just reports the distance to Tjmax and then the software reading that number takes the TjMax reading for that particular CPU model and figures out the corresponding Tj. It almost seems to be what is happening is that iStat is reading the "distance to TjMax" and reporting that without doing the math. That would account for the reading working backwards I suppose.

Anyone else seen anything like this?

Are there any other programs that report CPU temps that I could use to check?

Thanks in advance...
 
It is possible that I saw this too. I ran a test a few weeks ago with higher fan speeds, and while I expected the temperature to go down, instead it went up. At that point I decided to leave things alone and let the firmware deal with fan control on its own.

I think the problem may actually be a little deeper. iStat just reads the temperature values from the SMC using IOKit calls. And I know it is getting the right temperature at least for some values, because ambient temperature is reported correctly (I've check with a thermometer). Now the interesting thing is that the ambient measurement (TA0P) and the CPU core measurements (e.g. TC0C) have the same data type. If iStat interprets that data type correctly for ambient, it should also report correctly for CPU - but apparently it doesn't. So perhaps it is actually the SMC firmware which is reporting this incorrectly, rather than iStat misinterpreting it.

I plan to check this out again with a thermometer when I get home this evening. Will post my results.

Spidey!!!
 
It is possible that I saw this too. I ran a test a few weeks ago with higher fan speeds, and while I expected the temperature to go down, instead it went up. At that point I decided to leave things alone and let the firmware deal with fan control on its own.

I think the problem may actually be a little deeper. iStat just reads the temperature values from the SMC using IOKit calls. And I know it is getting the right temperature at least for some values, because ambient temperature is reported correctly (I've check with a thermometer). Now the interesting thing is that the ambient measurement (TA0P) and the CPU core measurements (e.g. TC0C) have the same data type. If iStat interprets that data type correctly for ambient, it should also report correctly for CPU - but apparently it doesn't. So perhaps it is actually the SMC firmware which is reporting this incorrectly, rather than iStat misinterpreting it.

I plan to check this out again with a thermometer when I get home this evening. Will post my results.

Spidey!!!

Thanks for the very detailed response. I also found another temperature monitoring program that I am going to try out tonight to see if it is iStat or if it is the Mac Pro reporting the wrong temperature.

The difference that I can see here is that Ambient is just Ambient but with the CPU core temperature there needs to be a simple math operation performed first... The number presented by the Intel processor is not the absolute core temperature. It is the delta between the core temperature and the TjMax (Junction Temperature of the thermal diode on the silicon).

It looks like the E5150 processors have a TjMax of 80C. So somewhere along the line something needs to take the reading from the thermal diode on the Intel core and subtract it from 80C to get the actual core temperature. I don't know if that happens in the Mac hardware/firmware or if iStat needs to do that calculation. I guess I will find out tonight when I try the other SW.

Unless of course it is not the CPU core temperature that is being reported but rather some other HW temperature sensor.
 
It looks like the E5150 processors have a TjMax of 80C. So somewhere along the line something needs to take the reading from the thermal diode on the Intel core and subtract it from 80C to get the actual core temperature.

Well, I just logged in remotely to my Mac Pro and did some checking.

My monitoring program [not iStat, but it's values agree with iStat] shows CPU temp = 57C. If subtract that from 80C, get 23C -- which seems a bit too close to the ambient of 20C to make sense [even on a mostly idle machine]. Also, SMC is reporting CPU Heatsink temp of 27C -- and I don't think it makes sense for the heatsink to be warmer than the CPU itself.

The test which ought to be done now is to increase the fan speeds, and read the CPU temps, subtracting from 80C. This should (in theory) cool the CPU more so that its temperature approaches ambient, as blowing more ambient temp air across the cpu cannot make it any cooler than ambient. Need to check that CPU temps move as we expect, and that the heatsink temperature moves in the same or opposite direction.

Another test could be to shut the machine down entirely overnight so that all of the components revert to ambient temperature. Then boot up the machine and read all of the values as it warms up.
 
OK. Looks like iStat is the problem. I downloaded a program called "Temperature Monitor" and it is making a whole lot more sense. See summary below:

Ambient 18C - No load
iStat CPU 1 = 59C
iStat CPU 2 = 53C
Temp Mon Core 1 = 28C
Temp Mon Core 2 = 27C
Temp Mon Core 3 = 22C
Temp Mon Core 4 = 20C

Loaded 100% - CPU Test
iStat CPU 1 = 46C
iStat CPU 2 = 41C
Temp Mon Core 1 = 41C
Temp Mon Core 2 = 39C
Temp Mon Core 3 = 34C
Temp Mon Core 4 = 31C

Notice under load Temp Mon shows cores rise about 11C to 13C while iStat coincidently DROPS by the same amount. Looks like they have indeed messed up their math. I will report it to them and see what they say. I can't be the first to notice this :confused:
 

Attachments

  • istat_ambient.jpg
    istat_ambient.jpg
    53.1 KB · Views: 221
  • istat_load.jpg
    istat_load.jpg
    54.9 KB · Views: 231
  • tempmon_ambient.jpg
    tempmon_ambient.jpg
    160.1 KB · Views: 215
  • tempmon_load.jpg
    tempmon_load.jpg
    159 KB · Views: 321
Unfortunately I didn't get a chance to do physical testing last night. I will probably be able to do it during the day tomorrow.

As for iStat -- I don't think the messed up their math, but rather that they are not doing any math at all. My program reads the value directly from the SMC and reports it with no math applied -- since iStat reports the same value, I assume that it is doing the same.

It seems that the SMC itself reports a partially raw value which needs some calculation - which neither iStat nor my program are doing.

Alternatively, it is possible that Temperature Monitor is reporting a different value entirely, perhaps obtained directly from the CPU and not via the SMC. I note that SMC provides real data only for CPU A Core 0 and CPU B Core 0, while reporting 0C for both CPU A Core 1 and CPU B Core 1. Temperature Monitor seems to report data for all four cores. I wonder how it does that -- as my program dumps all of the SMC values, and none of them seem to match with the CPU core temp values reported by Temperature Monitor...
 
Unfortunately I didn't get a chance to do physical testing last night. I will probably be able to do it during the day tomorrow.

As for iStat -- I don't think the messed up their math, but rather that they are not doing any math at all. My program reads the value directly from the SMC and reports it with no math applied -- since iStat reports the same value, I assume that it is doing the same.

It seems that the SMC itself reports a partially raw value which needs some calculation - which neither iStat nor my program are doing.

Alternatively, it is possible that Temperature Monitor is reporting a different value entirely, perhaps obtained directly from the CPU and not via the SMC. I note that SMC provides real data only for CPU A Core 0 and CPU B Core 0, while reporting 0C for both CPU A Core 1 and CPU B Core 1. Temperature Monitor seems to report data for all four cores. I wonder how it does that -- as my program dumps all of the SMC values, and none of them seem to match with the CPU core temp values reported by Temperature Monitor...

I am pretty sure Temperature Monitor is reading the thermal diode on the silicon and that is why they are reporting "core" temperatures. If I were to boot into Windows and use something like RealTemp on the Windows side I am betting it would line up with Temperature Monitor.

I think my mistake was assuming that the "CPU 1" temperature was a core temperature when it clearly is not. In fact it is opposite to the direction it should go.

I think that I will just get rid of the temperature reading in iStat and use Temperature monitoring instead. I just want to see my core temps because I am about to swap in some quad core E5345's and want to make sure the temps stay in the safe range.
 
At that point I decided to leave things alone and let the firmware deal with fan control on its own.

+1

This thread is the main reason I have no interest in monitoring my CPU's temperatures. The computer works, it stays cool enough to work well with any task I throw at it.

Fretting over degrees and fan speeds would drive me nuts.
 
+1

This thread is the main reason I have no interest in monitoring my CPU's temperatures. The computer works, it stays cool enough to work well with any task I throw at it.

Fretting over degrees and fan speeds would drive me nuts.

I hear ya. I do thermal design at a large telecom manufacturer so it is of interest to me for purely technical and curiosity reasons ;)

My main concern at the moment is that when I install the new quad core E5345's they have a higher power dissipation and the only way to know if it is running cool is to see the reading for myself.

Right now, the fans are whisper quiet on my machine and I will gladly leave them that way if it only costs me 10C of temperature rise with the new processors. The older Macbook Pros routinely run into the 80C range on the cores and it doesn't seem to bother them. Although the Xeon E53xx series has a TjMax of 80C according to Intel so I wouldn't want to see it break 70C.
 
Cool beans!

I think there are a bunch of people out there that fret over even little minutia and don't let their Macs just work.

Glad you are not one of them. :)

And with me being a meteorologist, you might think I would, in fact, be interested in temperatures. :p
 
Cool beans!

I think there are a bunch of people out there that fret over even little minutia and don't let their Macs just work.

Glad you are not one of them. :)

And with me being a meteorologist, you might think I would, in fact, be interested in temperatures. :p

Well I got my answer. I installed my E5345's today and if I load up all 8 cores with CPUTest small FFT's then the fans level off at about 1300rpm (noticeable) but core temps are in the high 30's C and the hottest core is just 41C. That is tons of margin so I can rest at ease that the octocore is not taxing the cooling system in the slightest.

Would be nice if iStat could fix the problem so I wouldn't have to run 2 programs for the whole picture.
 
I think there are a bunch of people out there that fret over even little minutia and don't let their Macs just work.

I totally agree with you there...

...but unfortunately the OCD kicks in now whenever I look at iStat and see what I now know to be the wrong temperature being reported.

Now I wish I had never become aware of the issue :eek:
 
Sorry to resurrect an old thread, but does anyone out there know if Bjango ever fixed iStat to resolve this issue?
 
Sorry to resurrect an old thread, but does anyone out there know if Bjango ever fixed iStat to resolve this issue?

Not for the last few releases anyways. Haven't tried the very latest that seems to have popped up in the last couple of weeks. I don't think Bjango is paying much attention to this since Mac Pro's make up such a small percentage of the machines out there. It works fine on iMac, Macbook, Mac Mini so there is probably little motivation to solve it for Mac Pro.

It is a super simple fix however. They just have a math error in how they treat the reading from the CPU. On a Core2Duo the CPU reading from the thermal diode is the delta from Tj to the Tjmax. Therefore Tj = Tjmax - thermal diode reading from the CPU. Dead simple assuming you know Tjmax which Intel kindly provides. Why it is different on the Mac Pro's I don't know. Maybe the Xeons report temps differently?

But Temperature Monitor seems to know how to do it so I suspect Bjango could figure it out if they really wanted to.

http://www.bresink.com/osx/TemperatureMonitor.html
 
istatMenus works fine on my 2010 mac pro

Have you verified that it shows CPU temp goes down when you increase fan speed, and that CPU temp goes up when running compute intensive tasks?

It looked fine on my MacPro1,1 until I looked hard...
 
Just checked and latest version of iStat Menus 3.17 still has the bug. CPU1 and CPU2 both report around 50C at idle. When I start a handbrake run to load all 8 cores the CPU1 and CPU2 temps drop to 36C and 34C respectively.

So what I suspect they are doing is taking the raw reading from the thermal diode and reporting that. So if Tjmax is 80C (according to a quick search) then I am idling about 30C on the 2 CPU's and hitting about 45C under load. Again, this is assuming that they are reporting an average of actual core temperatures and not doing some math to try and get a IHS temperature.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.