A fixação da CPU garante que uma VM obterá apenas o tempo de CPU de uma CPU específica ou conjunto de CPUs. A menos que você tenha um motivo muito específico para fixar, geralmente não há necessidade de fazer isso.
Estou pensando em configurar um hipervisor KVM para ter algumas máquinas virtuais.
O hipervisor KVM possui 8 núcleos físicos (16 com HyperThreading). Eu quero criar 8 máquinas virtuais, mas não consigo entender a diferença que o cpu-pinning tem sobre ele.
Qual será a diferença quando fixar cada VM em um núcleo diferente, quando fixar todas as VMs em todos os núcleos (definindo a afinidade como 0-15)?
Terá algum benefício no desempenho?
Eu acho que terei alguns benefícios de cache, mas haverá uma diferença se eu quiser executar o tráfego para todas as VMs?
Tenho certeza de que você pode ter um ganho de desempenho se fixar cada VM em núcleos de CPU específicos, além de restringir o hipervisor a um ou dois outros núcleos.
Isso permitiria que suas VMs se beneficiassem dos caches L1 e L2 que são específicos da CPU e não serão incomodados por interrupções de controladores de armazenamento e NICs.
Por outro lado, espero que o hipervisor já se esforce para direcionar principalmente eventos de CPU da mesma CPU virtual para o mesmo núcleo físico e duvido que seria um ganho significativo de desempenho se você manualmente forçar algo mais rigoroso.
As desvantagens disso também são bastante óbvias: quando você atribui mais núcleos aos convidados virtuais do que os núcleos físicos disponíveis, é improvável que a pinagem manual da CPU faça um trabalho melhor que o do hipervisor. Também será um inferno quando você usar migrações ao vivo.