57 votes

Cœurs et threads : Combien de threads dois-je faire tourner sur cette machine ?

Combien de threads dois-je faire tourner sur cette machine ?

Mon lscpu dit qu'il y a 96 cœurs. Ce sont des cœurs physiques ? Quel est le thread maximum et optimal que je peux faire tourner sur cette machine ?

https://stackoverflow.com/a/10670440/610569 montrent que je peux faire tourner plus de 20 threads par cœur. Est-ce correct ? 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 mon manque d'expérience en matière de noyaux/threads.

73voto

Mark Kirby Points 17611

Voici ce que vous voulez savoir

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

Vous disposez de 4 sockets CPU, chaque CPU peut avoir jusqu'à 12 cœurs et chaque cœur peut avoir deux threads.

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

Qu'est-ce qui est le mieux ?

Cela dépend de ce que vous voulez faire, plus de threads signifie moins de fréquence (c'est-à-dire qu'un 3ghz est divisé en deux) mais un meilleur multi-tâches (plus de threads) et l'utilisation de tous les cœurs (pas d'hyper-threading) sont meilleurs pour les tâches à forte utilisation du CPU (c'est-à-dire les jeux).

J'espère que cela vous aidera.

2voto

Qinsi Points 567

Votre machine :

4 Sockets x 12 Cores/socket x 2 Threads/core, soit 96 threads et 48 cœurs

Idéalement sans E/S, synchronisation, etc., et si rien d'autre n'est en cours d'exécution, utilisez 48 threads de tâche.

De manière réaliste L'utilisation d'environ 95 threads peut être préférable pour exploiter le maximum de votre machine.

Parce que :

un cœur attend parfois des données ou des entrées/sorties, de sorte que le fil 2 pourrait fonctionner pendant que thread 1 ne fonctionne pas.

Enfin, vous devez effectuer des tests pour obtenir le meilleur chiffre en fonction de vos tâches spécifiques.

1voto

Piotr Lenarczyk Points 11

Chaque thread de cœur de processeur (thread matériel) - un de vos 96 cœurs peut efficacement gérer 16 threads (thread logiciel, par exemple C++ thread.h) dans la plupart des cas, selon mon opinion théorique.

0voto

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

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

man ps

Si vous voulez calculer le nombre de processus de tous les utilisateurs, vous pouvez utiliser une de ces commandes :

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

Calcul du numéro d'un processus utilisateur :

  1. ps --User root | wc -l

Aussi, 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 à l'adresse suivante aquí .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X