全体像を把握するには、コアあたりのスレッド数、ソケットあたりのコア数、およびソケット数を確認する必要があります。これらの数値を掛けると、システム上の CPU の数が得られます。
<ブロック引用>CPU =コアあたりのスレッド X ソケットあたりのコア X ソケット
CPU は htop
を実行したときに表示されるものです (これらは物理 CPU とは異なります)。
デスクトップ マシンの例を次に示します。
$ lscpu | grep -E '^Thread|^Core|^Socket|^CPU\('
CPU(s): 8
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
サーバー:
$ lscpu | grep -E '^Thread|^Core|^Socket|^CPU\('
CPU(s): 32
Thread(s) per core: 2
Core(s) per socket: 8
Socket(s): 2
nproc
の出力 lscpu
からの CPU カウントに対応 .上記のデスクトップ マシンの場合、これは lscpu
によって報告された 8 個の CPU と一致するはずです。 :
$ nproc --all
8
/proc/cpuinfo
の出力 この情報と一致する必要があります。たとえば、上記のデスクトップ システムでは、8 つのプロセッサ (CPU) と 4 つのコア (コア ID 0-3) があることがわかります。
$ grep -E 'processor|core id' /proc/cpuinfo
processor : 0
core id : 0
processor : 1
core id : 0
processor : 2
core id : 1
processor : 3
core id : 1
processor : 4
core id : 2
processor : 5
core id : 2
processor : 6
core id : 3
processor : 7
core id : 3
cpu cores
/proc/cpuinfo
によって報告されました Core(s) per socket
に対応 lscpu
によって報告されました .上記のデスクトップ マシンの場合、これは lscpu によって報告されるソケットあたり 4 コアと一致するはずです:
$ grep -m 1 'cpu cores' /proc/cpuinfo
cpu cores : 4
質問に具体的に答えるには、ソケットあたりのコア数にソケットの数を掛けて、コアの数を伝えます。
<ブロック引用>コア =ソケットあたりのコア X ソケット
上記の例のシステムでは、デスクトップに 4 つのコアがあります:
$ echo "Cores = $(( $(lscpu | awk '/^Socket\(s\)/{ print $2 }') * $(lscpu | awk '/^Core\(s\) per socket/{ print $4 }') ))"
Cores = 4
サーバーには 16 個ありますが、
$ echo "Cores = $(( $(lscpu | awk '/^Socket\(s\)/{ print $2 }') * $(lscpu | awk '/^Core\(s\) per socket/{ print $4 }') ))"
Cores = 16
もう 1 つの便利なユーティリティは dmidecode
です。 ソケット情報ごとに出力します。上記のサーバー システムの場合、ソケットあたり 8 コア、ソケットあたり 16 スレッドが期待されます。
$ sudo dmidecode -t 4 | grep -E 'Socket Designation|Count'
Socket Designation: CPU1
Core Count: 8
Thread Count: 16
Socket Designation: CPU2
Core Count: 8
Thread Count: 16
lscpu
コマンドには、チェックアウトしたい便利なオプションがいくつかあります。例:
$ lscpu --all --extended
$ lscpu --all --parse=CPU,SOCKET,CORE | grep -v '^#'
man lscpu
を参照 詳細はこちら
要約:
- ソケット、コア、スレッドに注意する必要があります
- CPU という用語は、文脈によって意味が異なるため、注意が必要です
ソケットとソケットごとのコアを確認する必要があります。この場合、4 つのコア (ソケットあたりのコア数) を持つ 1 つの物理 CPU (ソケット) があります。
この情報は nproc(1)
で取得できます コマンド
$ nproc --all
12
root 権限は必要ありません。