首页 > 代码库 > CPU host-passthrough技术与应用

CPU host-passthrough技术与应用

为了保证虚拟机在不同宿主机之间迁移的时候的兼容性,Libvirt对CPU提炼出标准的几种类型,在/usr/share/libvirt/cpu_map.xml中可以查到。cpu_map.xml不仅是CPU型号,还有生产商信息、每种型号的CPU特性定义等信息,如下所示:

<cpus>
  <arch name=‘x86‘>
    <!-- vendor definitions -->
    <vendor name=‘Intel‘ string=‘GenuineIntel‘/>
    <vendor name=‘AMD‘ string=‘AuthenticAMD‘/>

    <!-- standard features, EDX -->
    <feature name=‘fpu‘> <!-- CPUID_FP87 -->
      <cpuid function=‘0x00000001‘ edx=‘0x00000001‘/>
    </feature>
    <feature name=‘vme‘> <!-- CPUID_VME -->
      <cpuid function=‘0x00000001‘ edx=‘0x00000002‘/>
    </feature>
    <feature name=‘de‘> <!-- CPUID_DE -->
      <cpuid function=‘0x00000001‘ edx=‘0x00000004‘/>
    </feature>
    <feature name=‘pse‘> <!-- CPUID_PSE -->
      <cpuid function=‘0x00000001‘ edx=‘0x00000008‘/>
    </feature>
    <feature name=‘tsc‘> <!-- CPUID_TSC -->
      <cpuid function=‘0x00000001‘ edx=‘0x00000010‘/>
    </feature>
    <feature name=‘msr‘> <!-- CPUID_MSR -->
      <cpuid function=‘0x00000001‘ edx=‘0x00000020‘/>
    </feature>
 ...
<!-- models -->
    <model name=‘486‘>
      <feature name=‘fpu‘/>
      <feature name=‘vme‘/>
      <feature name=‘pse‘/>
    </model>
...
  <!-- Intel CPU models -->
    <model name=‘Conroe‘>
      <model name=‘pentiumpro‘/>
      <vendor name=‘Intel‘/>
      <feature name=‘mtrr‘/>
      <feature name=‘mca‘/>
      <feature name=‘pse36‘/>
      <feature name=‘clflush‘/>
      <feature name=‘pni‘/>
      <feature name=‘ssse3‘/>
      <feature name=‘syscall‘/>
      <feature name=‘nx‘/>
      <feature name=‘lm‘/>
      <feature name=‘lahf_lm‘/>
    </model>

Centos6.6所带的Libvirt主要规定了以下几种CPU型号:‘486‘,‘pentium‘,‘pentium2‘,‘pentium3‘,‘pentiumpro‘,‘coreduo‘

CPU模式配置

1)custom模式

xml配置文件如下:

<cpu mode=‘custom‘ match=‘exact‘>
    <model fallback=‘allow‘>kvm64</model>
</cpu>

2)host-model模式

根据物理CPU的特性,选择一个最靠近的标准CPU型号。如果没有指定CPU模式,默认也是使用这种模式,xml配置文件如下:

<cpu mode=‘host-model‘ />

3)host-passthrough模式

直接将物理CPU暴露给虚拟机使用,在虚拟机上完全可以看到的就是物理CPU的型号,xml配置文件如下:

<cpu mode=‘host-passthrough‘ />

注意:使用host-model模式,Libvirt会根据物理CPU的型号,从规定的CPU中选择一种最接近的CPU型号,而使用host-passthrough模式直接看到的就是物理CPU的型号

CPU host-passthrough技术的应用场景

HOST技术使用于以下场景

1)需要将物理CPU的一些特性传给虚拟机使用,比如使用虚拟机嵌套的nested技术的时候

2)需要在虚拟机里面看到和物理CPU一模一样的CPU品牌型号,这个在公有云很有意义,用户体验比较好

注意:使用CPU host-passthrough技术需要注意,不同型号的CPU宿主机之间虚拟机不能迁移

 

CPU host-passthrough技术与应用