AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / computer / Perguntas / 1879090
Accepted
user2153235
user2153235
Asked: 2025-02-14 03:36:17 +0800 CST2025-02-14 03:36:17 +0800 CST 2025-02-14 03:36:17 +0800 CST

Agendamento de threads com reconhecimento de Hyper-Threading em núcleos Hyper-Threading

  • 772

Eu estava interessado em como a conscientização sobre Hyper-Threading impacta o agendamento de threads em núcleos lógicos e físicos, por exemplo, ele colocaliza threads do mesmo processo para se beneficiar do compartilhamento de cache, ele separa threads que, de alguma forma, sabe que disputarão muito os recursos do núcleo, ele combina threads computacionalmente intensos com threads com E/S intensas, etc.

Pesquisei no Google como-o-agendador-trata-o-núcleo-lógico. Não pedi uma resposta de IA, mas os resultados do Google levaram à resposta de IA de que um agendador que não reconhece Hyper-Threading trata os núcleos lógicos da mesma forma que os núcleos físicos. Em uma CPU multi-core, se houver hipoteticamente apenas dois threads para executar, a falta de reconhecimento de Hyper-Threading pode causar o agendamento de ambos os threads no mesmo núcleo físico. Isso torna um núcleo muito ocupado e atrasa a conclusão das tarefas de thread.

No entanto, isso é apenas a IA do Google. Se for para ter alguma credibilidade, então precisa de corroboração. A resposta da IA ​​parece implicar que um agendador com conhecimento de Hyper-Threading preferiria espalhar threads em diferentes processadores físicos e apenas duplicá-los quando não houvesse mais processadores físicos. Isso é realmente verdade? Onde posso encontrar essas informações?

Há uma razão pela qual me pergunto sobre a veracidade dessa preferência do Hyper-Threading para espalhar threads em diferentes núcleos físicos. Em um computador típico, há milhares de threads esperando para serem executados . Isso é maior do que o número de processadores lógicos e físicos por muitas vezes, se não ordens de magnitude. Esta não é apenas uma resposta de IA, então parece que fora de aplicações de computação científica muito específicas, é bastante plausível que não haja vantagem em evitar duplicar threads em núcleos físicos. Isso está correto ou estou esquecendo de algo?

No final das contas, estou tentando ter uma ideia de como a conscientização do Hyper-Threading melhora o agendamento. Com base no que consegui descobrir até agora, é bem possível que não. No entanto, não sou um cientista da computação -- eu apenas tive que aprender sobre multithreading para tornar meu componente de software thread-safe, já que o aplicativo host usa hyperthreading.

PS: Estou lendo páginas sobre Hyper-Threading online há dias, então não estou perguntando sobre os conceitos básicos de multithreading, SMT, o que é Hyper-Threading, superscalar ou esse tipo de informação.

hyper-threading
  • 1 1 respostas
  • 33 Views

1 respostas

  • Voted
  1. Best Answer
    Pai-to
    2025-02-14T04:42:29+08:002025-02-14T04:42:29+08:00

    O Hyperthreading compartilha um núcleo de CPU entre dois threads. Isso significa que ambos os threads precisam compartilhar caches, recursos de núcleo e unidades de execução. Quando você está usando apenas um dos núcleos hyperthreaded, isso significa que o cache e o recurso podem ser melhor alocados para o thread que está em execução.

    Simplificando, se você tem 4 coisas para fazer e 4 núcleos hyperthreaded e, como resultado, precisa apenas de 4 núcleos, o melhor desempenho será alcançado usando os núcleos "completos" e evitando o segundo (hyper) thread em cada núcleo.

    Como esclarecimento, hyperthreading não é igual a um aumento de 100% no desempenho por núcleo. Um exemplo antigo era que hyperthreading poderia permitir um aumento extra de 30% no desempenho dependendo da tarefa. Duas tarefas em execução em um único núcleo hyperthreaded seriam equivalentes a apenas 1,3 processadores.

    Como alternativa, executar duas tarefas em dois processadores "cheios", assumindo nenhuma memória ou outras restrições, alcançaria o desempenho total de ambos os núcleos. Duas coisas estariam realmente sendo executadas simultaneamente em vez de compartilhar recursos de execução.

    Então para esclarecer:

    • 1 núcleo com Hyperthreading = aumento de desempenho de 130%
    • 2 x núcleos = 200% de desempenho

    Então você certamente preferiria ter tarefas individuais sendo executadas em núcleos "completos" sempre que possível.

    É aí que entra o agendador com reconhecimento de hyperthreading.

    Ele preferencialmente agendaria tarefas em cada núcleo e, então, somente utilizaria o recurso restante do núcleo por meio de hyperthreading quando necessário.

    Ignore "I/O" e outros recursos, entre processos cada núcleo é basicamente idêntico e tem a mesma velocidade para memória e discos rígidos. Não há benefício em "co-localizar" processos, pois no momento em que eles fazem uma solicitação de memória ou outro hardware, eles verão o mesmo limite, independentemente do núcleo em que estão.

    • 1

relate perguntas

  • Como habilitar hyper-threading e turbo-boost para este processador?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como posso reduzir o consumo do processo `vmmem`?

    • 11 respostas
  • Marko Smith

    Baixar vídeo do Microsoft Stream

    • 4 respostas
  • Marko Smith

    O Google Chrome DevTools falhou ao analisar o SourceMap: chrome-extension

    • 6 respostas
  • Marko Smith

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Martin Hope
    Vickel O Firefox não permite mais colar no WhatsApp web? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke Por que os arquivos tar.xz são 15x menores ao usar a biblioteca tar do Python em comparação com o tar do macOS? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh Como posso reduzir o consumo do processo `vmmem`? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Pesquisa do Windows 10 não está carregando, mostrando janela em branco 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve