DPDK基础入门(十):虚拟化

news2024/9/20 14:57:50

I/O虚拟化

在这里插入图片描述

全虚拟化:宿主机截获客户机对I/O设备的访问请求,然后通过软件模拟真实的硬件。这种方式对客户机而言非常透明,无需考虑底层硬件的情况,不需要修改操作系统。

半虚拟化:通过前端驱动/后端驱动模拟实现I/O虚拟化。客户机中的驱动程序为前端,宿主机提供的与客户机通信的驱动程序为后端。前端驱动将客户机的请求通过与宿主机间的特殊通信机制发送给后端驱动,后端驱动在处理完请求后再发送给物理驱动。

IO透传:直接把物理设备分配给虚拟机使用,这种方式需要硬件平台具备I/O透传技术,例如Intel VT-d技术。它能获得近乎本地的性能,并且CPU开销不高。

DPDK支持半虚拟化的前端virtio和后端vhost,并且对前后端都有性能加速的设计。而对于I/O透传,DPDK可以直接在客户机里使用,就像在宿主机里,直接接管物理设备,进行操作。

I/O透传

I/O透传技术(如SR-IOV)通过直接将硬件设备的访问权限分配给虚拟机(VM),提供高性能的网络和存储操作。这主要是利用Intel® VT-d的支持,减少虚拟机操作时对宿主机的干预,从而避免性能瓶颈。

Intel® VT-d:该技术允许虚拟机直接访问物理设备,减少了传统虚拟化中常见的“VM-Exit”(虚拟机退出到宿主机的开销)
SR-IOV(单根I/O虚拟化):允许一个物理网卡通过虚拟化生成多个虚拟网卡。这些虚拟网卡可以分配给不同的虚拟机,使每个虚拟机能获得几乎独立的网络设备访问,从而提升性能。

VT-d主要给宿主机软件提供了以下的功能:

  • I/O设备的分配:可以灵活地把I/O设备分配给虚拟机,把对虚拟机的保护和隔离的特性扩展到I/O的操作上来。

  • DMA重映射:可以支持来自设备DMA的地址翻译转换。

  • 中断重映射:可以支持来自设备或者外部中断控制器的中断的隔离和路由到对应的虚拟机。

  • 可靠性:记录并报告DMA和中断的错误给系统软件,否则的话可能会破坏内存或影响虚拟机的隔离。

SR-IOV

在这里插入图片描述

SR-IOV技术是由PCI-SIG制定的一套硬件虚拟化规范,全称是Single Root IO Virtualization(单根IO虚拟化)。SR-IOV规范主要用于网卡(NIC)、磁盘阵列控制器(RAID controller)和光纤通道主机总线适配器(Fibre Channel Host Bus Adapter,FC HBA),使数据中心达到更高的效率。SR-IOV架构中,一个I/O设备支持最多256个虚拟功能,同时将每个功能的硬件成本降至最低。SR-IOV引入了两个功能类型:

  • PF(Physical Function,物理功能):这是支持SR-IOV扩展功能的PCIe功能,主要用于配置和管理SR-IOV,拥有所有的PCIe设备资源。PF在系统中不能被动态地创建和销毁(PCI Hotplug除外)。
  • VF(Virtual Function,虚拟功能):“精简”的PCIe功能,包括数据迁移必需的资源,以及经过谨慎精简的配置资源集,可以通过PF创建和销毁。

在这里插入图片描述

Virtio网络设备

在客户机操作系统中实现的前端驱动程序一般直接叫Virtio,在宿主机实现的后端驱动程序目前常用的叫Vhost。

Linux内核驱动设计

Virtio网络设备Linux内核驱动主要包括三个层次:底层PCI-e设备层,中间Virtio虚拟队列层,上层网络设备层。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

DPDK用户空间virtio设备的优化

DPDK用户空间驱动和Linux内核驱动相比,主要不同点在于DPDK只暂时实现了Virtio网卡设备,所以整个构架和优化上面可以暂时只考虑网卡设备的应用场景。

关于单帧mbuf的网络包收发优化:将描述符表和可用环表(用于管理数据包)的映射关系固定。这意味着每个环表项(用于描述网络数据包的内存位置)和描述符表中的位置是一一对应的。在接收数据时,每个可用环表项固定指向一个描述符表的位置;发送数据时,描述符表的映射被优化以加速数据处理。固定映射减少了不同CPU核之间的缓存迁移开销,也节省了描述符表的分配和释放操作。

