# amd cpu and amdtemp module



## chika (Jul 7, 2010)

Im try to use amdtemp module for determine cpu temperature. But sysctl OID return wrong information:


```
sysctl -a |grep temperature
dev.cpu.0.temperature: 13.0C
dev.cpu.1.temperature: 13.0C
dev.cpu.2.temperature: 13.0C
dev.cpu.3.temperature: 13.0C
dev.cpu.4.temperature: 13.0C
dev.cpu.5.temperature: 13.0C
```

My hardware is:
...

```
CPU: AMD Phenom(tm) II X6 1090T Processor (3210.89-MHz K8-class CPU)
  Origin = "AuthenticAMD"  Id = 0x100fa0  Family = 10  Model = a  Stepping = 0
  Features=0x178bfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,MMX,FXSR,SSE,SSE2,HTT>
  Features2=0x802009<SSE3,MON,CX16,POPCNT>
  AMD Features=0xee500800<SYSCALL,NX,MMX+,FFXSR,Page1GB,RDTSCP,LM,3DNow!+,3DNow!>
  AMD Features2=0x37ff<LAHF,CMP,SVM,ExtAPIC,CR8,ABM,SSE4A,MAS,Prefetch,OSVW,IBS,SKINIT,WDT>
  TSC: P-state invariant
real memory  = 17179869184 (16384 MB)
avail memory = 16536182784 (15770 MB)
Event timer "LAPIC" frequency 0 Hz quality 500
ACPI APIC Table: <050310 APIC1140>
FreeBSD/SMP: Multiprocessor System Detected: 6 CPUs
FreeBSD/SMP: 1 package(s) x 6 core(s)
 cpu0 (BSP): APIC ID:  0
 cpu1 (AP): APIC ID:  1
 cpu2 (AP): APIC ID:  2
 cpu3 (AP): APIC ID:  3
 cpu4 (AP): APIC ID:  4
 cpu5 (AP): APIC ID:  5
ioapic0 <Version 2.1> irqs 0-23 on motherboard
ioapic1 <Version 2.1> irqs 24-55 on motherboard
```
...

My board is:       

```
Manufacturer: ASUSTeK Computer INC.
        Product Name: Crosshair IV Formula
```



My system is: 

FreeBSD 8.1-PRERELEASE


In case amdtemp.ko is the correct module for my equipment - so my question - where developers find the information under the specification? I am a little familiar with programming on C and probably could add some code for this module for supporting my CPU, but I do not have not enough information - from which registers / on modern the processor it is necessary for memory to read the information.


----------



## tingo (Jul 11, 2010)

Why do you think that the information you got from amdtemp is wrong?


----------



## mk (Jul 11, 2010)

unless this cpu is in super duper freezing cold datacenter then output is wrong. my cpu output shows constant 40C and is wrong. x2 4000+


----------



## tingo (Jul 11, 2010)

Well, your cpu is old compared to his; he have a new generation six core Phoneom II;  new cpus often run a lot cooler than old ones.


----------



## chika (Jul 12, 2010)

No, I am absolutely assured of incorrect data - the system block costs indoors without cooling on temperature of 28-30 degrees celsium. I have come to check up processor temperature in BIOS - it shows quite real data - 35-38 degrees. Cooling and a cooler on CPU absolutely simple


----------



## fronclynne (Jul 14, 2010)

*I prefer that spelling*



			
				tingo said:
			
		

> Well, your cpu is old compared to his; he have a new generation six core Phoneom II;  new cpus often run a lot cooler than old ones.



Not 13C, though.  & I don't see how it would be physically possible for an exothermic device (& non-reverseable too) to be cooler than ambient while running.


----------



## fronclynne (Jul 14, 2010)

chika said:
			
		

> In case amdtemp.ko is the correct module for my equipment - so my question - where developers find the information under the specification? I am a little familiar with programming on C and probably could add some code for this module for supporting my CPU, but I do not have not enough information - from which registers / on modern the processor it is necessary for memory to read the information.



This says

```
/*
 * Driver for the AMD K8/K10/K11 thermal sensors. Initially based on the
 * k8temp Linux driver.
 */
```
I suspect that the linux driver may be a bit further along, though perhaps not, you could check there, and see if anything works better.


----------



## G_Nerc (Oct 15, 2011)

Is there any good news for information from amdtemp module? My CPU Phenom X6 1075 in BIOS shows 55 C, but [cmd=]sysctl -a | grep temp[/cmd]] shows:

```
dev.cpu.0.temperature: 9.0C
dev.cpu.1.temperature: 9.0C
dev.cpu.2.temperature: 9.0C
dev.cpu.3.temperature: 9.0C
dev.cpu.4.temperature: 9.0C
dev.cpu.5.temperature: 9.0C
```
And in my room where that computer temperature > 20 C
OS: FreeBSD 9.0-Beta3 amd64


