1 votes

désactiver l'hyperthreading sur un PC Dell multi-core

J'ai un ordinateur de bureau Dell qui fonctionne sous Windows 7 Professional. Je pense que le processeur est un Intel Core i7-2600

Récemment, un expert en informatique spécialisé dans les clusters Linux a examiné mon PC de bureau et a remarqué que ma machine avait 8 threads. Il a dit que cela signifiait que la machine avait 4 cœurs : 2 threads par cœur. Je ne savais pas que ma machine avait plus d'un cœur.

Maintenant que je sais que la machine a apparemment quatre cœurs, j'espère pouvoir faire tourner trois modèles simultanément, un modèle sur chacun des trois cœurs.

Quelqu'un m'a suggéré de "désactiver l'hyperthreading" afin de "pouvoir utiliser la totalité du cœur par modèle". Sinon, il a écrit "il fonctionne à la moitié de sa vitesse".

J'exécute de nombreux modèles à l'aide du programme R et l'informaticien qui m'aidait m'a fait remarquer qu'un de mes fichiers R script affichait un message indiquant qu'il utilisait 7 des 8 threads. Donc, étant donné que le fichier R utilisait 2 threads par cœur avec trois des cœurs, peut-être que désactiver l'hyperthreading n'augmenterait pas la vitesse de calcul dans mon cas ?

Si désactiver l'hyperthreading permettait d'augmenter la vitesse de calcul des scripts de R, comment pourrais-je faire ?

J'ai fait quelques recherches sur Internet et j'ai trouvé une discussion sur le sujet sur ce forum :

http://answers.microsoft.com/en-us/Windows/forum/windows_7-performance/disable-hyperthreading-when-Windows-7-already/80dd6c15-76b7-4534-b691-3e3a37ffad75

Un commentaire de ce forum qui me préoccupe est l'affirmation selon laquelle :

"Le plus gros problème pour ceux qui veulent arrêter la HT, c'est que de nombreux fabricants d'ordinateurs (HP, Dell) ne permettent pas aux acheteurs de leurs ordinateurs de désactiver la HT dans le BIOS. Et comme Windows se base sur le paramètre HT du BIOS pour déterminer s'il doit gérer la HT, c'est un cas de blocage en petite vitesse, sans possibilité de passer à la vitesse supérieure."

Comme mon ordinateur est un Dell, je ne suis peut-être pas en mesure de désactiver l'hyper-threading.

J'ai également trouvé ce post sur Superuser :

Désactiver l'Hyperthreading dans le registre de Windows 7

Une réponse semblait particulièrement utile, mais complexe, traitant des hexadécimaux, et l'ordinateur en question était un HP. Je ne sais pas si cela a de l'importance.

Il semble qu'il y ait plusieurs autres messages ici sur les hyperthreads, mais parmi ceux que j'ai lus, celui qui figure juste au-dessus est celui qui se rapproche le plus de ma situation.

Désolé si cette question fait double emploi. Si je dois fournir des informations supplémentaires ou clarifier mes préoccupations, je le ferai volontiers.

3voto

Hennes Points 63532

Pourquoi n'y a-t-il pas d'option dans le BIOS ?

