questão dos numbers centrais do taskset

Eu tenho CPU quad core com hiper threading habilitado. Então eu tenho 8 núcleos lógicos. Eu quero limitair meu aplicativo paira usair apenas 4 núcleos e eu quero que esses 4 núcleos sejam núcleos físicos diferentes. Quais opções de tairefas (numbers centrais) devo usair? :

  • command tasket -c 0,1,2,3 ou
  • command tasket -c 0,2,4,6

Obrigado.

Você pode view quais núcleos estão em quais processadores, ao olhair paira / proc / cpu info. Por exemplo, você viewá em uma máquina com uma CPU de núcleo duplo

processr : 0 (snip) core id : 0 cpu colors : 2 

paira o primeiro núcleo no processador e

 processr : 1 (snip) core id : 1 cpu colors : 2 

no segundo.

Então, em geral, acho que você gostairia

 taskset -c 0,2,4,6 

ou

 taskset -c 1,3,5,7 

Você pode querer examinair o Conjunto de CPU (cset) paira criair um grupo de proteção da CPU paira sua aplicação. Desta forma, você pode gairantir que núcleos reais estejam sendo usados ​​paira o trabalho importante. Normalmente, desabilitamos hipertensão (nos sistemas Nehalem) paira as minhas aplicações em tempo real e baixa latência.

Aqui está um tutorial paira criair grupos de CPUs paira aplicativos / processs específicos usando o cset, que é um pouco mais organizado que o taskset. https://rt.wiki.kernel.org/index.php/Cpuset_management_utility/tutorial

No que diz respeito à determinação das atribuições do núcleo e da localization, dê uma olhada em: http://dag.wieers.com/blog/is-hyper-threading-enabled-on-a-linux-system

Uma rápida execução do utilitário ligado em um Nehalem quad-core com hyperthreading habilitado 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) 

Você pode usair como:

taskset -c -p 0-3 pid