É possível dizer quais processadores são hyperthreads do mesmo núcleo?

5

Eu tenho um servidor que é um quad-core i-7 com hyperthreading ativado. O kernel reconhece isso como 8 cpus, como deveria. Eu quero criar alguns hosts virtuais em execução nesta máquina. O virt-manager me permite selecionar quais processadores são usados em qual máquina. Eu quero configurar isso para que eu atribua ambos os cpus em um par de hyperthreaded para a mesma máquina virtual. Desta forma, uma máquina sob carga pesada não afetará outra máquina virtual compartilhando um único núcleo devido ao hyperthreading. Mas eu quero hyperthreading disponível para cada VM porque estou executando tarefas que envolvem paralelização pesada.

Então, como posso saber quais processadores o kernel reconhece são um par? Eu suspeitaria que a cpu 0 e a cpu 1 fizessem um par, depois a cpu 2 e a cpu 3, e assim por diante, mas não tenho certeza de como testar / confirmar.

    
por Exodist 28.01.2011 / 03:27

2 respostas

4

Este link descreve como combinar identificação física, identificação de núcleo e contagem de irmãos para identificar quais entradas em / proc / cpuinfo estão no mesmo núcleo, mas não posso fazer nenhuma reivindicação quanto à sua precisão. Ele também é semelhante a esta pergunta .

    
por 28.01.2011 / 03:53
3
cat /sys/devices/system/cpu/cpu0/topology/thread_siblings_list

imprime uma lista separada por vírgulas de núcleos irmãos para uma CPU / núcleo física específica. Eu usei cpu0 (primeiro núcleo) como exemplo.

A mesma informação pode ser extraída dos campos "core id" em / proc / cpuinfo (obrigado user61849).

    
por 25.11.2012 / 07:47