命令中核心编号为0,4,8,.......39 sensors
。
为什么不是 0,1,2,3,4.......?
foo@foo-linux:~$ sensors
coretemp-isa-0000
Adapter: ISA adapter
Package id 0: +73.0°C (high = +80.0°C, crit = +100.0°C)
Core 0: +46.0°C (high = +80.0°C, crit = +100.0°C)
Core 4: +50.0°C (high = +80.0°C, crit = +100.0°C)
Core 8: +52.0°C (high = +80.0°C, crit = +100.0°C)
Core 12: +47.0°C (high = +80.0°C, crit = +100.0°C)
Core 16: +73.0°C (high = +80.0°C, crit = +100.0°C)
Core 20: +50.0°C (high = +80.0°C, crit = +100.0°C)
Core 24: +58.0°C (high = +80.0°C, crit = +100.0°C)
Core 28: +52.0°C (high = +80.0°C, crit = +100.0°C)
Core 36: +48.0°C (high = +80.0°C, crit = +100.0°C)
Core 37: +48.0°C (high = +80.0°C, crit = +100.0°C)
Core 38: +48.0°C (high = +80.0°C, crit = +100.0°C)
Core 39: +48.0°C (high = +80.0°C, crit = +100.0°C)
再次更新
这是第 12 代 Intel(R) Core(TM) i7-12700
这是一台 PC,而不是服务器,只有一个 CPU 插槽。
更新
foo@foo-linux:~$ cat /proc/cpuinfo | grep -i apicid
apicid : 0
initial apicid : 0
apicid : 1
initial apicid : 1
apicid : 8
initial apicid : 8
apicid : 9
initial apicid : 9
apicid : 16
initial apicid : 16
apicid : 17
initial apicid : 17
apicid : 24
initial apicid : 24
apicid : 25
initial apicid : 25
apicid : 32
initial apicid : 32
apicid : 33
initial apicid : 33
apicid : 40
initial apicid : 40
apicid : 41
initial apicid : 41
apicid : 48
initial apicid : 48
apicid : 49
initial apicid : 49
apicid : 56
initial apicid : 56
apicid : 57
initial apicid : 57
apicid : 72
initial apicid : 72
apicid : 74
initial apicid : 74
apicid : 76
initial apicid : 76
apicid : 78
initial apicid : 78
这个答案可能不会让您感到惊讶,但是:因为那是写的方式
sensors
。sensors
只是sensors_get_detected_chips
用来遍历所有传感器——而不是通过 CPU 内核。传感器的这些顺序是在相关总线上“检测到的”(因此,主要是 I²C/SMBUS,仿真 ISA),而不是 CPU 内核(相对任意)编号的顺序。核心编号来自驱动模块中
cpu_core_id
的变量。在其源代码中,是这样描述的:struct temp_data
coretemp
cpu_core_id
和是在指定处理器中读取/写入特定于模型的寄存器的机器代码指令
rdmsr
。wrmsr
该coretemp
模块通过arch/x86/lib/msr-smp.c中定义的函数使用这些指令。这些函数只是按原样传递 CPU/核心 ID 字段,因此显示的 ID 正是您的主板和 CPU 使用的 ID。如果您的主板有 4 个 CPU 插槽,但只安装了一个插槽,则固件可能已配置为依次为每个插槽分配 ID 号,因此属于空插槽的 ID 将被闲置。但在您的情况下,末尾有一系列四个连续的核心 ID (36 .. 39),因此这可能有所不同。
也许这是一个具有两种类型内核的处理器,一种类型的内核在编号上有间隙(0、4、8 ...),而另一种没有间隙(36 .. 39)?
要了解更多信息,有必要确定确切的处理器型号(例如使用 的输出
lscpu | head -14
),然后研究该处理器型号的技术文档以了解如何在硬件/微代码级别分配核心 ID。如果主板/固件不能指定核心 ID 的分配,那么可以猜测 CPU 制造商可能正在计划下一代处理器,其中包含更多的第一类核心(即编号中的空白部分或完全填补) . 但这只是一个猜测,制造商的计划无论如何都可能改变......