Question

Je construis un PC avec le nouveau processeur Intel I7 quad core. L’hyperthreading étant activé, 8 cœurs sont signalés dans le Gestionnaire des tâches.

Certains de mes collègues disent que l'hyperthreading rend le système peu fiable et suggère de le désactiver.

Est-ce que n'importe lequel d'entre vous, braves gens, peut m'éclairer, ainsi que le reste des utilisateurs de Stockoverflow?

  

Suivez: J'utilise l’hyperthreading depuis toujours, et c’est parfait. Aucune instabilité que ce soit. J'utilise:

  • Microsoft Server 2008 64 bits
  • Microsoft SQL Server 2008 64 bits
  • Microsoft Visual Studio 2008
  • Diskeeper Server
  • Nombreux contrôles (Telerik, Dundas, Rebex, Resharper)
Était-ce utile?

La solution

La stabilité n’est pas susceptible d’être affectée, car le niveau d’abstraction est très bas et le système d’exploitation le voit simplement comme un autre processeur sur lequel travailler. Cependant, la performance est une autre affaire.

En toute honnêteté, je ne saurais dire si tel est toujours le cas, mais au moins lorsque les processeurs compatibles HT ont été détectés, des problèmes ont été identifiés avec au moins certaines applications. Par exemple, MySQL et les applications multithreads telles que l'application Java que je supporte pour mon travail quotidien ont connu une baisse des performances lorsque HT a été activé. Nous avons toujours recommandé de le supprimer, du moins pour notre cas d'utilisation particulier d'une application d'entreprise côté serveur.

Il est possible que cela ne soit plus un problème et, dans un environnement de bureau, cela soit moins probable dans la plupart des cas d'utilisation. La possibilité de diviser le travail sur le processeur entraînerait généralement des applications plus réactives lorsque le processeur est fortement utilisé. Toutefois, la commutation de contexte et le temps système peuvent constituer un élément de dépréciation lorsque l’application est déjà très chargée et demande beaucoup de ressources processeur, comme dans le cas d’un serveur de base de données.

Autres conseils

De mémoire, je peux penser à quelques raisons qui pourraient expliquer cela à vos collègues.

  • Plusieurs articles sur les performances SQL souffrant d’hyperthreading. Je crois que cela finit par faire trop de changements de contexte ou de fouilles en cache. ne me souviens pas exactement.

  • Au début, le passage d'un processus unique à un processus multiple ou plus probablement pour la plupart des processus hyperthreaded a mis en évidence de nombreux problèmes de threading. Conditions de course, impasses, etc., qu’ils n’avaient jamais vues auparavant. Même si c'est un problème de code, certaines personnes ont blâmé les procs.

Présentent-ils les mêmes revendications à propos de la technologie multicœur / multi-processus ou à peu près hyperthreaded?

En ce qui me concerne, je développe sur une boîte hyperthreaded depuis 4 ans maintenant, le seul problème a été une impasse de l’assurance-chômage de ma propre création.

L’hyperthreading influe principalement sur le comportement / les performances du planificateur lors de la distribution de threads vers le même processeur, par opposition à un processeur différent ...

Cela montrera dans une application mal codée qui ne gère pas les conditions de concurrence entre les threads ...

Il s’agit donc généralement d’une mauvaise conception / code .... qui trouve soudain une condition de mode d’échec

Peu fiable? J'en doute. Le seul inconvénient de l'hyperthreading auquel je puisse penser est le fait que si le système d'exploitation n'en est pas conscient , il peut programmer deux threads sur un processeur physique lorsque d'autres processeurs physiques sont inactifs, ce qui dégraderait les performances.

Il y avait un problème avec le serveur SQL et l'hyperthreading pour certaines requêtes car SQL Server possède son propre planificateur, maxdop 1 résoudrait ce problème

Quel que soit le degré d’instabilité de Windows, il est très peu probable que l’hyperthreading contribue de manière significative (sinon, cela aurait déjà fait beaucoup de bruit.)

J'ai un PC hyperthreading depuis quelques années maintenant. Pas beaucoup de cœurs, mais ça a bien fonctionné pour moi.

J'aimerais avoir des données de test pour prouver que vos collègues ont tort, mais il semble que ce ne soit que mon opinion par rapport à la leur en ce moment. ;)

Les threads d'un processeur hyperthreaded partagent le même cache et ne souffrent donc pas des problèmes de cohérence de cache qu'une architecture à plusieurs processeurs peut entraîner. Cependant, si le développeur d’un logiciel programme avec plusieurs processeurs à l’esprit, il écrit (ou devrait) écrire avec une sémantique en lecture (iirc, c’est le terme choisi). c'est-à-dire que toutes les écritures sont immédiatement vidées du cache.

