libvirt cpu-mode = 'host-model' confunde enquanto mapeia modelos de cpu?

1

Eu tenho um host físico que tem o modelo de CPU 'CPU Intel (R) Xeon (R) E5-2670 v3 @ 2.30GHz' e tem o sinalizador 'avx2' no cpuinfo. O host tem o hipervisor kvm / qemu e libvirt configurado. Eu defino o modo cpu como modelo de host no domínio XML. Convidado vm pode ser criado no host. Quando eu verifico o modelo de cpu do convidado vm, ele mostra como 'SandyBridge' e também tem o sinalizador 'avx2' no cpuinfo. Mas 'SandyBridge' não suporta o sinalizador 'avx2', mas o modelo 'Haswell' suporta. É apenas devido ao modo de modelo de host, libvirt encontra o modelo de CPU mais próximo do CPU Intel (R) Xeon® E5-2670 v3 @ 2.30GHz 'como' SandyBridge 'mas deve mostrar' Haswell 'em vez disso. Isso significa que a libvirt tem um bug ou é uma representação válida neste cenário? Eu estou usando o libvirt versão 1.2.2

    
por Rohanil 06.01.2017 / 06:34

2 respostas

1

O que eu acho que está acontecendo aqui é que sua versão mais antiga do libvirt não está ciente do fato de que a Intel desativou TSX em chips Haswell em uma atualização de microcódigo que seu processador quase certamente já recebeu até agora. A Libvirt só tomou conhecimento e anunciou um modelo de CPU Haswell-noTSX na versão 1.2.14 . Como sua CPU possui alguns recursos desativados que o libvirt usa para detecção de tipo de CPU, ela pensa erroneamente que é um SandyBridge. Em uma versão atual do libvirt, ele deve ser detectado corretamente como Haswell-noTSX.

Na prática, isso não deve realmente afetar você, exceto que as VMs não podem usar o outro características introduzidas em Haswell e não está presente em SandyBridge, mas você pode adicione manualmente estes à sua XML de definição de VM se você não puder atualizar o libvirt e realmente desejar. Tenha em mente que você provavelmente também precisará atualizar o qemu. E nesse momento você provavelmente deve usar apenas um hipervisor mais atual. O que quer que você esteja executando agora é mais antigo que o hardware em que está sendo executado, o que é sempre uma ideia questionável ...

    
por 06.01.2017 / 10:46
0

Eu encontrei outra solução alternativa que não requer atualização do libvirt. Eu removi os sinalizadores hle e rtm da definição de Haswell no arquivo xml de mapeamento da cpu usado pelo libvirt (/usr/share/libvirt/cpu_map.xml). E então eu reiniciei o processo libvirt. Então eu reiniciei a VM e mostrei o nome correto do modelo como Haswell.

    
por 10.01.2017 / 12:55