一文解读 SmartX 超融合虚拟化下的网络 I/O 虚拟化技术

随着技术的不断发展,不少行业应用都对网络性能和隔离性有着越来越高的要求。例如:

  • 低延迟:一些期货行业用户选择在期货公司机房托管服务器并自行编写交易程序,以实现对市场波动的快速(微秒级)反应。尤其是在高频交易场景下,毫秒级甚至微秒级的延迟都可能对交易的最终受益带来较大影响。对于这些应用,降低网络延迟能够为业务价值带来显著提升。

  • 高带宽:科学计算、模拟和仿真等高性能计算工作负载通常涉及大规模数据的传输和处理。在科学研究、工程模拟、气象预测等领域,需要传输大量的数据;同时,高性能计算通常利用大规模的并行计算集群,其中包括数百甚至数千台计算节点。这些节点需要频繁地互相通信以同步计算结果、传递数据和协调计算任务。这些业务场景都需要高网络带宽来提升数据传输和整体计算效率。

针对这些需求,网络 I/O 虚拟化技术可以优化网络资源、提升 I/O 性能,目前有三种主流实现方式:仿真(Emulation)、半虚拟化(Para-virtualiztion)和直通(Pass-through)。为了帮助用户更好地实现网络优化,SmartX 在全新发布的超融合软件 SMTX OS 5.1 版本中新增了 PCI 网卡直通的能力结合之前版本已经支持的 SR-IOV 直通功能和虚拟网卡,SmartX 超融合可为原生虚拟化 ELF 集群提供完整的网络 I/O 虚拟化技术支持能力。用户可根据自己在网络性能、隔离性和成本投入上的实际需求选择最合适的方案,实现期货交易、高性能计算等多种高网络要求场景的生产级使用。

在本文中,我们将详细介绍 SmartX 超融合网络 I/O 虚拟化支持能力,并针对网卡在 PCI 直通和 SR-IOV 直通模式下的性能表现开展测试。 

SMTX OS 5.1 网络 I/O 虚拟化

功能特性

为了满足不同用户和应用场景需求,SMTX OS 5.1 新增了 PCI 网卡直通的功能。目前,对于 ELF 虚拟机,SMTX OS 支持虚拟网卡、SR-IOV 直通网卡、PCI 直通网卡三种网络设备。

  • 虚拟网卡:通过软件模拟物理网卡的功能,使得虚拟机可以与外部网络互联。

  • PCI 网卡直通:将主机上的网卡作为 PCI 直通网卡透传给虚拟机使用,该网卡由这台虚拟机独占。

  • SR-IOV 直通:将一个支持 SR-IOV 的物理网卡虚拟化出多个 VF (Virtual Function),作为 SR-IOV 直通网卡直接挂载给虚拟机使用,可实现多个虚拟机共享同一个物理网卡的通信能力。

每个主机上可以使用不同型号的网卡*,每个虚拟机可挂载多种网络设备。

*兼容列表见文末附录。

图片

虚拟网卡

虚拟网卡是虚拟化环境中使用最广泛的网络适配器,除了帮助虚拟机与网络通信之外,虚拟网卡还通过网络隔离策略确保了不同虚拟机之间的网络流量隔离,并可结合虚拟交换机(VDS)和虚拟机网络创建复杂的虚拟网络拓扑。

虚拟网卡具备相当优秀的灵活性和弹性:为虚拟机配置虚拟网卡后,可以根据需要再次修改配置,也可以通过克隆已有配置来加快新服务的部署速度;同时,由于消除了对硬件的依赖,虚拟机在快照和迁移时都可保留虚拟网卡的配置,可轻松将虚拟机迁移或重建至其他物理主机。

尽管在大部分场景下,虚拟网卡的性能已经可以满足需要,但通过仿真(E1000 类型的虚拟网卡使用此技术)或者半虚拟化(例如 VIRTIO 类型的虚拟网卡)来模拟物理网卡都会带来额外的性能开销。另外,如果某些业务虚拟机对网络要求较高,在共享 VDS 或虚拟机网络时,这些比较大的流量都会挤占其他虚拟机的正常流量,造成网络性能分配的失衡。

