コアとスレッド:このマシンでいくつのスレッドを実行する必要がありますか?


41

このマシンでいくつのスレッドを実行する必要がありますか?

lscpuは96のコアがあると言います。それらの物理的なコアはありますか?このマシンで実行できる最大かつ最適なスレッドは何ですか?

https://stackoverflow.com/a/10670440/610569は、コアあたり20以上のスレッドを実行できることを示しています。それは大丈夫ですか?それは最適ですか?

alvas@server:~$ lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                96
On-line CPU(s) list:   0-95
Thread(s) per core:    2
Core(s) per socket:    12
Socket(s):             4
NUMA node(s):          4
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 62
Model name:            Intel(R) Xeon(R) CPU E5-4657L v2 @ 2.40GHz
Stepping:              4
CPU MHz:               2700.000
CPU max MHz:           2900.0000
CPU min MHz:           1200.0000
BogoMIPS:              4801.91
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              30720K
NUMA node0 CPU(s):     0,4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92
NUMA node1 CPU(s):     1,5,9,13,17,21,25,29,33,37,41,45,49,53,57,61,65,69,73,77,81,85,89,93
NUMA node2 CPU(s):     2,6,10,14,18,22,26,30,34,38,42,46,50,54,58,62,66,70,74,78,82,86,90,94
NUMA node3 CPU(s):     3,7,11,15,19,23,27,31,35,39,43,47,51,55,59,63,67,71,75,79,83,87,91,95

コア/スレッドの私の知識を許してください。

回答:


52

これはあなたが知りたいことです

Thread(s) per core:    2
Core(s) per socket:    12
Socket(s):             4

4つのCPUソケットがあり、各CPUは最大12個のコアを持つことができ、各コアは2つのスレッドを持つことができます。

最大スレッド数は、4 CPU x 12コアxコアあたり2スレッドなので、12 x 4 x 2は96です。したがって、最大スレッド数は96、最大コア数は48です。

何が良いですか?

それはあなたが何をしたいかによって異なりますが、スレッドが多いほど頻度は少なくなります(つまり、3ghzは2つに分割されます)が、マルチタスク(スレッドが増える)が向上し、CPU使用率の高いタスクにはフルコア(ハイパースレッディングなし)が適しています(すなわちゲーム)。

これがお役に立てば幸いです。


3
「スレッドが多いほど頻度は少ない」ということは、この文は非常に間違っています。ハイパースレッディングを使用しても、単一の孤立したプロセスでプロセッサを完全に使用できます。ハイパースレッディングは、命令パイプラインとレジスタを利用して、通常はアイドル状態になり、異なるプロセス/スレッドからいくつかの実行を並列に実行し、特定の場合にプロセッサの最大スループットを向上させることができます。パフォーマンスの向上は、非常にアプリケーション/構成です。P4以降、HTを有効にした場合の文書化されたパフォーマンスペナルティはありません(P4世代のコアには特定のケースでいくつかの問題がありました)
-NGRhodes

2
私はこの声明を非常に間違っているとは思わない。1つのコアで2つのプロセスを実行する場合、各プロセスを独自のコアで実行する場合と比較すると、各プロセスで使用できる頻度は少なくなります。これは非常に基本的で単純な文ですが、OPはハイパースレッディングまたはその動作についての詳細を要求しませんでした。あなたは正しいですが、ハイパースレッディングは長い道のりを歩んできました。48コアでは、オフにしたくないと確信しています。
マークカービー

2
@NGRhodes:Intel HTは、2つのスレッド間で順不同の実行をオーバーラップするのに十分な粒度です。これは基本的にHTのポイントであり、より命令レベルの並列性をアウトオブオーダーコアに公開します。(つまり、1つのスレッドが分岐予測ミスから回復している間、またはキャッシュミスで待機している間でも、それらの実行ユニットにフィードを保持します。)コードがボトルネックになると、HTはスループットをほぼ2倍にするか、余分なスループットをほとんど与えない可能性があります。(x264ビデオエンコーディングの15%のように。)
ピーターコーデス

1
参照agner.org/optimizeのマイクロアーキテクチャの詳細については。
ピーターコーデス

1

各cpuコアスレッド(ハードウェアベースのスレッド)-96コアの1つは、ほとんどの場合、理論的には16スレッド(ソフトウェアベースのスレッドfe C ++ thread.h)を効率的に処理できます。


1
「16スレッドを効率的に処理できる」とはどこで得たのですか?出力には、「コアあたりのスレッド:2」と表示されます
コミットさ

0

マシンでプロセスの数を返すhtopまたはpsコマンドを実行すると、マシンで実行できるスレッドの数がわかります。

「ps」コマンドに関するmanページを使用できます。

man ps

すべてのユーザープロセスの数を計算する場合は、次のコマンドのいずれかを使用できます。

  1. ps -aux| wc -l
  2. ps -eLf | wc -l

ユーザープロセスの数の計算:

  1. ps --User root | wc -l

また、「htop」を使用できます[参照]

UbuntuまたはDebianへのインストール:

sudo apt-get install htop

RedhatまたはCentOSへのインストール:

yum install htop
dnf install htop      [On Fedora 22+ releases]

ソースコードからhtopをコンパイルする場合は、こちらを参照しください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.