Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3681854
  • 博文数量: 880
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 6155
  • 用 户 组: 普通用户
  • 注册时间: 2016-11-11 09:12
个人简介

To be a better coder

文章分类

全部博文(880)

文章存档

2022年(5)

2021年(60)

2020年(175)

2019年(207)

2018年(210)

2017年(142)

2016年(81)

分类: LINUX

2017-11-28 11:29:24

vhost-user的提交者是Luke Gorrie,他也是snabbswitch的作者。从图上可以看到vhost-backend从原来咋kernel中的vhost-net 变成了用户空间的snabbswitch。 snabbswitch直接接管物理网卡的驱动,从而直接控制网络信息的输入输出。

snabbswitch主要使用了下面的技术来提高性能

  1. 采用了大页来作为host和vm之间通信的内存空间
  2. 用户态操作网卡,使用类似于netmap的zero copy技术来加速对物理设备的访问
  3. 使用numa技术,加快中断响应速率



vhost内核模块主要是把virtiO后端驱动的数据平面迁移到了内核中,而控制平面还在qemu中


前后端  虚拟队列  环形缓冲区  后端 内核vhost_net
guest和host能并行处理IO来提高throughput和减少latency,但是IO的路径并没有比全虚拟化技术减少。上下文切换 VMENTRY  VMEXIT
在全虚拟化 中,guest操作系统运行在VMM之上,并不知道它已被虚拟化,不需要任何更改就可以工作。相反,在半虚拟化中,guest操作系统不仅知道它运行在 VMM上,还需要做修改来对接VMM的代码。
virtqueue_notify    中断  收报发包队列

转载自:http://blog.csdn.net/hejin_some/article/details/72179525
刘年超  :


全虚拟化指的是虚拟机操作系统不需要做任何修改就能跑在hypervisor之上,像Qemu、VMware、VirtualBox都能提供全虚拟化方案。而准虚拟化指的是,虚拟机的操作系统要做一定的修改才能运行,比如XEN和KVM就是提供泛虚拟化的方案。
virtio是一类I/O设备的统称,可以有很多中,如block、net、serial等






1545998877802164.png

  1. 前端驱动读取io请求放入vring

  2. 前端通过notify通知机制通知后端驱动处理io

  3. notify操作使vcpu执行线程退出到qemu应用层,其从vring中获取客户机io请求信息,将请求线程放入aio线程池,然后vcpu线程的处理流程重新返回到客户机

  4. aio线程处理完成后,通知主线程,并向客户机注入中断说明其已完成io操作

  5. 客户机相应中断,并获取io请求结果和处理信息,接着继续向上层返回结果


阅读(2176) | 评论(0) | 转发(0) |
0

上一篇:关于Huge Page性能

下一篇:DPDK知识

给主人留下些什么吧!~~