GNU/Linux >> Linux の 問題 >  >> Linux

Linux でシステムのコア数を知る方法は?

全体像を把握するには、コアあたりのスレッド数、ソケットあたりのコア数、およびソケット数を確認する必要があります。これらの数値を掛けると、システム上の 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 権限は必要ありません。


Linux
  1. Linuxで特定のピンの割り込み/ GPIO番号を知る方法

  2. Linux システムで JVM パスを知る方法は?

  3. Linux システムに Java がインストールされていることを確認するにはどうすればよいですか?

  1. Linuxでディスクiノード数を増やす方法

  2. Linux:どのプロセスがどのコアに固定されているかを知る方法は?

  3. Linux サーバーがハッキングされたかどうかを知るにはどうすればよいですか?

  1. RedhatLinuxで仮想化を構成する方法

  2. Linuxでシステムホスト名を設定または変更する方法

  3. Linuxでホスト名を変更する方法