Por que usar o Hyper-threading pode levar à degradação do desempenho


10

Eu li em vários lugares como este , que o Hyper-threading leva à degradação do desempenho.

Não consigo entender por que ou como o hiperencadeamento leva à degradação.

Por que é assim que, mesmo quando o Hyper-threading permite que o sistema operacional utilize recursos gratuitos, a degradação acontece.

Embora os benchmarks indiquem hiper-threading como o culpado, mas alguém pode me explicar a razão disso?

obrigado

Respostas:


8

Parece que a resposta, como sempre, tem algo a ver com caches. Como os hiperencadeamentos utilizam os mesmos caches L1 e L2, um hiperconjunto pode descartar os caches de outros. Na pior das hipóteses, os encadeamentos se revezam na lixeira do cache do outro e o desempenho diminui, pois os caches são preenchidos novamente para serem lixeira novamente.

Obviamente, isso provavelmente é muito específico da carga de trabalho, o que explicaria por que o problema é visto principalmente nos servidores.

Também é importante notar que a resposta depende em parte do que você quer dizer com "desempenho". Por exemplo, em sistemas em tempo real, sua métrica de desempenho é previsibilidade em vez de taxa de transferência, o que afeta o hiperencadeamento com a introdução de paradas imprevisíveis.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.