Esquema de numeração para afinidade de CPU

1

No VMware Infrastructure Client (sem vCenter), na seção Resources / Advanced CPU do diálogo Editar configurações de uma VM, há uma opção para alterar a Afinidade de agendamento de uma VM. Define o valor sched.cpu.affinity no arquivo VMX.

Acredito que isso me permite forçar uma VM a ser atendida somente por uma CPU física específica no host, o uso criterioso do qual pode em alguns casos me permite licenciar uma VM para uma CPU física em vez dos dois que estão no host.

A descrição do campo de configuração em Editar configurações é a seguinte:

Hyperthreading Status: Active

Available CPUs: 12 (logical CPUs)

     

Selecione a afinidade do processador lógico para essa máquina virtual.

     

Use '-' para intervalos e ',' para separar valores. Por exemplo, "0,2-4,7" indicaria os processadores 0, 2, 3, 4 e 7.

É justo assumir (neste e casos semelhantes):

  • os números de 0 a 11 representam cada um dos núcleos físicos (ou os 'hyperthreads' também são numerados)?
  • se eu quiser limitar a VM a ser executada em uma das CPUs físicas, devo inserir 0-5 ou 6-11 (ou esses números estão em um padrão diferente)?

Caso contrário, existe uma fonte confiável (tela VIC, comando shell, etc.) para procurar o mapeamento de número para CPU em qualquer host específico?

(Para referência, as CPUs são unidades Intel Xeon X5675, cada uma com 6 núcleos com hyperthreading.)

    
por jimbobmcgee 24.12.2014 / 16:55

2 respostas

1

Seu software provavelmente está licenciado por soquete da CPU (visível). Se você configurar sua máquina virtual de destino com o soquete e a contagem de núcleos apropriados, não importa realmente onde o ESXi decide agendar threads no hardware subjacente. Seu software deve se preocupar apenas com o que é visível para a máquina virtual. Nesse caso, uma VM de 4 soquetes e 4 núcleos deve atender ao requisito.

Consulte: desempenho da vCPU entre 1 ou 2 vCPUs

Assim como o conjunto de tarefas e o agendamento da CPU no Linux, você não Deseja percorrer o caminho das afinidades e pinagem da CPU, a menos que você tenha uma razão convincente.

Editar:

A numeração é igual a taskset . Para uma CPU Westmere 6-core, você verá núcleos físicos e Hyperthreaded de acordo com esta programação:

  NUMANode L#0 (P#0 32GB) + Socket L#0 + L3 L#0 (12MB)
    L2 L#0 (256KB) + L1d L#0 (32KB) + L1i L#0 (32KB) + Core L#0
      PU L#0 (P#0)
      PU L#1 (P#12)
    L2 L#1 (256KB) + L1d L#1 (32KB) + L1i L#1 (32KB) + Core L#1
      PU L#2 (P#2)
      PU L#3 (P#14)
    L2 L#2 (256KB) + L1d L#2 (32KB) + L1i L#2 (32KB) + Core L#2
      PU L#4 (P#4)
      PU L#5 (P#16)
    L2 L#3 (256KB) + L1d L#3 (32KB) + L1i L#3 (32KB) + Core L#3
      PU L#6 (P#6)
      PU L#7 (P#18)
    L2 L#4 (256KB) + L1d L#4 (32KB) + L1i L#4 (32KB) + Core L#4
      PU L#8 (P#8)
      PU L#9 (P#20)
    L2 L#5 (256KB) + L1d L#5 (32KB) + L1i L#5 (32KB) + Core L#5
      PU L#10 (P#10)
      PU L#11 (P#22)
  NUMANode L#1 (P#1 32GB) + Socket L#1 + L3 L#1 (12MB)
    L2 L#6 (256KB) + L1d L#6 (32KB) + L1i L#6 (32KB) + Core L#6
      PU L#12 (P#1)
      PU L#13 (P#13)
    L2 L#7 (256KB) + L1d L#7 (32KB) + L1i L#7 (32KB) + Core L#7
      PU L#14 (P#3)
      PU L#15 (P#15)
    L2 L#8 (256KB) + L1d L#8 (32KB) + L1i L#8 (32KB) + Core L#8
      PU L#16 (P#5)
      PU L#17 (P#17)
    L2 L#9 (256KB) + L1d L#9 (32KB) + L1i L#9 (32KB) + Core L#9
      PU L#18 (P#7)
      PU L#19 (P#19)
    L2 L#10 (256KB) + L1d L#10 (32KB) + L1i L#10 (32KB) + Core L#10
      PU L#20 (P#9)
      PU L#21 (P#21)
    L2 L#11 (256KB) + L1d L#11 (32KB) + L1i L#11 (32KB) + Core L#11
      PU L#22 (P#11)
      PU L#23 (P#23)
    
por 24.12.2014 / 17:32
1

Is it fair to assume (in this and similar cases):

  • numbers 0 to 11 represent each of the physical cores (or are the 'hyperthreads' numbered too)?

Sim e sim HT estão incluídos

  • if I wanted to limit the VM to run on one of the physical CPUs, I should enter either 0-5 or 6-11 (or are these numbers in some different pattern)?

Sim, você conseguiu em um!

    
por 24.12.2014 / 17:07