configuração de afinidade para múltiplos núcleos no sistema dual cpu

0

Estamos usando alguns sistemas com 2 cpu's com 6 núcleos / 12 encadeamentos cada, para um total de 24 encadeamentos, para muitas simulações multitarefa. Como o problema não escala perfeitamente, normalmente executo 4 problemas em parralel, de 5 threads cada. ter 4 núcleos para executar os 4 threads, que estão iniciando as simulações e pré e pósprocessamento. Eu notei algumas diferenças estranhas de desempenho para simulações idênticas.

Minha idéia era que usando afinidade eu poderia talvez regular o desempenho um pouco mais, guiando o processo para não ser dividido em 2 CPUs, para que o problema não se espalhe por partes diferentes do cache e da memória, mas permaneça fixo para uma única cpu ou conjunto de núcleos na cpu.

Eu sei como definir a afinidade no gerenciador de tarefas, uma vez que o processo está em execução, mas eu gosto de configurá-lo em um arquivo de lote.

por exemplo:

start / affinity HEXNUM myprog3.exe

onde HEXNUM é por exemplo: 1F000 (a representação hexadecimal de 011111000000000000

se o objetivo era executá-lo no núcleo: 0,1,2,3,4 de cpu2

ou HEXNUM 1F a representação hexadecimal de 011111 se o objetivo for executá-lo no núcleo 0,1,2,3,4 de cpu1.

Mas como isso parece não funcionar, como eu espero: Quando inicio uma simulação em 5 threads sem especificação de afinidade, o processo leva 20-21% da cpu. quando eu começo 5 degraus, com afinidade para 6 núcleos funciona também, mas quando eu começo 5 degraus com afinidade para 5 núcleos. leva apenas 13% e se eu olhar no gerenciador de tarefas, (windows 7 64 pro) parece que ele está usando apenas o núcleo 1,3,5.

existe algum problema ao usar um número desigual de núcleos para a especificação de afinidade? ou estou fazendo algo errado?

Existem pessoas com experiência na especificação de afinidades que conseguiram ganhos de desempenho? Quais estratégias você usou?

    
por Sarmes 02.10.2014 / 13:45

0 respostas