Pergunta

Estou tentando descobrir como um sistema operacional (Windows, Linux) atribui números às CPUs lógicas em um ambiente habilitado para rosqueamento hiper. ?

Ambos o OSS primeiro atribui números em série às CPUs físicas e depois começa a numerar as CPUs lógicas ou há alguma outra regra seguida ..? Por exemplo, em 2 sistema físico de CPU com hiper rosqueamento, um sistema operacional atribui o número 0,2 à primeira CPU física e depois 1,3 ao segundo CPU físico ..?

Quaisquer referências seriam realmente apreciadas.

Desde já, obrigado.

Atenciosamente, -jay.

Editar: Respondendo à pergunta de Alan: preciso saber disso porque, no meu trabalho, preciso vincular vários tópicos a CPUs específicas para evitar interruptores de contexto e quero garantir que determinadas tarefas (threads) estejam vinculadas a separado CPUs físicas. Obrigado

Foi útil?

Solução

Pelo que sei, depende de como a CPU expõe seus núcleos. Quando o HT está ativado, não há CPUs físicas expostas, mas duas CPUs lógicas por CPU física, portanto, não há diferença se você executar um thread em qualquer uma da CPU lógica. A única coisa que importa é o que pares de CPUs lógicas pertencem a cada CPU física.

Com processadores de núcleo único (como o Pentium 4 com HT), é bastante direto, já que você tem apenas um par - então é (0, 1). Com os processadores quad core (como o Nehalem), os pares de núcleos lógicos são (0,4), (1,5), (2,6) e (3,7). O padrão de ter todas as primeiras metades de cada par e depois ter todas as segundas metades Shuold escala com futuras CPUs que possuem ainda mais núcleos.

A verdadeira questão é por que você precisa conhecer o arranjo do par? Deixe o agendador do sistema operacional escolher os núcleos certos para os threads certos - ele faz um trabalho bastante decente.

Outras dicas

Você pode olhar /sys/devices/system/cpu/ Para encontrar as informações sobre as CPUs. O layout dos núcleos e seus pares hiperthreados podem ser encontrados em /sys/devices/system/cpu/cpuN/topology/thread_siblings_list.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top