首页
学习
活动
专区
工具
TVP
发布

virtio 简介

virtio 的架构 从总体上看,virtio 可以分为四层,包括前端 guest 中各种驱动程序模块,后端 Hypervisor (实现在Qemu上)上的处理程序模块,中间用于前后端通信的 virtio...层和 virtio-ring 层,virtio 这一层实现的是虚拟队列接口,算是前后端通信的桥梁,而 virtio-ring 则是该桥梁的具体实现,它实现了两个环形缓冲区,分别用于保存前端驱动程序和后端处理程序执行的信息...严格来说,virtiovirtio-ring 可以看做是一层,virtio-ring 实现了 virtio 的具体通信机制和数据流程。...Virtio 使用 virtqueue 来实现 I/O 机制,每个 virtqueue 就是一个承载大量数据的队列,具体使用多少个队列取决于需求,例如,virtio 网络驱动程序(virtio-net)...使用两个队列(一个用于接受,另一个用于发送),而 virtio 块驱动程序(virtio-blk)仅使用一个队列。

6.6K43

Virtio网络的演化之路

作为一个开放的标准接口,virtio一直在云计算与虚拟化中扮演着重要的角色。而virtio网络接口,作为virtio标准支持下最复杂的接口之一,在虚拟机/容器网络加速、混合云加速中一直扮演着重要角色。...本文将在读者对virtio标准与虚拟化有一定了解的前提下,介绍virtio网络架构从创造之初到如今的演化之路。...1.virtio-net驱动与设备: 最原始的virtio网络 Virtio网络设备是一种虚拟的以太网卡,支持多队列的网络包收发。熟悉virtio的读者应该知道,在virtio的架构中有前后端之分。...在virtio 网络中,所谓的前端即是虚拟机中的virtio-net网卡驱动。而后端的实现多种多样,后端的变化往往标志着virtio网络的演化。...更重要的是vDPA框架保有virtio这套标准的接口,使云服务提供商在不改变virtio接口的前提下,得到更高的性能。

7.3K24
您找到你想要的搜索结果了吗?
是的
没有找到

DPDK virtio-user

virtio-user 是 DPDK 针对特定场景提出的一种解决方案,它主要有两种场景的用途,一种是用于 DPDK 应用容器对 virtio 的支持,这是 DPDK v16.07 开始支持的;另一种是用于和内核通信...virtio_user 用于容器网络 我们知道,对于虚拟机,有 virtio 这套半虚拟化的标准协议来指导虚拟机和宿主机之间的通信,但对于容器的环境,直接沿用 virtio 是不行的,原因是虚拟机是通过...所以,virtio_user 其实就是在 virtio PMD 的基础上进行了少量修改形成的,简单来说,就是添加大页共享的部分逻辑,并精简了整块共享内存部分的逻辑。...有兴趣可以对照 /driver/net/virtio 中的代码和 DPDK virtio_user 代码,其实大部分是相同的。...=virtio_user0,path=/tmp/vhost_user0 virtio_user 作为 exception path 用于与内核通信 virtio_user 的一个用途就是作为 exception

3.8K31

virtio 虚拟化系列之一:从 virtio 论文开始(文末有福利~)

现正在招兵买马,看完请点击左下角阅读原文查看福利哦~ 背景 Virtio 来源于 virtio: towards a de-facto standard for virtual I/O devices...例如 virtio-blk 只有一个 virtqueue,而 virtio-net/virtio-console 有两个 virtqueue,一个用于输入,一个用于输出。...下面看一下 virtio 如何处理 block 的虚拟化的呢。 Virtio-blk 后端 我们先从后端讲起,因为后端相当于一个虚拟的硬件,后端提供什么功能,前端才能使用什么功能。...其中配置空间比较重要,通过 PCI 提供了Guest 访问 virtio 虚拟硬件的一些参数。对于 virtio-blk,包括基本的磁盘布局信息。...本文对部分细节只进行简单的说明,后续会在以下几个话题开展: Qemu 和 virtio 的内存映射 中断注入的实现 Virtio 流控以及性能优化 Vhost-user 当前,距离 virtio 问世已经十年有余

2K21

virtio详细介绍和1.1新功能

default: break; } } 设备分类 virtio分为很多设备类型virtio-net/virtio-blk/virtio-scsi等等,virtqueue实现通用部分...实现情况 linux 4.18 virtio-net driver已经能支持virtio 1.1了,但vhost-net不支持virtio 1.1。...qemu master实现了virtio 1.1。 dpdk virtio pmd和vhost-user都支持virtio 1.1。...总结 virtio标准还会继续发展,功能会越来越多,设备类型会越来越多,如virtio GPU和virtio vIOMMU,GPU最难虚拟化,目前用的是mdev,没有IOMMU,virtio设备可以修改任意...总结virtio的目标就是统一IO设备,虚拟机看到的所有的外设都是virtio类型,只需要安装virtio类型的驱动即可,如果硬件也能实现virtio,那么裸金属也一样了,虚拟机和裸金属互相热迁移,一个镜像走天下

3.6K01

virtio详细介绍和1.1新功能