Indirect特性在网络包发送中的支持:发送网络包时,通常需要两个描述符来管理一个数据包:一个描述符用于指向数据包本身,另一个用于管理数据包的头部信息。支持间接描述符的特性允许将这两个描述符的需求简化为一个描述符。这个描述符指向一个额外分配的内存区域(间接描述符表),这个表可以包含多个描述符的信息。通过这种方式,不论是发送单个小数据包还是巨型帧(大数据包),只需要一个描述符就能管理。这减少了描述符的开销和管理复杂性,提高了发送效率。

在这里插入图片描述

Vhost

Virtio-net 的后端驱动经历了以下演进过程:

  • Virtio-net 后端:最初的虚拟网络设备驱动直接在虚拟化管理程序中实现,用于处理虚拟机中的网络数据。

  • 内核态 Vhost-net:为了提高性能,引入了 Vhost-net 框架,将数据路径的一部分移到内核空间,减少了用户态和内核态之间的开销。

  • 用户态 Vhost-user:进一步提高性能和灵活性,通过将 Vhost 的实现移到用户态,使虚拟化管理程序可以更灵活地管理网络数据,同时保持高效的性能。

Vhost 是一个框架,它最初在内核态实现了高效的虚拟设备操作,后续的 Vhost-user 将这个框架扩展到了用户态,以支持更灵活的虚拟化场景。

virtio-net

virtio-net后端驱动的最基本要素是虚拟队列机制、消息通知机制和中断机制。虚拟队列机制连接着客户机和宿主机的数据交互。消息通知机制主要用于从客户机到宿主机的消息通知。中断机制主要用于从宿主机到客户机的中断请求和处理。

Tap设备(Tap Interface)是一个虚拟网络接口,用于将虚拟机的网络流量传输到宿主机的网络栈。它通常用于虚拟化环境中,使虚拟机能够与宿主机或其他网络设备进行通信。

QEMU(Quick Emulator)是一个开源的虚拟机管理程序和模拟器。它可以模拟各种硬件平台,并提供虚拟化支持,使得多个虚拟机可以在一个物理机上运行。QEMU通过处理虚拟机的硬件请求、管理虚拟机的资源来实现虚拟化。

在这里插入图片描述

数据通道的瓶颈:

  • 从Tap设备到QEMU:Tap设备是虚拟网络接口,用于处理虚拟机的网络流量。数据包从Tap设备接收后,需要复制到QEMU(虚拟机管理程序)。这意味着数据包需要经过一个拷贝操作才能从Tap设备转移到QEMU。
  • 从QEMU到客户机:QEMU处理完数据包后,再将其发送到虚拟机的网络栈。这也需要一个拷贝操作。这两个拷贝操作(Tap设备到QEMU,QEMU到虚拟机)都增加了延迟和处理开销,成为性能瓶颈。

消息通知路径的瓶颈:

  • 内核到QEMU的通知消息:当数据包到达Tap设备时,内核需要通知QEMU有新的数据可供处理。这个通知过程涉及内核发出一个消息,告知QEMU有数据到达。
  • IOCTL请求和中断:QEMU在接收到内核的通知后,会使用IOCTL(输入输出控制)调用请求KVM(内核虚拟机管理程序)发送一个中断。中断用于通知虚拟机有新的数据到达。
  • KVM到客户机的中断:KVM接到QEMU的中断请求后,向虚拟机发送中断信号。这个中断信号让虚拟机知道有新的数据包需要处理。

Linux内核态vhost-net

vhost-net通过卸载virtio-net在报文收发处理上的工作,使Qemu从virtio-net的虚拟队列工作中解放出来,减少上下文切换和数据包拷贝,进而提高报文收发的性能。除此以外,宿主机上的vhost-net模块还需要承担报文到达和发送消息通知及中断的工作。

报文接收仍然包括数据通路和消息通知路径两个方面:

  • 数据通路是从Tap设备接收数据报文,通过vhost-net模块把该报文拷贝到虚拟队列中的数据区,从而使客户机接收报文。
  • 消息通路是当报文从Tap设备到达vhost-net时,通过KVM模块向客户机发送中断,通知客户机接收报文。

在这里插入图片描述

用户态vhost

Linux内核态的vhost-net模块需要在内核态完成报文拷贝和消息处理,这会给报文处理带来一定的性能损失,因此用户态的vhost应运而生。用户态vhost采用了共享内存技术,通过共享的虚拟队列来完成报文传输和控制,大大降低了vhost和virtio-net之间的数据传输成本。

数据通路不再涉及内核,直接通过共享内存发送给用户态应用(如DPDK,OVS)

消息通路通过Unix Domain Socket实现,是一种在同一台计算机上进程间通信(IPC)的方法。与网络套接字不同,它不涉及网络协议栈,数据通过内存中的文件描述符进行传输。

