Мониторинг температуры

Конкретные экземпляры
Core(TM)2 Duo CPU    E4500  @ 2.20GHz (2208.29-MHz K8-class CPU

Длительная нагрузка на оба ядра CPU: 100% user,  0.0% nice,  0.0% system,  0.0% interrupt,  0.0% idle Mem: 548M Active, 819M Inact, 262M Wired, 252K Cache, 213M Buf, 342M Free Swap: 2048M Total, 2048M Free

PID USERNAME   THR PRI NICE   SIZE    RES STATE   C   TIME   WCPU COMMAND 2286 leksey      33  44    0   966M   824M ucond   0 158:11 198.88% firefox-bin

sysctl -a| grep temperature dev.cpu.0.temperature: 78.0C dev.cpu.1.temperature: 78.0C

Мониторинг PentiumD семейство
CPU: Intel(R) Core(TM)2 CPU         6600  @ 2.40GHz (2419.29-MHz 686-class CPU) Origin = "GenuineIntel" Id = 0x6f6  Stepping = 6 Features=0xbfebfbff Features2=0xe3bd AMD Features=0x20100000 AMD Features2=0x1 Cores per package: 2

По умолчанию температура не выводится: sysctl dev.cpu.0  dev.cpu.0.%desc: ACPI CPU dev.cpu.0.%driver: cpu dev.cpu.0.%location: handle=\_PR_.CPU0 dev.cpu.0.%pnpinfo: _HID=none _UID=0 dev.cpu.0.%parent: acpi0 dev.cpu.0.freq: 2400 dev.cpu.0.freq_levels: 2400/88000 2100/77000 1800/66000 1600/60000 1400/52500 1200/45000 1000/37500 800/30000 600/22500 400/15000 200/7500 dev.cpu.0.cx_supported: C1/0 dev.cpu.0.cx_lowest: C1 dev.cpu.0.cx_usage: 100.00%</i> После загрузки модуля - появляется соответствующее значение в дереве переменных: "dev.cpu.0.temperature: 52" Полный вывод <PRE> sysctl -a dev.cpu dev.cpu.0.%desc: ACPI CPU dev.cpu.0.%driver: cpu dev.cpu.0.%location: handle=\_PR_.CPU0 dev.cpu.0.%pnpinfo: _HID=none _UID=0 dev.cpu.0.%parent: acpi0 dev.cpu.0.freq: 2394 dev.cpu.0.freq_levels: 2394/89000 2128/77697 1862/67462 1629/59029 1596/56960 1396/49840 1197/42720 997/35600 798/28480 598/21360 399/14240 199/7120 dev.cpu.0.temperature: 50 dev.cpu.0.cx_supported: C1/1 dev.cpu.0.cx_lowest: C1 dev.cpu.0.cx_usage: 100.00% dev.cpu.1.%desc: ACPI CPU dev.cpu.1.%driver: cpu dev.cpu.1.%location: handle=\_PR_.CPU1 dev.cpu.1.%pnpinfo: _HID=none _UID=0 dev.cpu.1.%parent: acpi0 dev.cpu.1.temperature: 50 dev.cpu.1.cx_supported: C1/1 dev.cpu.1.cx_lowest: C1 dev.cpu.1.cx_usage: 100.00% </PRE>
 * 1) kldload coretemp

Но не на всех D процессорах после загрузки модуля начинает отображаться температура. От версии оно не зависит, в 8.0, тоже не покажет.

7.0 FreeBSD и Pentium D <PRE> CPU: Intel(R) Pentium(R) D CPU 2.80GHz (2800.12-MHz 686-class CPU) Origin = "GenuineIntel" Id = 0xf64  Stepping = 4 Features=0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE> Features2=0xe49d<SSE3,RSVD2,MON,DS_CPL,EST,CNXT-ID,CX16,xTPR,PDCM> AMD Features=0x20100000<NX,LM> AMD Features2=0x1<LAHF> Cores per package: 2 </PRE>

8.0 FreeBSD и Celeron D CPU: Intel(R) Celeron(R) CPU 2.66GHz (2669.35-MHz 686-class CPU) Origin = "GenuineIntel" Id = 0xf49  Stepping = 9 Features=0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE> Features2=0x651d<SSE3,DTES64,MON,DS_CPL,TM2,CNXT-ID,CX16,xTPR> AMD Features=0x20100000<NX,LM> AMD Features2=0x1<LAHF> TSC: P-state invariant </PRE>

Intel
I figured out what the "processor thermal margin" is. As I understand it, your BIOS takes your CPU's thermal spec and subtracts the CPU's current temp from it, giving you the "processor thermal margin" - giving you an indication of how much hotter the CPU can get before it runs hotter than what it is designed to handle. In other words, you want the "processor thermal margin" to be as high as possible - the higher it is, the cooler your CPU is.

How does it work?

Core Temp lets you monitor Intel "Core Duo", "Core Solo", "Core 2 Duo", "Core 2 Solo", "Core 2 Quad", " Pentium", "Core i3", "Core i5", "Core i7", "Core i9", series, "Celeron" series (Conroe/Merom architecture and newer), "Xeon 3000/3200/5100/5300/5400/5500/5600/6500/7400/7500/7600" series (Woodcrest, Clovertown, Harpertown, Dunnington and Nehalem based architecture). All AMD Phenom II, Athlon II, Phenom, Athlon, Opteron, Sempron, Turion II and Turion series series die temperature. The temperature readings are very accurate as the data is collected from a Digital Thermal Sensor (or DTS) which is located in each individual processing core, near the hottest part. This sensor is digital, which means it doesn't rely on an external circuit located on the motherboard to report temperature, its value is stored in a special register in the processor so any software can access and read it. This eliminates any inaccuracy that can be caused by external motherboard circuits and sensors and then different types of programs trying to read those sensors.

This is how the program works:

Intel defines a certain Tjunction temperature for the processor. This value is usually in the range between 85°C and 105°C. In the later generation of processors, starting with Nehalem, the exact Tjunction Max value is available for software to read in an MSR (short for Model Specific Register). A different MSR contains the temperature data. The data is represented as a Delta in °C between current temperature and Tjunction.

So the actual temperature is calculated like this 'Core Temp = Tjunction - Delta'

The size of the data field is 7 bits. This means a Delta of 0 - 127°C can be reported in theory. In fact the reported temperature can rarily go below 0°C and in some cases (Core 2 - 45nm series) temperatures below 30° or even 40°C are not reported.

AMD processors report the temperature via a special register in the CPU's northbridge. Core Temp reads the value from the register and uses a formula provided by AMD to calculate the current temperature. The formula for the Athlon 64 series, early Opterons and Semprons (K8 architecture) is: 'Core Temp = Value - 49'. For the newer generation of AMD processors like Phenom, Phenom II, newew Athlons, Semprons and Opterons (K10 architecture), and their derivatives, there is a differnt formula: 'CPU Temp* = Value / 8'.

The sensor in AMD CPUs can report temperatures between -49C and 206C.


 * CPU Temp is because the Phenom\Opteron (K10) have only one sensor per package, meaning there is only one reading per processor.