default: break; } } 设备分类 virtio分为很多设备类型virtio-net/virtio-blk/virtio-scsi等等,virtqueue实现通用部分...实现情况 linux 4.18 virtio-net driver已经能支持virtio 1.1了,但vhost-net不支持virtio 1.1。...qemu master实现了virtio 1.1。 dpdk virtio pmd和vhost-user都支持virtio 1.1。...总结 virtio标准还会继续发展,功能会越来越多,设备类型会越来越多,如virtio GPU和virtio vIOMMU,GPU最难虚拟化,目前用的是mdev,没有IOMMU,virtio设备可以修改任意...总结virtio的目标就是统一IO设备,虚拟机看到的所有的外设都是virtio类型,只需要安装virtio类型的驱动即可,如果硬件也能实现virtio,那么裸金属也一样了,虚拟机和裸金属互相热迁移,一个镜像走天下

1.5K20

使用virtiostat查看virtio设备的IOPS和吞吐

但是virtio family的设备这种越来越多,virtiofs、virtio gpu、virtio console等设备却缺少相应的工具。...基于以上原因,作者开发了virtiostat工具,作为bcc工具集的一部分,提供了virtio设备的stat监控能力。...分析 原理 在Linux上,virtio设备进行IO的时候,会先生成scatterlist这样的数据结构,然后使用如下几个API,把数据加入到virt queue中: virtqueue_add_sgs...但是,blk layer的一次IO操作,把请求下发到virtio层的时候,除了IO request和数据之外,在virtio blk中还要加入额外的协议的部分,也就导致了virtiostat看到的SG(...几个重要的场景 在virtio blk、virtio scsi以及virtio net场景下,已经有足够的工具来支持了。

3.2K20

vhost:一种 virtio 高性能的后端驱动实现

什么是 vhost vhost 是 virtio 的一种后端实现方案,在 virtio 简介中,我们已经提到 virtio 是一种半虚拟化的实现方案,需要虚拟机端和主机端都提供驱动才能完成通信,通常,virtio...为什么要用 vhost 在 virtio 的机制中,guest 与 用户空间的 Hypervisor 通信,会造成多次的数据拷贝和 CPU 特权级的上下文切换。...其中,qemu 还是需要负责 virtio 设备的适配模拟,负责用户空间某些管理控制事件的处理,而 vhost 实现较为纯净,以一个独立的模块完成 guest 和 host kernel 的数据交换过程...vhost 与 virtio 前端的通信主要采用一种事件驱动 eventfd 的机制来实现,guest 通知 vhost 的事件要借助 kvm.ko 模块来完成,vhost 初始化期间,会启动一个工作线程

8.4K74

【重识云原生】第四章云网络4.7.3节——Vhost-net方案

virtio分为前端和后端,一个backend组件和一个frontend组件。backend组件是virtio接口的host端,frontend组件是virtio的guest端。         ...2 virtio-net驱动基本原理         Virtio网络设备是一种虚拟的以太网卡,支持多队列的网络包收发。...在virtio的架构中,有前后端驱动之分,所谓的前端驱动即是虚拟机中的virtio-net网卡驱动,而后端驱动的实现则多种多样,后端驱动的演化往往也标志着virtio网络的演化。        ..._cloudvtech的博客-CSDN博客_dpdk kvm DPDK系列之十五:Virtio技术分析之一,virtio基础架构_cloudvtech的博客-CSDN博客_virtio 从dpdk1811...的区别以及I/O半虚拟化驱动介绍_weixin_34051201的博客-CSDN博客 virtio blk原理 - 简书 virtio-blk简介_sdulibh的博客-CSDN博客 virtio-net

1.8K20

A核与M核异构通信过程解析

hypervisor 通过他模拟出一系列的虚拟化设备,例如:virtio-net、virtio-blk等,并使得这些设备在虚拟机内部通过 api 调用的方式变得可用。...计算机中存在不同的总线标准,而 virtio 采用的是 pci 总线(当然也可以用其他总线来实现)。每一个 virtio 设备就是一个 pci 设备。...virtio前端驱动 virtio 前端驱动位于 Linux 内核中,运行在虚拟机 VM,针对不同类型的设备有不同类型的驱动程序,包括virtio-net、virtio-blk、virtio-pci等,...virtiovirtio层实现虚拟队列接口,作为前后端通信的桥梁,不同类型的设备使用的虚拟队列数量不同,例如 virtio-net 使用两个虚拟队列,一个用于接收,一个用于发送;virtio-blk...virtio后端驱动 virtio 后端驱动位于 qemu ,后端设备承担的主体功能分为两部分: virtio后端设备的模拟; 依据virtio协议处理来自虚拟机端发送的请求。

28640

【重识云原生】第四章云网络4.7.6节——virtio-blk存储虚拟化方案

virtio-blk存储虚拟化方案 1.1 virtio-blk简介         基于virtiovirtio-blk是KVM-Qemu虚拟化生态中的虚拟化块存储的一种实现方式,利用了virtio...virtio总线连接PCI接口和virtio-blk设备。...这样virtio-blk设备就通过virtio总线连接到virtio-blk-pci设备的PCI接口上,virtio-net也通过virtio总线连接到virtio-net-pci设备的PCI接口上。...在virtio-blk-pci或virtio-net-pci前端驱动加载时,最初识别到的都是virtio-pci设备,这样都可调用virtio-pci驱动进行事件通知和数据传递的初始化,后续也可使用virtio-pci...virtio-blk和virtio-scsi的设备的代码流程和前述的virtio-net的驱动流程类似。

1.4K30
领券