Pourquoi l'utilisation de l'hyper-threading peut entraîner une dégradation des performances

10

Je l'ai lu à divers endroits comme celui-ci , que l'hyper-threading entraîne une dégradation des performances.

Je n'arrive pas à comprendre pourquoi ni comment l'hyper-threading conduit à la dégradation.

Pourquoi est-ce que même lorsque l'hyper-threading permet au système d'exploitation d'utiliser des ressources libres, la dégradation se produit.

Bien que les repères indiquent l'hyper-threading comme coupable, mais quelqu'un peut-il m'en expliquer la raison.

Merci

DW
la source

Réponses:

8

Il semblerait que la réponse, comme d'habitude, a quelque chose à voir avec les caches. Étant donné que les hyper-threads utilisent les mêmes caches L1 et L2, un hyper-thread peut vider les caches d'un autre. Dans le pire des cas, les threads jettent à tour de rôle le cache de l'autre et les performances se dégradent car les caches ne sont remplis qu'à nouveau.

Bien sûr, cela est probablement très spécifique à la charge de travail, ce qui expliquerait pourquoi le problème est principalement observé sur les serveurs.

Il convient également de noter que la réponse dépend en partie de ce que vous entendez par «performances». Par exemple, dans les systèmes en temps réel, votre métrique de performance est la prévisibilité au lieu du débit, ce que l'hyper-threading a un impact négatif en introduisant des décrochages imprévisibles.

superdesk
la source