2017-03-03 1 views
-1

Ich habe libvirt-bin auf meinem Ubuntu Server 16.04 installiert. Aber das Seltsame, was ich gefunden habe, ist, dass libvirt nicht alle unterstützten CPU-Funktionen des Hosts auflistet.Libvirt listet nicht alle unterstützten CPU Features auf

Wenn ich Datei/proc/cpuinfo öffne, kann ich sehen, dass "AES" in der Flags-Liste ist.

Allerdings, wenn ich 'Virsh Fähigkeiten' ausführen, habe ich das Ergebnis unten, die zeigt Host-CPU hat keine Funktion '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> 
... 

Dann öffne ich Datei /usr/share/libvirt/cpu_map.xml, ich CPU-Modelle unten sehen kann, was bedeutet, Sandbridge von Westmere erbt, und es sollte Feature ‚aes‘ hat.

<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> 

Ich denke, die Liste Flaggen in/proc/cpuinfo korrekt sein sollte, da es durch Linux-Kernel Aufruf cpuid erzeugt wird. Ist das ein Fehler in libvirt oder ist "aes" nur eine Untermenge einiger aufgelisteter Features in der Ausgabe von 'virsh capabilities'?

Interessanter ist, nachdem ich einen Gast gestartet habe, und Login, fand ich, dass in Gast os, 'AES' ist in/proc/cpuinfo.

Irgendeine Idee?

Danke, Toby

Antwort

0

In dem libvirt CPU-Design, wird die CPU-Modellnamen als Abkürzung/Alias ​​für eine Reihe von CPU-Funktionen behandelt. Wenn Sie also das Host-CPU-Modell in den Fähigkeiten XML abfragen, werden Sie ein CPU-Modell sehen, das den Kernsatz von Features ausdrückt, und dann eine Liste von null oder mehr Features, die nicht bereits Teil des aufgelisteten Basis-CPU-Modells sind. Ihr Beispiel zeigt "SandyBridge" als das CPU-Modell in den Fähigkeiten. Dies erbt von "Westmere", und "Westmere" wird erklärt, um die "AES" -Funktion aufzunehmen. Daher muss libvirt das "AES" -Feature in den Funktionen nicht aufführen - es muss nur Funktionen aufgelistet werden, die nicht sind, die bereits Teil des "SandyBridge" -Modells sind.

Wenn Sie jedoch die vollständig erweiterte Liste der CPU-Funktionen sehen möchten, können Sie das .... XML in einer Datei CPUMODEL.xml speichern und dann "virsh cpu-baseline --features CPUMODEL.xml" aufrufen.

Verwandte Themen