【KVM新概念】 - Exit-less Interrupt (ELI)

背景

基于X86的虚拟化技术(intel vt-x),虚拟机可以通过主机或者直通的方式访问外部设备。两种方式都会造成一定的性能损耗,主要原因是外部设备中断的处理离不开主机的干预:当外部设备中断到达时,hypervisor中断客户机,并注入相应的虚拟中断;当客户机完成中断服务程序后,也需要退出到hypervisor, 向外部设备发送EOI (end of interrupt), 整个过程和bare-metal相比,会造成很多额外的VM Exits,影响虚拟机的性能。

 

ELI (Exit-Less Interrupt)

ELI的主要思想是让虚拟机绕过主机直接处理外部设备的中断,最大程度的减少VM Exits, 从而达到和bare-metal一样的性能。

 

Figure 2简单的描述了ELI的实现思路:

  1. 将部分cpu从host隔离出来,虚拟机绑定在该cpu上运行;
  2. 外部设备直通给指定的虚拟机,并且该设备所有的中断绑定在指定的cpu;
  3. hypervisor向guest注入一个shadow idt, 对于直通外部设备的中断,这些中断在shadow idt中对应的表项从原来的客户机idt中拷贝过来,这些中断被触发的时候不会导致客户机vm exit;而对于其他的中断,该shadow idt表项被设置成not present,触发这些中断会导致vm exit;
  4. 考虑到shadow idt对于guest的透明性,一个可能的实现是将shadow idt放到一个pci设备bar(base address regiester)指定的某块区域;

限制

  • 需要隔离cpu
  • 仅支持device passthrough
  • 需要修改guest (shadow idt)

实现

Fujisu在2012年向kvm社区提交了ELI的实现:http://permalink.gmane.org/gmane.linux.kernel/1353803,但是该补丁并没有被接受,原因主要是intel从haswell开始就要支持apic-v,详情可以参考http://thread.gmane.org/gmane.comp.emulators.kvm.devel/97715

今年一月份,intel也在kvm社区提交了apic-v的补丁:http://www.spinics.net/lists/kvm/msg85565.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值