短い答え

短い答え

もちろん、我々はcat /proc/cpuinfo |grep "cpu cores"それが出力を与えることを知っています。

[root@14:47 ~]#  cat /proc/cpuinfo |grep "cpu cores"
cpu cores       : 2
cpu cores       : 2
cpu cores       : 2
cpu cores       : 2

しかし、実際にはCPUコアの総数を取得したいと思います。私が望む結果は

cpu cores: 8

どうすればそのような結果が得られますか?

答え1

この試み、

~によるとman lscpu

CORE   The logical core number. A core can contain several CPUs.

SOCKET The logical socket number. A socket can contain several cores.

coressockets物理数値、はCPU(s)論理番号です。したがって、システムのコア数を確認するには、次の手順を実行します。number of cores x number of sockets

サンプル出力はlscpu次のとおりです。

Thread(s) per core:    2
Core(s) per socket:    8
Socket(s):             2

だから合計はcores: 16

総数CPU(s): 32threads各数量はcoreなので2

@Durgaが述べたように、nproc総数が提供されますCPUs

詳しくはこちらをご覧ください回答/proc/cpuinfo参照の説明を入手してください。これ

ありがとうございます@先行は達成するのが難しい理解するのに役立ちます同じ

答え2

端末からのnprocOP:CPUコアの総数

答え3

あなたならどうでしょうか?金額だけに興味がある、GNU awkを使用することもできます。

cat /proc/cpuinfo |grep "cpu cores" | awk -F: '{ num+=$2 } END{ print "cpu cores", num }'

編集する:これは、最後の列の数を合計したいOPの意図に対する正解です。ただし、マシンにいくつかのコア(物理/仮想)があるかどうかを確認する質問は、この質問に対する他の答えに記載されています。

答え4

短い答え

数量物理学の中心:

> cat /proc/cpuinfo | grep -m 1 "cpu cores"
cpu cores   : 2

数量仮想コア(例:ハイパースレッディングを使用する物理コアの数の2倍):

> cat /proc/cpuinfo | grep -c "cpu cores"
4

複数のCPU/プロセッサがある場合(この感情)これはマザーボードでは正しく機能しません。 「マザーボードあたりのマルチCPU」セクションを参照してください。これは、コンピューティングクラスターまたはCAD / エンジニアリング目的で使用される高度なデスクトップワークステーションで作業している場合があります。

長い答え

このコマンドはcat /proc/cpuinfoその行の物理コアの数を印刷する必要がありますcpu cores。ただし、各仮想コアについてこの情報を印刷します。したがって、物理コアの数を取得するには、行の最初のエントリを取得しますcpu cores。つまり、

> cat /proc/cpuinfo | grep -m 1 "cpu cores"
cpu cores   : 2

または、仮想コアの数を探している場合は、行が見つかった回数を数えることができますcpu cores。つまり、

> cat /proc/cpuinfo | grep -c "cpu cores"
4

はい

1つ(物理コア4個、ハイパースレッド)がありますIntel(R) Core(TM) i7-3740QM CPU @ 2.70GHz。私が何を得たのか見てみましょう:

> cat /proc/cpuinfo | grep "cpu cores"
cpu cores   : 4
cpu cores   : 4
cpu cores   : 4
cpu cores   : 4
cpu cores   : 4
cpu cores   : 4
cpu cores   : 4
cpu cores   : 4

物理コアの数:

> cat /proc/cpuinfo | grep -m 1 "cpu cores"
cpu cores   : 4

仮想コア数:

> cat /proc/cpuinfo | grep -l "cpu cores"
8

最後に見つかったプロセッサ番号を取得して追加することもできます。

> cat /proc/cpuinfo | grep "processor" | tail -1
processor   : 7
# +1

マザーボードあたり複数のCPU

現在使用中のコンピューティングクラスタの1つのノードを見ました。 1つのノードには4つのCPU(Intel Xeon)があり、ノードごとに8つの物理コアがあります。したがって、各CPUには16個の仮想コアがあります。ノードには32の物理コアと64の仮想コアがあります。

cat /proc/cpuinfo各仮想コアに関する情報を印刷します。従って私達は64の情報「パケット」を得ます。そのような設定があるphysical id場合cat /proc/cpuinfo

これは私が得た結果です。

> cat /proc/cpuinfo | grep -m 1 "cpu cores"
cpu cores   : 8

> cat /proc/cpuinfo | grep -c "cpu cores"
64

> cat /proc/cpuinfo | grep "physical id" | tail -1
physical id   : 3
# this result +1 => number of CPUs

したがって、「以降の数字cpu coresx」physical id+ 1以降の数字は、私たちのノードの物理コアの数(8 x(3 + 1))です。64は仮想コアの数です。

命名法

誰もが異なる状況でコア、CPU、プロセッサを使用するので、ここで答えの用語を紹介します。

  • プロセッサー: ハードウェア全体 (例: Intel® Core™ i7-3740QM プロセッサー)
  • CPU: CPU=プロセッサ
  • コアまたは物理コア:CPUの物理コンピューティングデバイスの数
  • スレッドまたは仮想コア:(インテル)プロセッサがハイパースレッディングをサポートしている場合、CPUで並列に実行できるスレッドの数は、仮想コアの数は物理コアの数の2倍です。他のプロセッサベンダーはこの機能を呼び出します。)

__例:__

データ:

  • CPU数:1
  • プロセッサ数:1
  • コア(または物理コア):4
  • スレッド(または仮想コア):8

関連情報