Virtualization

libvirt cpu-mode=‘host-model’ 在映射 cpu 模型時混淆?

  • January 10, 2017

我有物理主機,其 CPU 型號為“Intel(R) Xeon(R) CPU E5-2670 v3 @ 2.30GHz”,並且在 cpuinfo 中有“avx2”標誌。主機配置了 kvm/qemu 管理程序和 libvirt。我在域 XML 中將 cpu 模式設置為主機模型。可以在主機上創建來賓 vm。當我檢查來賓 vm 的 cpu 型號時,它顯示為“SandyBridge”,並且在 cpuinfo 中也有“avx2”標誌。但“SandyBridge”不支持“avx2”標誌,但“Haswell”模型支持。這只是由於主機模型模式,libvirt 找到最接近“Intel(R) Xeon(R) CPU E5-2670 v3 @ 2.30GHz”的 CPU 模型為“SandyBridge”,但它應該顯示“Haswell”。這是否意味著 libvirt 有錯誤或在這種情況下它是有效的表示?我正在使用 libvirt 1.2.2 版

我認為這裡發生的情況是,您的舊版本 libvirt 不知道英特爾在您的處理器現在幾乎可以肯定收到的微碼更新中禁用了 Haswell 晶片中的TSX 。Libvirt 僅在1.2.14版本中意識到並宣傳了 Haswell-noTSX CPU 模型。因為您的 CPU 禁用了 libvirt 用於 CPU 類型檢測的某些功能,所以它錯誤地認為它是 SandyBridge。在目前版本的 libvirt 上,它應該被正確檢測為 Haswell-noTSX。

在實踐中,這應該不會真正影響到您,除了 VM 無法使用Haswell 中引入且 SandyBridge 中不存在的其他功能,但如果您無法升級 libvirt真的很想要他們。請記住,您可能還需要升級 qemu。那時您可能應該只使用更新的虛擬機管理程序。你現在執行的任何東西都比執行它的硬體老,這總是一個值得懷疑的想法……

引用自:https://serverfault.com/questions/824566