1、Split virtqueue

组成结构:

• Descriptor Table

• Available Ring

• Used Ring

数据结构:

Descriptor Table

Available Ring

Used Ring

Size & aligment方式:

注:queue size指每个virtqueue具备buffer的深度,queue size=descriptor table num,queue size大小会影响到virtqueue的性能,可以权衡资源和性能选择大小;不同于queue num,queue num表示virtqueue数量。

Split virtqueue一次数据传输的基本操作流程:

When the driver wants to send a buffer to the device, it fills in a slot in the descriptor table (or chains several together), and writes the descriptor index into the available ring. It then notifies the device. When the device has finished a buffer, it writes the descriptor index into the used ring, and sends an interrupt.

Figure 1: Driver writes a buffer in descriptor ring

Figure 2: Driver offers the buffer with avail ring

Figure 3: Device sees chained buffers

Figure 4: Device returns buffer chain

学习地址: Dpdk/网络协议栈/vpp/OvS/DDos/NFV/虚拟化/高性能专家-学习视频教程-腾讯课堂
更多DPDK相关学习资料有需要的可以自行报名学习,免费订阅,久学习,或点击这里加qun免费
领取,关注我持续更新哦! !

Descriptor head idx & avail idx计算方法:

2、Control q

control q的命令结构如下:

正常controlq操作会占用3个描述符,第一个描述符用来传输上图中的class & command,第二个描述符传输command-specific-data[],第三个描述符传输ack信号。

以controq 配置mvp为例:

ctrl_mq结构体如下:

可以看到对应:class=4;command=0来表示ctrl_mq的vq paris set。

ctrl mq配置总共5个字节,驱动分三次来操作,第一次传输class 和command 2个Byte,第二次传输data ,2个byte,就是mvp值,第三次传输ack,1个byte。

三次操作使用三个描述符,组成一个sgl。

原文链接:https://zhuanlan.zhihu.com/p/492959563

virtio split ctrl virtqueue相关推荐

  1. virtio系列-packed virtqueue

    virtio packed virtqueue spilt virtqueue因其简约的设计而备受欢迎,但是它有一个基本的问题:avail, used ring 是分离的,cpu cache miss ...

  2. virtio vring原理

    文章目录 vring原理 Virtqueues Descriptor Table Available Ring Used Ring vring数据结构 vring_virtqueue vring_vi ...

  3. Virtio: An I/O virtualization framework for Linux | 原文

    <Virtio: An I/O virtualization framework for Linux> <KVM Virtio: An I/O virtualization fram ...

  4. Virtio原理简介

    目录 Virtio规范简介 相关数据结构 Vring机制简介 相关文章 实现IO虚拟化主要有三种方式:全虚拟化.半虚拟化和透传.全虚拟化Guest OS不会感知到自己是虚拟机,也无需修改Guest O ...

  5. Linux虚拟化:Virtio: 一个 I/O 虚拟化框架

    <Virtio: An I/O virtualization framework for Linux> 目录 什么是 virtio# 为什么是 virtio# virtio 的架构# vi ...

  6. Linux虚拟化KVM-Qemu分析(九)之virtio设备

    目录 1. 概述 2. 流程分析 3. tap创建 - 网卡后端设备 4. virtio-net创建 4.1 数据结构 4.2 流程分析 4.2.1 class_init 4.2.2 instance ...

  7. VIRTIO PCI 设备

    Virtio的代码主要分两个部分:QEMU和内核驱动程序.Virtio设备的模拟就是通过QEMU完成的,QEMU代码在虚拟机启动之前,创建虚拟设备.虚拟机启动后检测到设备,调用内核的virtio设备驱 ...

  8. 网络虚拟化——virtio

    前言 在上一篇文章(网络虚拟化--QEMU虚拟网卡)中,讨论了经典的网络设备全虚拟化技术.这种技术不需要guest内核对虚拟网络设备有任何的感知和特殊处理,但性能较差,一次读写操作可能会产生多次需要H ...

  9. DPDK vhost-user研究(十三)

    本文会重点讨论下vhost pmd和lib库中的api如何使用. 在前面的章节中描述过virtio-net设备的生命周期包括设备创建.配置.服务启动和设备销毁几个阶段. 我们先回忆下整个生命周期: 设 ...

最新文章

  1. 十五、Redis三种特殊类型之二HyperLoglog
  2. python中中括号中的负数
  3. Intellij IDEA2019项目包分层结构显示设置
  4. Hadoop集群(一) Zookeeper搭建
  5. 整理的一些常用的CSS HACK
  6. Odoo 14 版本优化更新的新功能体验
  7. 随想录(uclibc的学习)
  8. python selenium p_使用Python和Selenium,如何从包含
  9. 男人 30 岁前要做的 22 件事
  10. 函数收敛:就是当x趋于无时,函数有常数c; 数列收敛 :就是当x趋于无穷时,数列x(n)是常数c; 积分收敛:就是当上界趋于无穷时,积分中的函数有常数c,也就是函数围成的面积有常数C。 数列和函
  11. 鸟哥的Linux私房菜-基础篇(第九章)
  12. opencv-python中文文档
  13. 树莓派4b 创乐博 7寸 1920*1200 分辨率触摸屏校准
  14. 基于hexo搭建github的个人静态博客
  15. 花生壳内网发布外网可以访问的网站
  16. 30个 开发商logo - 商标制作 - ci vi设计
  17. 什么是云服务器?如何选择?
  18. linux下使用mail定时发送邮件-阿里企业邮箱发送
  19. PHP7.0 的新特性
  20. JavaScript(订单的增删改)

热门文章

  1. java字符串判断相等_java判断字符串是否相等的方法
  2. TechED 展台视频巡礼之英特尔篇
  3. 淘宝API图片尺寸的缩略图解决办法
  4. 每次打开word2007都要配置进度解决办法
  5. vue---百度地图实现定位功能
  6. django前端引用数据_引用django值
  7. 解决和避免国外客户拖延或拒付货款的方法
  8. 2022年中国冰晶石价格走势及进出口贸易情况分析[图]
  9. 2014年春节完成的学习
  10. template标签用法总结