web-dev-qa-db-fra.com

Cores vs Threads: Combien de threads dois-je exécuter sur cette machine?

Combien de threads dois-je exécuter sur cette machine?

Mon lscpu indique qu'il y a 96 cœurs. S'agit-il de cœurs physiques? Quel est le thread maximum et optimal que je peux exécuter sur cette machine?

https://stackoverflow.com/a/10670440/610569 montre que je peux exécuter plus de 20 threads par cœur. Est-ce OK? Est-ce optimal?

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

Pardonnez ma noblesse dans les noyaux/fils.

33
alvas

C'est ce que tu veux savoir

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

Vous avez 4 sockets de processeur, chaque processeur peut avoir jusqu'à 12 cœurs et chaque noyau peut avoir deux threads.

Votre nombre maximal de threads est de 4 CPU x 12 cœurs x 2 threads par cœur, ainsi 12 x 4 x 2 est égal à 96. Par conséquent, le nombre maximal de threads est de 96 et le nombre maximal de noyaux est de 48.

Qu'est-ce qui est mieux ?

Cela dépend de ce que vous voulez faire. Plus de threads signifie moins de fréquence (un 3 GHz est alors divisé en deux) mais un meilleur mode multitâche (plus de threads) et l'utilisation de cœurs complets (sans hyper-threading) sont préférables pour les tâches nécessitant une utilisation intensive du processeur ( c'est à dire des jeux).

J'espère que cela vous aide.

48
Mark Kirby

Vous trouverez le nombre de threads que vous pouvez exécuter sur votre ordinateur en exécutant la commande htop ou ps qui renvoie le nombre de processus sur votre ordinateur.

Vous pouvez utiliser la page de manuel relative à la commande 'ps'.

man ps

Si vous souhaitez calculer le nombre de processus de tous les utilisateurs, vous pouvez utiliser l'une des commandes suivantes:

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

Numéro de calcul d'un processus utilisateur:

  1. ps --User root | wc -l

En outre, vous pouvez utiliser "htop" [Référence] :

Installation sur Ubuntu ou Debian:

Sudo apt-get install htop

Installation sur Redhat ou CentOS:

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

Si vous voulez compiler htop à partir du code source, vous le trouverez ici .

0

Chaque thread de base du processeur (thread basé sur le matériel) - l'un de vos 96 cœurs peut gérer efficacement 16 threads (thread basé sur le logiciel pour C++ thread.h) dans la plupart des cas, à mon avis théorique.

0
Piotr Lenarczyk