Alguns threads simplesmente não podem ser interrompidos. O MentaAffinity é um framework em Java que te permite travar os seus threads em processadores lógicos específicos sem que eles sejam interrompidos por ninguém. Dessa maneira vc pode escolher uma estratégia para maximizar a utilização dos caches L1 e L2 além de nunca mais perder tempo com context switches e hardware interrupts.
Acho que além da api bem fácil de utilizar, a documentação simplifica bastante os conceitos separando a arquitetura em Chip, Core e Processor.
O que vc vai querer testar:
:arrow: Dois threads rodando em chips separados (só compartilham L3)
:arrow: Dois threads rodando em cores separados (só compartilham L2 e L3)
:arrow: Dois threads rodando no mesmo core (compartilham L1, L2 e L3)
A última opção necessita de suporte a hyper-threading.
Para ter certeza que está funcionando, use o comando ‘top’ do Linux e depois pressione ‘1’.
[quote]Dois threads rodando no mesmo core (compartilham L1, L2 e L3)
[/quote]
Se precisa de HT só funciona num Intel?Já testou na abordagem modular como funciona num Bulldozer?
[quote=Ironlynx][quote]Dois threads rodando no mesmo core (compartilham L1, L2 e L3)
[/quote]
Se precisa de HT só funciona num Intel?Já testou na abordagem modular como funciona num Bulldozer?[/quote]
Cada abordagem tem suas vantagens e desvantagens. Só colocando os threads para rodar que dá para ter uma idéia. Vai depender tb se os threads precisam compartilhar dados ou não.
Não precisa de HT, mas eu achava que, pelo menos no mundo Intel, um Core = um processador lógico a não ser que tenha HT, aí são dois.
[quote]
Não precisa de HT, mas eu achava que, pelo menos no mundo Intel, um Core = um processador lógico a não ser que tenha HT, aí são dois.[/quote]
Na teoria, a abordagem modular seria muito mais rápida do que a com núcleos lógicos(i.e.:se fossem consideradas mesma frequência e implementação de cache), mas bugs horrorosos principalmente no sistema de prefetch e no L3 e uma má abordagem e alta latência do L1 tornaram o Bulldozer uma piada.Mas a nova versão dele(núcleo Piledriver) já tá mostrando uns ganhos espantosos.A APU Trinity(núcleo Piledriver SEM L3), já tem mostrado um processamento de inteiros até 40% mais rápida.Coisas boas virão.Parabéns pelo projeto.
meus parabens… mesmo, não só pelo projeto mas pela quantidade de projetos que você tem anunciado… inclusive vi recentemente você anunciando aqui um outro que se não me engano também era relacionado a threads(não lembro exatamente o que), aliás faz bem pouco tempo… está de parabéns mesmo por esse trabalho…