PCI 直通网卡

网卡直通利用了 PCIe Pass-through 的技术,允许虚拟机直接访问并使用 SMTX OS 主机上的网卡。直通网卡具有良好的兼容性,可以支持大部分 Guest OS 和符合 PCIe 总线标准的网卡。同时,由于虚拟机操作系统绕过了虚拟化层,直接使用物理网卡,缩短了数据传输的路径,使得虚拟机可以获得接近物理机使用物理网卡的性能与完整的硬件特性。此外,虚拟机独享物理网卡也提供了更高级别的隔离性。

然而,PCI 直通模式下,一张物理网卡不能同时直通给多个虚拟机使用,因此如果有多个虚拟机有通过直通网卡提升性能的需要时,需要保证主机上有多张物理网卡。另外,挂载了 PCI 直通网卡的虚拟机不支持 HA、热迁移等操作。

SR-IOV 直通网卡

SR-IOV (Single Root - I/O Virtualization) 是一种基于硬件的虚拟化解决方案,启用了 SR-IOV 能力的物理网卡*可被切分为多个 VF (Virtual Function) 并作为 SR-IOV 直通网卡被挂载给虚拟机使用,这允许了多台虚拟机共享一个物理网卡,在提升性能的同时兼顾性价比。用户可以按照实际的业务需求,为同一台虚拟机分配多个 SR-IOV 直通网卡。

* 该功能要求物理网卡本身具备 SR-IOV 特性,且对于特定网卡需要在操作系统中安装驱动。

适用场景

图片

配置方式

PCI 直通

图片

1. 配置主机

首先确保主机上要用于 PCI 直通的物理网卡符合 SMTX OS 兼容要求,详细型号可参考文末附录。

登录 CloudTower,为要直通的物理网卡所在主机开启 IOMMU 支持,并需确保主机 BIOS 中也已启用 IOMMU,完成后重启 SMTX OS 主机。

2. 配置网卡用途

登录 CloudTower,将网卡用途置为 PCI 直通。

3. 添加 PCI 直通网卡

编辑指定虚拟机,选择对应的物理网卡作为 PCI 直通网卡添加到虚拟机上。

SR-IOV 直通

图片

1. 配置主机
首先确保主机上的要用于 SR-IOV 直通的物理网卡符合 SMTX OS 兼容要求,详细型号可参考文末附录。

登录 CloudTower,为要直通的物理网卡所在主机开启 IOMMU 支持,并需确保主机 BIOS 中也已启用 IOMMU 和 SR-IOV,完成后重启 SMTX OS 主机。

2. 配置网卡用途并切分 VF
登录 CloudTower,将网卡用途置为 SR-IOV 直通;并根据实际需要和网卡的支持情况配置指定数量的 VF。

3. 添加 SR-IOV 直通网卡
编辑指定虚拟机,选择对应的物理网卡作为 SR-IOV 直通网卡添加到虚拟机上。

4. 配置虚拟机

根据物理网卡的型号与虚拟机的客户端操作系统,按需为虚拟机安装 VF 驱动。

性能测试

为了让读者直观感受 SMTX OS PCI 直通与 SR-IOV 直通能力,我们使用不同型号的网卡进行了性能测试。

PCI 直通

性能测试借助 netperf 和 iperf3 工具进行,对两种不同型号的网卡(Solarflare、Mellanox)展开 3 个场景的测试。测试结果以物理机到物理机(Host to Host)作为基准,通过对比挂载 PCI 直通网卡的虚拟机到虚拟机(VM to VM)、虚拟机到物理机(VM to Host)在不同测试场景下的吞吐量和延迟数据,分析得出使用 SMTX OS  PCI 直通的效果。

*硬件配置及测试工具见附录。

测试数据