DPDK vhost

DPDK vhost支持vhost-cuse(用户态字符设备)和vhost-user(用户态socket服务)两种消息机制,它负责为客户机中的virtio-net创建、管理和销毁vhost设备。

当使用vhost-user时,首先需要在系统中创建一个Unix domain socket server,用于处理Qemu发送给vhost的消息。

在这里插入图片描述

DPDK示例程序vhost-switch是基于vhost lib的一个用户态以太网交换机的实现,可以完成在virtio-net设备和物理网卡之间的报文交换。还使用了虚拟设备队列(VMDQ)技术来减少交换过程中的软件开销,该技术在网卡上实现了报文处理分类的任务,大大减轻了处理器的负担。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2128518.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

腾讯云2024年数字生态大会开发者嘉年华(数据库动手实验)TDSQL-C初体验

在2024年9月5-6日,有幸参加了腾讯云举办的2024年数字生态大会开发者嘉年华。 有幸体验了腾讯的多项黑科技和云计算知识。特别是在“增一行代码”互动展区,体验了腾讯云云计算数据库TDSQL-C技术并进行了动手实验。这些技术充分展示了腾讯在云计算的强大实…

Antd - Form 表单提交onfinish函数不生效

Antd - Form 表单提交onfinish函数不生效 问题复现问题修复 问题复现 const onFinish: FormProps<InvoiceTitleInfo>[onFinish] (values) > {console.log(values); } const rules [() > ({validator() {const address form.getFieldValue(address) || ;if (!ad…

安装MongoDB启动报错:找不到共享库文件libcrypto.so.10

查看依赖 ldd mongodb/bin/mongod MongoDB4.2.0需要依赖openssl10相关资源&#xff0c;必须先在Linux中安装openssl10。 执行命令&#xff1a;yum install compat-openssl10 下载完后最后执行ldd mongod看到文件都已经存在

MySQL -- 体系结构、索引结构

1 MySQL体系结构 英文版&#xff1a; 中文版&#xff1a; 以上图可知&#xff0c;MySQL的体系结构划分为以下4层&#xff1a; &#xff08;1&#xff09;网络接入层&#xff1a; &#xff08;2&#xff09;服务层&#xff1a; &#xff08;3&#xff09;存储引擎层&#x…

【软件测试】自动化测试-概念篇

&#x1f334;自动化 &#x1f6a9;自动化的概念 自动的代替人的行完成操作。 自动化在生活中处处可见 自动洒水自机&#xff0c;主要通上水就可以自动化洒水并且可以自动的旋转。 自动洗手液&#xff0c;免去了手动挤压可以自动感应出洗手液超市自动闸门&#xff0c;不需要手…

知识笔记合集

文章目录 vsCode可以运行c程序却无法运行c程序帆软填报属性不起作用java-实体类日期类型格式化Java-数据库id字段使用雪花算法IDEA-快捷键 vsCode可以运行c程序却无法运行c程序 vsCode中的tasks.json文件中添加"-lstdc" {"tasks": [{"type": &…

厉害啦煤炉!Mercari推出Ai Listing,卖家只需要拍照发图片就行!

Mercari&#xff08;中文名“煤炉”&#xff09;是一个日本C2C二手交易平台&#xff0c;类似于中国的“闲鱼”&#xff0c;月活跃用户数量超2,300万。根据2023年11月的财报&#xff0c;Mercari的净利润同比增长高达346%&#xff0c;达到了惊人的28亿日元&#xff01;同时&#…

零基础考过软考信息系统项目管理师经验分享

选择适合的课程&#xff1a;如果你是零基础&#xff0c;建议找一些专门针对新手的课程&#xff0c;讲解通俗易懂。 刷题至关重要&#xff1a;软考的题库很庞大&#xff0c;多做题是必须的。 做好笔记和复习&#xff1a;上课时要做好笔记&#xff0c;课后及时复习&#xff0c;…

弱口令爆破

本文仅作为学习参考使用&#xff0c;本文作者对任何使用本文进行渗透攻击破坏不负任何责任。 本文基于burp抓包软件针对dvwa靶场进行弱口令爆破测试。 靶场设置&#xff1a; 在DVWA Security中&#xff0c;设置安全等级&#xff0c;并保存。 打开靶场。 1&#xff0c;抓包。…

【ArcGIS Pro实操第七期】栅格数据合并、裁剪及统计:以全球不透水面积为例

【ArcGIS Pro实操第七期】批量裁剪&#xff1a;以全球不透水面积为例 准备&#xff1a;数据下载ArcGIS Pro批量裁剪数据集1 数据拼接2 数据裁剪3 数据统计&#xff1a;各栅格取值3.1 栅格计算器-精确提取-栅格数据特定值3.2 数据统计 4 不透水面积变化分析 参考 准备&#xff1…

新品启航,共鉴未来 —— 摩托对讲机EJEAS X10首现重庆国际摩托车展

2024年重庆国际摩托车展&#xff08;CIMA Motor&#xff09;将于9月13日至16日在重庆国际博览中心举行&#xff0c;由三大权威机构联合主办。展会面积达16万平米&#xff0c;汇聚国内外116家展商&#xff0c;吸引千余名观众参与&#xff0c;展示摩托车新品、技术与文化&#xf…

code eintegrity npm err sha512

当 npm install 出现报错的时候&#xff1a; 你应该这样去解决&#xff1a; 删除 package-lock.json 文件&#xff0c;重新执行 npm install。 问题出现的原因 EINTEGRITY 错误码表示在npm缓存中无法找到 指定sha512校验合的模块。 出现这个问题的原因是缓存不一致&…

语义分割数据集|河流湖泊分割|水灾预警

江河湖泊自然水灾检测数据集&#xff0c;数据集整理不易&#xff0c;获取地址在最后&#xff0c;具体信息如下&#xff1a; 总数&#xff1a;290张 类别&#xff1a;1类 数据集大小&#xff1a;约106M 数据整理不易&#xff0c;数据集获取地址如下&#xff1a; https://…

陕西科技大学客座教授向凌云推动了中国新兴科技与教育的产学研结合

近日&#xff0c;陕西科技大学迎来了旅美经济学家向凌云教授的聘任仪式。此次活动在镐京学院会议厅举行&#xff0c;由镐京学院负责人为他颁发了客座教授的聘书。在当前科学技术迅猛发展的背景下&#xff0c;向凌云教授的加入引起了广泛关注&#xff0c;尤其是在教育界和新兴产…

7种有效的链接建设方法,提升你的SEO排名(信息图表)

想象一下你小时候听过的一句常见的话&#xff1a; “近朱者赤&#xff0c;近墨者黑。” 或者&#xff0c; “你的五个最亲近的朋友决定了你的平均水平。” 这些智慧在链接建设领域同样适用。想想将你的网站页面与其他网站连接起来的反向链接——这些入站链接就像你与外界的…

C++——关联式容器(3):红黑树

3.红黑树 3.1 红黑树的概念 上一篇文章介绍了AVL树&#xff0c;AVL树是解决一般的搜索二叉树效率退化的一种很好的方式。除了AVL树之外&#xff0c;红黑树也是一种非常好的选择。红黑树也是一种搜索二叉树&#xff0c;从其名字上就能够发现红黑树依靠标识红色或黑色来构建整棵…

集成显卡与独立显卡之间的区别,以及如何选择?

目录 一、集成显卡介绍 二、独立显卡介绍 三、性能与功耗对比 四、应用场景与选购指南 五、总结 大家在选购电脑的时候,显卡作为图形处理的关键设备,对大型3D游戏、图形设计类软件运行非常关键。目前电脑显卡主要分为两大类:集成显卡与独立显卡。今天给大家聊聊集成显卡…

Jeremy Howard对创业,AI产品,技术趋势,社区的看法

Jeremy Howard&#xff0c;一位在人工智能领域留下深刻印记的科学家和教育家&#xff0c;以其对深度学习的普及和教育的执着追求而闻名。出生于澳大利亚的他&#xff0c;不仅在学术界取得了令人瞩目的成就&#xff0c;更是将复杂的机器学习技术带给了更广泛的公众。 在悉尼大学…

Amazon EC2:引领企业迈向云计算的未来

在数字化转型的浪潮中&#xff0c;企业需要一个强大、灵活且安全的计算平台来支持其不断变化的业务需求。Amazon Elastic Compute Cloud&#xff08;EC2&#xff09;正是这样一个解决方案&#xff0c;它为企业提供了一个可扩展的云计算环境&#xff0c;帮助企业实现高效、低成本…

【课程系列11】某客时间AI 大模型应用开发实战营

某客时间AI 大模型应用开发实战营 链接 百度网盘&#xff0c;链接&#xff1a;https://pan.baidu.com/s/1ZC-fOC_QQjNM6wyVjQcYOg 课程详情 https://u.geekbang.org/subject/llm/ 初探大模型&#xff1a;起源与发展 预热篇&#xff1a;解码注意力机制&#xff08;Attentio…