----------



## break19 (Oct 18, 2011)

Out of curiousity.. Have you considered that perhaps it's just a slight numeric issue, and it's giving you the temperated divided by the number of cores?

On a different note, MY amd Phenom II 2core cpu's temp is correctly reported (not in FreeBSD at the moment, or I'd show you exactly) and it reports my normal temps around the 30C mark, and under full load, will go up to nearly 60C.

I cannot fathom a 13C temp (thats about 50F for those of us unfamiliar with Celsius temps)

However, I can believe a 26C temp if the ambient temps is low enough, and cooling is sufficient.  "Standards" define normal "room temp" as 27C and some datacenters keep it closer to 20C inside.

I can also believe 45C for the 6core box just above me.. tho I'd worry about excess heat under load...

Chuck


----------



## tingo (Oct 18, 2011)

FWIW, here is the info from one of my AMD boxes:

```
tingo@kg-v2$ uname -a
FreeBSD kg-v2.kg4.no 8.2-STABLE FreeBSD 8.2-STABLE #4: Sat Jul 16 02:07:14 CEST 2011
     root@kg-v2.kg4.no:/usr/obj/usr/src/sys/GENERIC  amd64
tingo@kg-v2$ sysctl hw.model
hw.model: AMD Athlon(tm) Dual Core Processor 4850e
tingo@kg-v2$ sysctl dev.cpu.0.temperature;sysctl dev.cpu.1.temperature                                      
dev.cpu.0.temperature: 9.0C
dev.cpu.1.temperature: 9.0C
tingo@kg-v2$ sysctl dev.amdtemp.0.sensor0.core0;sysctl dev.amdtemp.0.sensor0.core1;
sysctl dev.amdtemp.0.sensor1.core0;sysctl dev.amdtemp.0.sensor1.core1
dev.amdtemp.0.sensor0.core0: 9.0C
dev.amdtemp.0.sensor0.core1: 11.0C
dev.amdtemp.0.sensor1.core0: 10.0C
dev.amdtemp.0.sensor1.core1: 7.0C
tingo@kg-v2$ sysctl dev.acpi_aiboost.0.temp0; sysctl dev.acpi_aiboost.0.temp1                               
dev.acpi_aiboost.0.temp0: 400
dev.acpi_aiboost.0.temp1: 430
```
It seems there is some variation in the different modules.
Here is data from another machine:

```
root@kg-vm# uname -a;sysctl hw.model
FreeBSD kg-vm.kg4.no 8.2-STABLE FreeBSD 8.2-STABLE #3: Fri Mar  4 21:16:39 CET 2011
     root@kg-vm.kg4.no:/usr/obj/usr/src/sys/GENERIC  amd64
hw.model: AMD Phenom(tm) 9500 Quad-Core Processor
root@kg-vm# sysctl dev.cpu.0.temperature;sysctl dev.cpu.1.temperature
dev.cpu.0.temperature: 32.0C
dev.cpu.1.temperature: 32.0C
root@kg-vm# sysctl dev.acpi_aiboost.0.temp0; sysctl dev.acpi_aiboost.0.temp1
dev.acpi_aiboost.0.temp0: 320
dev.acpi_aiboost.0.temp1: 330
```
Not very accurate, it seems.


----------



## mem (Mar 5, 2012)

*Different temp between 8.x versions amd64*

Hi,

I have two servers in the same rack with totally different reported temperature. It is maximum 15 rack units between the servers. I have an external (1-wire) temp sensor just below the server I don't trust (inside the rack), and that sensor says 16.62C.

The server that I trust the most:

```
# cat /var/db/freebsd-update/tag | cut -d'|' -f3-4
8.1-RELEASE|1
# sysctl hw dev.cpu | egrep -i '(hw\.(machine|model|ncpu))|(dev\.cpu\..\.temperature)'
hw.machine: amd64
hw.model: AMD Athlon(tm) II X2 215 Processor
hw.ncpu: 2
hw.machine_arch: amd64
dev.cpu.0.temperature: 18.8C
dev.cpu.1.temperature: 18.8C
```

The server that I don't trust:

```
# cat /var/db/freebsd-update/tag | cut -d'|' -f3-4
8.2-RELEASE|4
# sysctl hw dev.cpu | egrep -i '(hw\.(machine|model|ncpu))|(dev\.cpu\..\.temperature)'
hw.machine: amd64
hw.model: AMD Athlon(tm) II X3 455 Processor
hw.ncpu: 3
hw.machine_arch: amd64
dev.cpu.0.temperature: 8.5C
dev.cpu.1.temperature: 8.5C
```

Regards,

// Mem


----------