图片

将 PCI 物理网卡直通给虚拟机后,网卡在 TCP 协议下的吞吐量会有小幅度的降低;这是因为虚拟机需要与物理主机上的其他虚拟机和应用程序共享物理资源,而 KVM 虚拟化通常需要额外的计算能力来处理这些管理和调度资源的任务,从而增加了处理开销和网络延迟。

图片

将 PCI 物理网卡直通给虚拟机后,网卡在 UDP 协议下的吞吐量同样会有小幅度的降低;降低是因为虚拟机的网络栈必须绕过虚拟化层直接与物理网络适配器通信,使用 PCI 直通网络设备可能会引入额外的开销,例如中断处理和内存访问。

图片


将 PCI 物理网卡直通给虚拟机后,网卡的延迟会有小幅提升;提升是因为虚拟机的网络栈必须绕过虚拟化层直接与物理网络适配器通信,使用 PCI 直通网络设备可能会引入额外的开销,例如中断处理和内存访问。这种开销的影响在 TCP 流量中更加明显,因为相对于 UDP 流量,TCP 流量往往涉及更频繁和更小的数据包。

测试结论

在 PCI 直通模式下,虚拟机可以直接访问物理网卡,但是这也会带来额外的开销,例如 DMA 编程、中断处理等,这些操作会消耗一定的 CPU 和内存资源。同时,虚拟化技术中多重层次的处理和转发也可能会导致网络吞吐量的降低。

但是,这样的额外开销占比非常小。因此,排除部分干扰因素,物理网卡使用 PCI 直通可以获得与物理网卡极接近的性能,完全能够满足虚拟机网络环境低延迟的需求。

SR-IOV 直通

为验证使用 SR-IOV 直通网卡能否获得与物理机接近的性能,我们使用 sfnettest 工具对不同型号网卡进行了性能测试。以物理机到物理机(Host to Host)、挂载 VIRTIO 网卡的虚拟机到虚拟机(VM to VM)的测试数据作为基准,通过对比挂载 SR-IOV 直通网卡的虚拟机到虚拟机(VM to VM)、虚拟机到物理机(VM to Host)在不同测试场景下的延迟数据,分析 SR-IOV 直通网卡的性能水平。

对于 Solarflare 和 Mellanox 网卡,结合了各自的加速方案,对比启用加速前后的数据。

*硬件配置及测试工具见附录。

测试数据

图片

跨交换机的连接方式下,与基准测试中 Host to Host 的平均延迟 14.4 us 相比,使用 SR-IOV 直通网卡在不使用加速方案的情况下,在 VM to VM、VM to Host 场景下均可提供与物理机接近的性能。Mellanox 网卡结合加速方案,在各场景下均可进一步降低延迟至 2-3 us。

图片

直连方式下,与基准测试中 VM to VM 使用 VIRTIO 网卡的平均延迟 63 us 相比,使用 SR-IOV 直通网卡在不使用加速方案的情况下,在 VM to VM 和 VM to Host 场景下均可大幅降低延迟。Solarflare 网卡结合加速方案,在各场景下还可进一步降低延迟至 2-3 us。

*期货公司一个交易订单的数据量大小通常为 64~128 个字节,本次测试均采用发包大小为 64 字节(size=64)的延迟平均值(mean)进行对比。

测试结论

在 SR-IOV 直通模式下,虚拟机可以直接访问物理网卡虚拟化出的 VF。排除部分额外开销带来的影响,虚拟机使用 SR-IOV 直通网卡相比于使用 VIRTIO 网卡可以大幅降低延迟,并获得与物理机极接近的延迟性能。结合加速方案, Solarflare 网卡和 Mellanox 网卡平均延迟还可以得到进一步降低。


