pthread_attr_setaffinity_np e núcleo lógico

0

Estou um pouco confuso sobre os núcleos lógicos da CPU, os núcleos físicos e a afinidade do agendador. Vamos supor que exista uma CPU com 4 núcleos físicos, onde cada núcleo suporta 2 hyperthreads. Daí em diante, de acordo com /cpu/procinfo core lógico 0 e lógico core 8 são inerentemente o mesmo núcleo físico.

Agora, assuma dois tópicos:

Caso I: os dois encadeamentos são lançados pthread_attr_setaffinity_np com o núcleo lógico 0.

Caso II: Um encadeamento é lançado com pthread_attr_setaffinity_np com núcleo lógico 0 e outro com núcleo lógico 8

Haveria alguma diferença em ambos os casos?

    
por Tushar Goyal 10.02.2018 / 23:58

1 resposta

0

Sim, haverá uma diferença significativa. Com ambos os encadeamentos definidos para o núcleo lógico 0, os dois encadeamentos nunca serão executados ao mesmo tempo e usarão o núcleo lógico 0. Com um encadeamento para o núcleo lógico 0 e outro para o núcleo lógico 8, os dois encadeamentos podem ser executados no mesmo tempo, compartilhando os recursos nesse núcleo físico.

Imagine se um encadeamento fizer operações quase inteiramente inteiras e o outro faz quase que inteiramente operações de ponto flutuante. Se ambos estiverem ligados ao núcleo lógico 0, o núcleo físico alternará tendo suas unidades inteiras inativas e suas unidades de ponto flutuante ociosas. Com um definido como 0 e um definido como 8, um thread pode usar as unidades inteiras enquanto o outro thread está usando as unidades de ponto flutuante do núcleo físico.

    
por 11.02.2018 / 00:16