Pour autant que je sache, du point de vue du système d'exploitation, l'hyperthreading n'est pas différent du fait d'avoir plusieurs cœurs. Du point de vue du système d'exploitation, il n'y a pas de différence - c'est isolé.

Donc, mis à part le fait que les "noyaux supplémentaires" de l'hyperthreading ne sont pas " réels " (au sens strictement technique) et n’ont pas la pleine performance de " real " Cœurs de processeur, je ne peux pas voir que ce serait moins fiable. Plus lent, peut-être, dans de rares cas, mais pas moins fiable.

Bien sûr, cela dépend de ce que vous exécutez - je suppose que certaines applications peuvent être "& down; down & amp; sale " avec le processeur et l'hyperthreading peut les confondre, mais c'est probablement assez rare.

Je fais moi-même fonctionner sur un PC avec hyperthreading depuis plusieurs années et je n’ai constaté aucun problème de stabilité.

Désolé, je n'ai pas de données plus concrètes!

Je possède un système i7 et je n’ai eu aucun problème.

Si cela fonctionne avec plusieurs cœurs, cela fonctionne avec l'hyperthreading.

La réponse courte: oui.

La réponse longue, comme pour presque toutes les questions, est "ça dépend". Dépend du système d’exploitation, du logiciel, de la version du processeur, etc. J’ai personnellement dû désactiver l’hyperthreading à deux reprises pour que le logiciel fonctionne correctement (un avec l’application Synergy et deux avec le programme d’installation de Windows NT 4.0), mais votre le kilométrage peut varier.

Tant que Windows est installé et détecte plusieurs cœurs HT depuis le début (il charge certains pilotes pertinents, par exemple), vous pouvez toujours désactiver (et réactiver) HT "après le fait". Si vous rencontrez des problèmes de stabilité avec des logiciels spécifiques que vous ne pouvez pas résoudre, il n’est pas difficile de désactiver HT pour voir s’il a un impact.

Je ne le désactiverais pas pour commencer parce que, franchement, cela fonctionnera probablement bien dans 99,99% de votre utilisation quotidienne. Toutefois, sachez que cela peut parfois provoquer des comportements bizarres. Ne l'excluez donc pas si vous résolvez des problèmes très étranges.

Personnellement, j’ai constaté que l’hyperthreading, bien que ne causant aucun problème, n’aide pas beaucoup non plus. Ce pourrait être comme avoir un .1 supplémentaire d'un processeur. Sur mon ordinateur HT au travail, je ne vois que très rarement mon processeur dépasser les 50%. Je ne sais pas si HT s’est amélioré avec les nouveaux processeurs comme le i7, mais je ne suis pas optimiste.

À part quelques rapports sur SQL Server, tout ce que je peux dire est positif. J'obtiens une performance environ 25% supérieure sur les applications multithread lourdes avec HT. Je n’ai jamais eu de problème avec cela, et j’utilise un processeur HT de première génération ...

En retard à la fête, mais pour référence future;

Je rencontre actuellement un problème avec SQLServer. Fondamentalement, ma compréhension est que l'hyperthreading sur le même processeur partage le même L1 & amp; Cache L2, ce qui peut causer des problèmes entre les deux. Citrix semble également avoir ce problème de ce que je lis.

Slava Ok a écrit un bon article de blog . dessus.

Je suis ici très en retard, mais j'ai trouvé cette page via Google. J'ai peut-être découvert un problème très subtil. J'ai un serveur 2003 sous i7 950 et c'est génial. Au départ, j’ai laissé l’hyperthreading dans le BIOS, mais lors de certains tests et poussées à fond, j’ai exécuté un programme appelé "crashme". par Carrette. Ce programme tente de planter un système d’exploitation en créant un processus et en l’alimentant à la poubelle. Ma configuration double Opteron a fonctionné pour toujours sans problème, mais le 950 est tombé en panne en une heure. Il ne s'est pas écrasé pour autre chose à moins que je ne fasse quelque chose de stupide, donc c'était très surprenant. Sur un coup de tête, j'ai désactivé HT et exécuté le programme à nouveau. Il fonctionne toute la nuit, même plusieurs fois. Une anecdote ne veut pas dire grand chose, mais essayez-la et voyez ce qui se passe. En outre, il semble que le processeur soit légèrement plus froid à une charge donnée si HT est désactivé. YMMV.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top