作为 SmartX HCI 的核心软件,SMTX OS 5.1 以自主研发的分布式存储 ZBS 与原生虚拟化 ELF 为企业 IT 提供强大的虚拟化与存储支持。欲了解更多新增功能与特性,请阅读:

  • SmartX HCI 5.1 发布:是超融合,更是虚拟化与容器生产级统一架构

  • GPU 直通 & vGPU:超融合为 GPU 应用场景提供高性能支持

  • 动态资源平衡:主流虚拟化 DRS 机制分析与 SmartX 超融合的实现优化

  • 照亮虚拟网络流量“盲区”:超融合网络流量可视化功能解读

  • 从物理机/云平台迁移至超融合?SMTX CloudMove 帮你实现

您还可扫描下方二维码,获取两册《SmartX 超融合技术原理与特性解析合集》,了解 SMTX OS 更多技术特性和测试数据。

《(一)虚拟化与存储》

《(二)管理与运维》

附录

SMTX OS 5.1 网卡兼容性列表

图片

*对于 PCI 直通,此处仅列出了经过测试的网卡。

PCI 直通性能测试

硬件配置

图片

图片

测试工具

图片

SR-IOV 直通性能测试

硬件配置

图片

设备 1:Solarflare 测试物理机

图片

设备 2:Mellanox 网卡测试物理机

图片

测试工具

图片

推荐阅读:

  • 动态资源平衡:主流虚拟化 DRS 机制分析与 SmartX 超融合的实现优化

  • GPU 直通 & vGPU:超融合为 GPU 应用场景提供高性能支持

  • 新建集群 vs. 滚动升级:如何选择超融合服务器硬件平滑升级方案?

  • 照亮虚拟网络流量“盲区”:超融合网络流量可视化功能解读

  • 一文了解 SmartX 超融合硬盘健康检测机制与运维实践

  • 不止弹性,更加灵活。一文了解 SmartX 超融合如何扩容

  • 如何利用 SmartX 存储性能测试工具 OWL 优化性能管理?

  • 通过弹性副本恢复策略平衡数据恢复速度与业务 I/O 性能

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

并查集讲解

并查集讲解 一、算法描述二、图示讲解三、代码示例四、例题练习 一、算法描述 并查集算法是一种用于处理不相交集合数据结构的算法。它经常被用来解决网络流问题、图的最小生成树问题等。在这篇博客中,我们将深入理解并查集算法,以及如何在实际编程中使…

设计模式思维导图

ProcessOn思维导图链接

睿趣科技:抖音小店申请流程

随着移动互联网的发展,越来越多的人开始尝试通过开设网店来创业。抖音作为国内最受欢迎的短视频平台之一,也推出了自己的电商功能——抖音小店。那么,如何申请抖音小店呢?下面就为大家详细介绍一下抖音小店的申请流程。 首先,打开…

基于springboot实现CSGO赛事管理系统【项目源码+论文说明】计算机毕业设计

基于SpringBoot实现CSGO赛事管理系统演示 摘要 CSGO赛事管理系统是针对CSGO赛事管理方面必不可少的一个部分。在CSGO赛事管理的整个过程中,CSGO赛事管理系统担负着最重要的角色。为满足如今日益复杂的管理需求,各类的管理系统也在不断改进。本课题所设计…

Redis的五种常用(基本)数据类型

目录 1、Redis简介 2、五种常用(基本)数据类型 2.1 String 数据结构 ⭐常用用法 举例(Linux版本) 2.2 List 数据结构 ⭐常用用法 举例(Linux版本) 2.3 Set 数据结构 ⭐常用用法 举例&#xf…

youyeetoo R1卡片电脑(rk3588s)

简介: youyeetoo R1 是风火轮科技专为AIOT市场设计的嵌入式主板(SBC),体积小但功能强大,搭载瑞芯微旗舰级RK3588s 八核64位处理器,8nm 制程,主频高达2.4GHz,集成ARM Mali-G610 MP4 GPU,内置6 To…

「必看」一分钟学会!Steam账号注册全攻略!

