2017-03-03 70 views
-1

我在Ubuntu Server 16.04上安裝了libvirt-bin。但我發現的奇怪的事情是,libvirt沒有列出主機的所有支持的CPU功能。Libvirt沒有列出所有支持的CPU功能

當我打開文件/ proc/cpuinfo時,可以看到'aes'在標誌列表中。

但是,當我運行'virsh功能'時,我得到下面的結果,這表明主機cpu沒有功能'aes'。

<capabilities> 

    <host> 
    <uuid>30373237-3132-4d32-3236-30383034485a</uuid> 
    <cpu> 
     <arch>x86_64</arch> 
     <model>SandyBridge</model> 
     <vendor>Intel</vendor> 
     <topology sockets='1' cores='10' threads='2'/> 
     <feature name='invpcid'/> 
     <feature name='erms'/> 
     <feature name='bmi2'/> 
     <feature name='smep'/> 
     <feature name='avx2'/> 
     <feature name='bmi1'/> 
     <feature name='fsgsbase'/> 
     <feature name='abm'/> 
     <feature name='pdpe1gb'/> 
     <feature name='rdrand'/> 
     <feature name='f16c'/> 
     <feature name='osxsave'/> 
     <feature name='movbe'/> 
     <feature name='dca'/> 
     <feature name='pcid'/> 
     <feature name='pdcm'/> 
     <feature name='xtpr'/> 
     <feature name='fma'/> 
     <feature name='tm2'/> 
     <feature name='est'/> 
     <feature name='smx'/> 
     <feature name='vmx'/> 
     <feature name='ds_cpl'/> 
     <feature name='monitor'/> 
     <feature name='dtes64'/> 
     <feature name='pbe'/> 
     <feature name='tm'/> 
     <feature name='ht'/> 
     <feature name='ss'/> 
     <feature name='acpi'/> 
     <feature name='ds'/> 
     <feature name='vme'/> 
    </cpu> 
... 

然後我打開文件/usr/share/libvirt/cpu_map.xml,我可以看到下面的CPU型號,這意味着從了Sandbridge繼承的Westmere,它應該具有的特徵「AES」。

<model name='Westmere'> 
    <model name='Nehalem'/> 
    <feature name='aes'/> 
</model> 

<model name='SandyBridge'> 
    <model name='Westmere'/> 
    <feature name='pclmuldq'/> 
    <feature name='x2apic'/> 
    <feature name='tsc-deadline'/> 
    <feature name='xsave'/> 
    <feature name='avx'/> 
    <feature name='rdtscp'/> 
</model> 

我認爲/ proc/cpuinfo中的標誌列表應該是正確的,因爲它是由linux內核調用cpuid生成的。這是libvirt中的錯誤,還是'aes'只是'virsh功能'輸出中某些列出功能的子集?

更有趣的是,在我啓動一個guest和登錄後,我發現在guest os中,'aes'位於/ proc/cpuinfo中。

有什麼想法?

謝謝, 託比

回答

0

在libvirt的CPU設計中,CPU型號名稱被當作一組的CPU功能的短切/別名。因此,當您查詢容量XML中的主機CPU模型時,您會看到一些表示核心功能集的CPU模型,然後列出了零個或多個尚未列爲基本CPU模型的功能。您的示例顯示「SandyBridge」作爲功能中的CPU模型。這繼承了「Westmere」,並且「Westmere」被宣佈包含「aes」特徵。因此,libvirt不需要在功能中列出「aes」功能 - 它只需要列出已經屬於「SandyBridge」模型的而不是的功能。

如果您想查看CPU功能的完整展開列表,可以將.... XML保存到文件CPUMODEL.xml,然後調用「virsh cpu-baseline --features CPUMODEL.xml」。

相關問題