コマンドのコア番号は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ソケットが1つしかありません。
修正する
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
答え1
コア番号はドライバモジュールの変数から来ますcpu_core_id
。ソースコードには次のように記述されています。struct temp_data
coretemp
cpu_core_id
* @cpu_core_id: The CPU Core from which temperature values should be read
* This value is passed as "id" field to rdmsr/wrmsr functions.
指定されたプロセッサでモデル固有のレジスタを読み書きするための機械語命令rdmsr
です。wrmsr
このcoretemp
モジュールは、次に定義された関数を通してこれらのディレクティブを使用します。アーチ/x86/lib/msr-smp.c。これらの関数は単にCPU /コアIDフィールドをそのまま渡すため、表示されるIDはマザーボードとCPUで使用されるIDです。
マザーボードに4つのCPUソケットがあり、そのうちの1つだけが満たされている場合は、各スロットにID番号を順番に割り当てるようにファームウェアが構成されている可能性があるため、空のスロットに属するIDは使用されません。ただし、お客様の場合、最後に4つの連続したコアIDシーケンス(36 ... 39)があるため、これは異なる場合があります。
たぶん2つのタイプのコアを持つシングルプロセッサであるかもしれませんが、1つのタイプのコア(0、4、8 ...)については数字に違いがありますが、他のタイプのコア(36..39)には違いはありません。かもしれません。
詳細については、正確なプロセッサモデル(使用される出力などlscpu | head -14
)を決定し、そのプロセッサモデルに関する技術文書を調べて、ハードウェア/マイクロコードレベルでコアIDが割り当てられる方法を理解する必要があります。
マザーボード/ファームウェアがコアID割り当てを指定できない場合は、CPUメーカーがより多くのタイプ1コアを備えた次世代プロセッサを計画している可能性があると推測できます(つまり、番号付けのスペースを部分的または完全に埋める)。しかし、それは推測だけであり、メーカーの計画はどうせ変わることもありますから…
答え2
sensors
しかし、この答えはおそらくあなたを驚かせません。なぜなら、それが書かれた方法だからです。
sensors
sensors_get_detected_chips
CPUコアを通すのではなく、すべてのセンサーを繰り返すために使用されます。これらのセンサーシーケンスは、CPUコアの数の(比較的ランダムな)順序ではなく、関連バス(主にI²C / SMBUS、アナログISA)で「検出」されます。