Je suppose que la raison pour laquelle Dell et ses amis n'ajoutent pas souvent une option pour désactiver cela est que c'est rarement une bonne idée. En moyenne, cela rendra votre ordinateur plus lent (ou, d'un autre point de vue, cela rendra les ordinateurs des concurrents relativement plus rapides).

Cela dit, examinons quelques exemples imaginaires :

Que fait HT ?

1 cœur, pas d'hyperthreading

  • 1 CPU lié processus est en cours d'exécution, et peut fonctionner et la vitesse maximale. Appelons cette vitesse 1, ou 100%.
  • 2 processus liés au CPU en cours d'exécution. Le CPU devra basculer entre les deux. La vitesse effective sur les deux processus est approximativement divisée par deux. (La somme des deux vitesses est toujours égale à celle du premier exemple).
  • 3 processus liés au CPU en cours d'exécution. Le CPU devra basculer entre les trois. La vitesse effective sur les deux processus est d'environ un tiers. (La somme des deux vitesses est toujours la même ( 3 x 0,33 = 1 ).

2 cœurs, pas d'hyperthreading

  • 1 processus lié au CPU *0 est en cours d'exécution, et peut fonctionner et la vitesse maximale pour ce noyau. (vitesse 100%) (L'autre noyau est inactif).
  • 2 processus liés au CPU en cours d'exécution. Tous deux peuvent fonctionner à la vitesse maximale de leur cœur. (vitesse 200%)
  • 3 processus liés au CPU en cours d'exécution. En général, vous obtenez 3 tâches fonctionnant à environ 2/3 de leur efficacité. (La somme des vitesses est toujours égale à "2". Environ 2 parce que vous perdez un peu en raison de l'overhead supplémentaire et des manques de cache). (vitesse de 200%, ou peut-être 190%)

Maintenant des cœurs avec hyper-threading . Ils agissent comme deux cœurs, mais pas comme deux cœurs complets. La définition qu'Intel donne de l'hyper-threading a un peu changé au fil du temps, mais elle se résume généralement à ceci. Un processeur extrait des données de la mémoire et effectue des calculs. S'il n'a pas besoin du bus mémoire, une deuxième partie du CPU peut effectuer un travail limité. Comme tout le matériel n'est pas dupliqué, vous n'obtenez pas deux cœurs complets. Cependant, avec un matériel supplémentaire limité (10 % ?), vous gagnez en moyenne 30 % de vitesse. *1

1 cœur, avec - 1 CPU lié processus est en cours d'exécution, et peut fonctionner et la vitesse maximale. (100%) - 2 processus liés au CPU en cours d'exécution. Le CPU devra basculer entre les deux. Cependant, il dispose de matériel supplémentaire. La vitesse nette sera environ 30 % plus rapide (disons 133 % pour un seul cœur).

Etc.

Voilà pour l'introduction à HT.

Ces % fictifs sont-ils réels ?

Non. Tout d'abord, vous perdrez en efficacité en raison de la surcharge. (10 tâches sur une unité centrale ne fonctionneront pas plus lentement qu'une seule tâche sans changement de contexte et avec tout le cache pour ses données).

Ensuite, j'ai totalement ignoré le turbo boost, car cela compliquerait l'explication.

Qu'est-ce que mon ami a bien pu vouloir dire ?

Considérons votre unité centrale à 4 noyaux et 8 bandes de roulement comme ceci :
Core 1, CPU 1 (réel)
Core 1, CPU 2 (avec HT)
Core 2, CPU 3 (réel)
Core 2, CPU 4 (avec HT)
Core 3, CPU 5 (réel)
Core 3, CPU 6 (avec HT)
Core 4, CPU 7 (réel)
Core 4, CPU 8 (avec HT)

Si je lance deux tâches, je ne veux pas qu'elles soient toutes deux exécutées sur le CPU1 et le CPU2 (puisqu'elles partagent un cœur réel) et le résultat net est proche de la moitié de la vitesse possible. C'est peut-être ce que votre ami voulait dire.

Bien que cela soit vrai, je pense que vous n'avez pas à vous inquiéter. Le planificateur de Windows est suffisamment intelligent pour allouer les processus d'abord aux CPUs 1,3,5,7 et seulement ensuite aux 2,4,6,8.


*0 Un processus lié au CPU est un processus qui est limité par le CPU. Si un processus est en attente de diskIO et que le CPU est inactif, vous obtenez des résultats totalement différents.

*1 Veuillez prendre ces chiffres avec un grain de sel. Ils ne sont pas précis. Ils varient selon la génération de l'unité centrale et même selon le modèle de l'unité centrale. Ils varient en fonction du programme. Et ce qu'Intel appelle hyper-threading a changé depuis les premières générations de CPU. Cependant, ils donnent une idée approximative.

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