Steam账号注册详细教程,你值得拥有!💥 👋 Hello各位亲爱的小伙伴们!今天我要给大家带来的是一份超详细的Steam账号注册教程,让你轻松成为Steam世界的合法居民!🎉🎉 1️…

2023版 STM32实战11 SPI总线读写W25Q

SPI全称 英文全称:Serial peripheral Interface 串行外设接口 SPI特点 -1- 串行(逐bit传输) -2- 同步(共用时钟线) -3- 全双工(收发可同时进行) -4- 通信只能由主机发起(一主,多从机) 开发使用习惯和理解 -1- CS片选一般配置为软件控制 -2- 片选低电平有效,从…

开源博客项目Blog .NET Core源码学习(4:生成验证码)

开源博客项目Blog中的后台管理登录界面中支持输入验证码(如下图所示),本文学习并记录项目中验证码的生成及调用方式。   博客项目中调用VerifyCode类生成验证码,该类位于App.Framwork项目中,命名空间为App.Framwork…

基于Java的线上花店管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding) 代码参考数据库参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

Redis数据类型

Redis数据类型 文章目录 Redis数据类型0.基本命令(1)key操作命令(2)注意 1.字符串(String)(1)set key value(2)mset /mget(3)getrange/setrange(4…

I/O模型之非阻塞IO

简介 五种IO模型   阻塞IO   非阻塞IO   信号驱动IO   IO多路转接    异步IO 代码书写 非阻塞IO 再次理解IO 什么是IO?什么是高效的IO? 为了理解后面的一个问题,我们首先要再重新理解一下什么是IO 在之前的网络介绍中&#xff…

C算法:输入一个数n,输出1到n之间所有的质数

需求: 写一个函数,输入一个数n,输出1到n之间所有的质数。(注:质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数。) 输入样例: 10 …

又是一年1024程序员日

程序员节是每年的10月24日,这是一个特殊的节日,旨在庆祝和表彰程序员们对科技和社会的贡献。作为技术领域的从业者,程序员们在现代社会中扮演着重要的角色,他们致力于编写、测试和维护软件代码,为我们的生活带来了无数…

【原创】解决Kotlin无法使用@Slf4j注解的问题

前言 主要还是辟谣之前的网上的用法,当然也会给出最终的使用方法。这可是Kotlin,关Slf4j何事!? 辟谣内容:创建注解来解决这个问题 例如: Target(AnnotationTarget.CLASS) Retention(AnnotationRetentio…

【Excel】WPS单元格快速转换表格字母大小写

使用WPS Office打开表格,选择需要处理的单元格或单元格区域。 依次点击「会员专享」选项卡 —>「智能工具箱」。 再点击「格式」—>「大小写」,选择一种大小写转换方式即可。

Hadoop3教程(三十):(生产调优篇)纠删码

文章目录 (155)纠删码原理纠删码原理纠删码相关命令纠删码策略解释 (156)纠删码案例实操参考文献 (155)纠删码原理 纠删码原理 默认情况下,一个文件在HDFS里会保留3个副本,以此提高…

uniapp map polygons 区域填充色(fillColor)在ios显示正常,但在安卓手机显示是黑色的,怎么解决?

uniapp map polygons 区域填充色&#xff08;fillColor&#xff09;在ios显示正常&#xff0c;但在安卓手机显示是黑色的,怎么解决&#xff1f; <MapPage :longitude"item.centerCoord[0]" :latitude"item.centerCoord[1]":polygons"[{ points: it…

Qt作业九

1、思维导图 2、作业 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimer> #include <QTime> #include <QTimerEvent> #include <QTextToSpeech>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAME…

JAVA入门总结回顾

1.常用的DOS命令&#xff1a;DOS窗口常用命令-CSDN博客 2.检查jdk是否安装成功&#xff1a;在cmd中输入java -version或者java或者javac。出现相应的对应显示内容。 3.JDK&#xff0c;JRE之间的关系&#xff1a;JDK是JAVA的开发工具包&#xff0c;JRE是JAVA的的运行环境。JRE…