14

I've just finished building a new machine with a i9 9900k CPU, a CPU with 1 socket, 8 cores and 16 threads. I installed Ubuntu Bionic on it, and I am just about to add checks to the CPU temperatures.

However, when I run cat /sys/class/thermal/thermal_zone*/temp (as recommended by https://askubuntu.com/a/15834/822289) I get 3 results:

27800
40000
28000

Edit 1: The "correct" CPU-temperature is the one shown at thermal_zone2.

I thought maybe a 3rd-party program like acpi might help:

# acpi -t
Thermal 0: ok, 27.8 degrees C

But that one only gives me what's on thermal_zone0. What do the other ones represent, especially thermal_zone1, and how can I find more information about that?

Edit 2: The answer to what do the other ones represent can be found by running the following command:

cat /sys/class/thermal/thermal_zone*/type

Which gives me, in this case, the following output:

acpitz
pch_cannonlake
x86_pkg_temp
6
  • By experiment, thermal zone 2 seems to be processor package temperature, I don't know what the others are. Using the msr-tools package the MSRs (Machine Specific Registers) can be read directly. Package temperature, for example: sudo rdmsr --bitfield 22:16 -u 0x1b1 The core temperature for each CPU: sudo rdmsr --bitfield 22:16 -u -a 0x19c. See also here. Jan 19, 2019 at 17:40
  • 1
    Note that idle CPUs can sleep for up to 4 seconds, so don't run the commands every second, because you might simply be waking CPUs just to ask them their temperature. Jan 19, 2019 at 17:46
  • I made a mistake, the MSRs give temperature relative to TCC (98 degrees for my i7-2600K). So to convert the above readings to actual temperatures is TCC - reading. Jan 21, 2019 at 15:33
  • @DougSmythies you're absolutely right. It is thermal zone 2 - ran a few stress tests and monitored all 3 thermal zones to see which one changes the most. Thermal zone 0 is static and never changes. I am very curious though what's on thermal zone 1.
    – Oleg
    Jan 22, 2019 at 10:09
  • 3
    I don't think that the number of thermal zones and their definitions are the same for every computer. Do cat /sys/class/thermal/thermal_zone2/type and I think you'll get x86_pkg_temp, which i think is good enough for what you want. On my computer thermal zone 1 is the fan (I think), and I still don't know what thermal zone 0 is, but the type is acpitz. If you really want all the core temps do grep . /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp*_input, however note that it uses considerable code and will show a higher temp than it should for an idle system, just due to itself. Jan 22, 2019 at 19:34

1 Answer 1

2

The exact definition of what a given thermal zone represents is defined by the driver for the given zone. Different processors and motherboards make different thermometers available to linux, and so every one has it's own name. Each of the different zones is a different thermometer on the system: the "acpitz" one is the one made available through ACPI, and the x86_pkg_temp is the temperature exported by the core x86 spec. The ACPI one is a motherboard sensor that is near the CPU socket, and the x86_pkg_temp is within the CPU itself

Based on a git grep through the kernel source tree, the 2nd one (pch_cannonlake) specifies the thermomemter output of an intel-specific thermocouple, used for thermal throttling. However, determining it's exact location (as with the others) is at best an educated guess: it will vary by chipset and manufacturer, so you would need to consult the detailed specification and layout of your chip.

2
  • What do you think "pkg" stands for in x86_pkg_temp? "package"? That sounds like a strange choice to me. May 30, 2021 at 15:39
  • 1
    Probably the chip itself. The "package" would be referring to the package that includes the silicon of the CPU, the heat spreader, and the pinouts: ie, what you get when you open the CPU box. This is to differentiate the temperature on this sensor from the other thermometers in a computer. This is the sensor inside the CPU: there is another sensor in the motherboard near the socket, and possible some more in other places. Jun 1, 2021 at 5:30

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.