kvm虚拟机的vcpu如何实现,性能会受到哪些因素影响?

参与11

1同行回答

Henry2017Henry2017研发工程师金融行业
kvm虚拟机的vcpu实现,虚机在宿主机角度看就是一个应用进程,而虚机的vcpu就是该进程中的线程,qemu代码里面用for循环来根据用户创建虚机时配置的vcpu数来调用kvm设置vmcs数据结构中的状态值,kvm模块加载时会创建/dev/kvm设备文件,qemu通过ioctl操作这个文件句柄来和kvm通信,用于...显示全部

kvm虚拟机的vcpu实现,虚机在宿主机角度看就是一个应用进程,而虚机的vcpu就是该进程中的线程,qemu代码里面用for循环来根据用户创建虚机时配置的vcpu数来调用kvm设置vmcs数据结构中的状态值,kvm模块加载时会创建/dev/kvm设备文件,qemu通过ioctl操作这个文件句柄来和kvm通信,用于维护vcpu的寄存器值,当数据结构设置好时会创建线程,等待宿主机cpu的调度执行,其中关键点在于虚机进程的运行模式,分为根模式和非根模式,当处理特权指令时需要由非根模式切换到根模式,这个切换需要上下文的保存和加载,如果有大量的切换就会影响虚机的cpu性能,尤其是windows,在win8之前的虚机性能在kvm下相比于Linux较差,主要原因就是没有适配kvm虚拟化环境,存在大量的VMexit这种切换。

收起
金融其它 · 2017-10-23
浏览2860
  • vcpu的运行需要等待宿主机的调度,如果宿主机cpu负载较高,则vcpu执行的频率会下降,进而影响到虚机的cpu性能,这也是为什么提到虚机性能优化时首先想到的是绑核操作,对于核心业务的虚机,将物理机的单独的一个核留出来专门用于调度执行某个vcpu线程,这样会大大提升虚机计算能力和响应速度。
    2017-10-24

提问者

老赵
老赵1715
系统工程师某保险
擅长领域: 存储灾备网络

问题来自

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2017-10-23
  • 关注会员:2 人
  • 问题浏览:5133
  • 最近回答:2017-10-23
  • X社区推广