Linuxシステムのコア数はどのようにわかりますか?

Linuxシステムのコア数はどのようにわかりますか?

私のシステムにいくつかのコアがあるかどうかを知りたかったので、Googleで同じ質問を検索しました。コマンドと同じコマンドを受け取りましたlscpu。このコマンドを実行すると、次のような結果が表示されます。

$ lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                4
On-line CPU(s) list:   0-3
Thread(s) per core:    1
Core(s) per socket:    4
Socket(s):             1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 23
Stepping:              10
CPU MHz:               1998.000
BogoMIPS:              5302.48
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              2048K
NUMA node0 CPU(s):     0-3

具体的には、この出力は次のようになります。

  • CPU: 4
  • ソケットあたりのコア数:4
  • CPUシリーズ:6

次のうちLinuxシステムの核心を表すものは何ですか?

コア数を知るための別のコマンドがありますか、それとも完全に間違っていると思いますか?

答え1

全体像を得るには、数量を調べる必要があります。各コア、コア各コンセントとソケット。これらの数字を掛けると、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

出力はnprocCPUの数に対応しますlscpu。上記のデスクトップでは、以下に報告されている8つのCPUと一致する必要がありますlscpu

$ 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一致します。上記のデスクトップでは、lscpuによって報告されたソケットあたり4つのコアと一致する必要があります。Core(s) per socketlscpu

$ 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

別の有用なユーティリティは、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という用語は状況によって異なる意味を持ちますので注意が必要です。

答え2

ソケット数とソケットあたりのコア数を確認する必要があります。この場合、4つのコア(ソケットごとに複数のコア)を持つ1つの物理CPU(ソケット)があります。

答え3

この情報は、以下から入手できます。nproc(1)注文する

$ nproc --all
12

root権限は必要ありません。

答え4

また、このコマンドを使用してcat /proc/cpuinfo各コアのデータブロックを出力することもできます。各ブロックは次の情報で始まります。

processor   : 3
vendor_id   : GenuineIntel
cpu family  : 6
model       : 60
model name  : Intel(R) Core(TM) i5-4210M CPU @ 2.60GHz
(...)

コア番号は0から始まるので、最後のブロックがprocessor : 3この例と同じ場合、コンピュータに4つのコアがあります。

関連情報