web-dev-qa-db-fra.com

Debian ne montre pas tous les cœurs?

J'ai récemment acheté un i5-9600K . Qui est censé exécuter 6 cœurs et 6 threads (hyperthreading), quand je jette un œil à /proc/cpuinfo l'indicateur ht est activé et la vérification d'un outil comme htopaffiche uniquement 6 cœurs, comme vous pouvez le voir dans l'image ci-dessous.

J'ai utilisé d'autres processeurs Intel et AMD, et généralement lorsque le produit indique 6 cores/6 threads le montant total est 12, mais dans ce cas, je vois juste 6.

Ai-je tort ou quel pourrait être le problème?

Je vous remercie!

enter image description here

7
wiitohzjeh

Si vous faites défiler vers le bas sur la page Ark de votre CP , vous verrez que cela dit

Technologie Intel® Hyper-Threading ‡ Non

Votre processeur possède six cœurs, mais il ne prend pas en charge l'hyper-threading, donc votre affichage htop est correct.

Les spécifications du processeur sur Ark affichent le nombre total de threads, aucun ajout ni multiplication n'est impliqué; voir par exemple le Xeon E3-1245v pour un CPU capable d'hyper-threading (quatre cœurs, deux threads par coeur, pour huit threads au total).

Le moniker ht donné à l'indicateur CPUID sous-jacent est quelque peu trompeur: dans manuel d'Intel (volume 3A, section 8.6), il est décrit comme "indique quand il est défini que le package physique est capable de prenant en charge la technologie Intel Hyper-Threading et/ou plusieurs cœurs ". Ainsi, sa présence indique que le CPU prend en charge les hyper-threads (même s'ils sont désactivés), ou contient plusieurs cœurs dans le même package, ou les deux. Pour déterminer ce qui est réellement présent, vous devez énumérer les processeurs du système, à l'aide des informations fournies par le micrologiciel, et utiliser les informations fournies pour déterminer s'il existe plusieurs cœurs logiques, sur le nombre de cœurs physiques, sur le nombre de sockets, etc. Selon le CPU, un "CPU" affiché dans htop (et d'autres outils) peut être un thread (sur un système hyper-threading), un noyau physique (sur un système non-hyper-threading), ou même un package complet (sur un système monocœur non hyper-threading).

Le noyau Linux fait toute cette détection pour vous, et vous pouvez voir le résultat en utilisant par exemple lscpu.

Au moins, votre CPU n'est affecté par aucune des vulnérabilités liées à l'hyperthreading!

23
Stephen Kitt

Dans ce contexte, "threads" est synonyme de "cœurs logiques", c'est-à-dire quantité totale de cœurs logiques, quel que soit le nombre de cœurs physiques qui les implémentent. Pas de fils supplémentaires.

Votre CPU a 6 cœurs logiques, donc le démarrage de Linux dessus "voit" 6 CPU.

Votre CPU a 6 cœurs physiques, donc chaque cœur logique a un cœur physique entier à lui-même, plutôt que d'avoir une paire de cœurs logiques partageant un cœur physique avec Intel SMT =, qu'ils appellent Hyperthreading.

J'ai utilisé d'autres processeurs Intel et AMD, et généralement lorsque le produit indique 6 cœurs/6 threads, le montant total est de 12

[citation requise]. Une terminologie comme 2c4t (2 cœurs physiques, 4 cœurs logiques) est standard depuis de nombreuses années, dans toutes les architectures, pas seulement x86.

Je n'ai jamais vu quoi que ce soit décrit comme N "vrais" cœurs + N "supplémentaires" parce que ce n'est même pas ainsi que cela fonctionne. Les deux cœurs logiques sont "symétriques", ce n'est pas comme s'il fallait démarrer spécialement. Ils agissent chacun comme des processeurs complets. (Lorsque l'un est en veille profonde inactive, l'autre peut passer en mode monofil et obtenir toutes les ressources d'exécution. Lorsque les deux sont endormis, le noyau physique peut réellement dormir)

Fait amusant: la prise en charge du système d'exploitation pour l'hyperthreading permet au système d'exploitation de savoir quels cœurs logiques partagent un cœur physique en lisant les données CPUID et/ou APIC/LAPIC. Un système d'exploitation qui n'était pas au courant de l'hyperthreading continuerait de démarrer et verrait cependant le nombre de cœurs logiques pris en charge par le processeur (HT était activé dans le BIOS), et je pense que tout fonctionnerait, sauf qu'il pourrait planifier 2 tâches sur des cœurs en concurrence avec les uns des autres pour les ressources d'exécution, tout en laissant les autres cœurs physiques inactifs.


Certains processeurs ont plus de SMT à 2 voies. par exemple. Xeon Phi dispose d'un SMT à 4 voies (4 cœurs logiques par cœur physique) pour masquer la mémoire et la latence ALU et obtenir un bon débit total sans beaucoup de ressources d'exécution hors service.

IBM POWER utilise un SMT à 8 voies sur de gros cœurs physiques.

3
Peter Cordes

Si vous regardez d'autres processeurs, par exemple i7-1071 d'Intel, cela montre que 6 cœurs et 12 threads, il semble donc que votre processeur n'a qu'un seul thread par cœur plutôt que les 2 que vous attendez.

0
icarus