Você pode dar uma olhada em CPU Set (cset) para criar uma CPU grupo de proteção para sua aplicação. Desta forma, você pode garantir que os núcleos reais estão sendo usados para o trabalho importante. Eu normalmente desabilito o hyperthreading (em sistemas Nehalem) para meus aplicativos em tempo real e de baixa latência.
Aqui está um tutorial para criar grupos de CPUs para aplicativos / processos específicos usando cset, que é um pouco mais organizado que o conjunto de tarefas. link
No que diz respeito à determinação da contagem de núcleos e das atribuições de localização, consulte: link
Uma execução rápida do utilitário vinculado a um Nehalem quad-core com hyperthreading ativado mostra:
[root@XXX ~/hwloc-1.0.3]# ./utils/lstopo
Machine (7980MB) + Socket #0 + L3 #0 (8192KB)
L2 #0 (256KB) + L1 #0 (32KB) + Core #0
PU #0 (phys=0)
PU #1 (phys=4)
L2 #1 (256KB) + L1 #1 (32KB) + Core #1
PU #2 (phys=1)
PU #3 (phys=5)
L2 #2 (256KB) + L1 #2 (32KB) + Core #2
PU #4 (phys=2)
PU #5 (phys=6)
L2 #3 (256KB) + L1 #3 (32KB) + Core #3
PU #6 (phys=3)
PU #7 (phys=7)