CN118331687A - 用户态半虚拟化数据路径加速方法、设备、集群以及介质 - Google Patents

用户态半虚拟化数据路径加速方法、设备、集群以及介质 Download PDF

Info

Publication number
CN118331687A
CN118331687A CN202410758966.5A CN202410758966A CN118331687A CN 118331687 A CN118331687 A CN 118331687A CN 202410758966 A CN202410758966 A CN 202410758966A CN 118331687 A CN118331687 A CN 118331687A
Authority
CN
China
Prior art keywords
paravirtualized
data
user
data path
path acceleration
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202410758966.5A
Other languages
English (en)
Inventor
陈森法
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhuhai Xingyun Zhilian Technology Co Ltd
Original Assignee
Zhuhai Xingyun Zhilian Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhuhai Xingyun Zhilian Technology Co Ltd filed Critical Zhuhai Xingyun Zhilian Technology Co Ltd
Priority to CN202410758966.5A priority Critical patent/CN118331687A/zh
Publication of CN118331687A publication Critical patent/CN118331687A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本申请提供了一种用户态半虚拟化数据路径加速方法、设备、集群以及介质。所述方法包括:在所述数据平面开发套件中创建第一用户态半虚拟化数据路径加速设备,其中,所述第一用户态半虚拟化数据路径加速设备具有第一文件描述信息;在所述数据平面开发套件和所述数据平面开发套件监测器之间创建后域套接字通道;将所述第一文件描述信息通过所述后域套接字通道发送给所述数据平面开发套件监测器进行引用;在所述数据平面开发套件崩溃时,所述数据平面开发套件监测器保持对所述文件描述信息的引用。

Description

用户态半虚拟化数据路径加速方法、设备、集群以及介质
技术领域
本申请涉及计算机领域,尤其涉及一种用户态半虚拟化数据路径加速方法、设备、集群以及介质。
背景技术
半虚拟化数据路径加速(virtio Data Path Acceleration,vDPA)是一种用于虚拟化环境中的数据路径加速技术,旨在提高虚拟机对宿主机的物理设备的访问性能和效率。半虚拟化数据路径加速技术通过将数据路径加速功能从宿主机的物理设备中抽象出来,使其成为虚拟机直接访问的设备,从而减少了虚拟机和宿主机的物理设备之间的通信开销,提高了数据传输的效率和性能。
半虚拟化数据路径加速是一种控制面基于虚拟主机(vhost)协议,数据面基于虚拟输入输出(virtio)协议的硬件卸载方案。虚拟主机协议是一种用于虚拟化环境中的协议,旨在提高虚拟机对宿主机的物理设备的访问性能和效率。具体来说,虚拟主机协议允许虚拟机直接与宿主机的物理设备进行通信,绕过虚拟化软件(如Hypervisor)的数据包处理过程,从而减少了数据传输的延迟和提高了网络性能。虚拟输入输出(virtio)协议定义了一组虚拟设备规范,这些虚拟设备能够在虚拟机和宿主机的物理设备之间进行高效的数据传输。通过使用虚拟输入输出协议,虚拟机可以直接与宿主机的物理设备进行通信,而无需通过额外的中间层,从而提高了虚拟机的性能和效率。因此,半虚拟化数据路径加速技术的出现使得虚拟机可以直通(pass-throuth)到物理设备,同时利用虚拟主机技术,支持虚拟机的热迁移。
半虚拟化数据路径加速可以包括用户态半虚拟化数据路径加速。用户态半虚拟化数据路径加速可以是基于数据平面开发套件(Data Plane Development Kit,DPDK)开发的,使用虚拟主机-用户(vhost-user)协议与模拟器(例如,qemu)交互,完成虚拟输入输出的控制面协商。数据平面开发套件是一种用户态驱动,开发、调试、升级方便,因此相比内核态半虚拟化数据路径加速,使用者更多。
但是,在数据平面开发套件中的应用程序崩溃或者升级的时候,虚拟机会感知输入输出(Input/Output,IO)中断,导致用户的体验变差。
发明内容
本申请提供了一种用户态半虚拟化数据路径加速方法、设备、集群以及介质,能够在数据平面开发套件中的应用程序崩溃或者升级的时候,不感知IO中断。
第一方面,提供了一种用户态半虚拟化数据路径加速方法,应用于用户态半虚拟化数据路径加速系统,所述用户态半虚拟化数据路径加速系统包括:数据处理设备以及宿主机,所述数据处理设备用于通过外围组件互连扩展连接宿主机;所述宿主机用于运行一个或者多个虚拟机,并提供所述虚拟机对所述数据处理设备的访问的用户态半虚拟化数据路径加速,其中,所述用户态半虚拟化数据路径加速包括所述虚拟机和所述数据处理设备之间的基于虚拟输入输出协议的数据平面直通以及基于虚拟主机协议的控制平面协商,所述宿主机包括:数据平面开发套件以及数据平面开发套件监测器,所述方法包括:
在所述数据平面开发套件中创建第一用户态半虚拟化数据路径加速设备,其中,所述第一用户态半虚拟化数据路径加速设备具有第一文件描述信息;
在所述数据平面开发套件和所述数据平面开发套件监测器之间创建后域套接字通道;
将所述第一文件描述信息通过所述后域套接字通道发送给所述数据平面开发套件监测器进行引用;
在所述数据平面开发套件崩溃时,所述数据平面开发套件监测器保持对所述文件描述信息的引用。
在一些可能的设计中,所述方法还包括:
在所述数据平面开发套件中创建第二用户态半虚拟化数据路径加速设备,其中,所述第二用户态半虚拟化数据路径加速设备具有第二文件描述信息;
将所述第一文件描述信息通过所述后域套接字通道发送给所述数据平面开发套件监测器进行引用,包括:
将所述第一文件描述信息以及所述第二文件描述信息通过所述后域套接字通道发送给所述数据平面开发套件监测器进行引用,其中,所述第一文件描述符的值不同于所述第二文件描述符的值。
在一些可能的设计中,所述宿主机还包括模拟器,其中,所述模拟器用于运行所述虚拟机,所述虚拟机中设置有虚拟输入输出驱动,所述数据平面开发套件包括半虚拟化数据路径加速驱动,所述半虚拟化数据路径加速驱动包括第一半虚拟化数据路径加速驱动以及第二半虚拟化数据路径加速驱动,所述第一半虚拟化数据路径加速驱动对应于所述第一用户态半虚拟化数据路径加速设备,所述第二半虚拟化数据路径加速驱动对应于所述第二用户态半虚拟化数据路径加速设备,所述方法还包括:
在所述模拟器的虚拟机和所述数据平面开发套件的第一用户态半虚拟化数据路径加速驱动之间创建与所述第一用户态半虚拟化数据路径加速设备对应的第一前域套接字通道,其中,所述第一前域套接字通道用于实现所述虚拟机和所述第一用户态半虚拟化数据路径加速驱动之间的通讯;
在所述模拟器和所述数据平面开发套件的第二用户态半虚拟化数据路径加速驱动之间创建与所述第二用户态半虚拟化数据路径加速设备对应的第二前域套接字通道,其中,所述第二前域套接字通道用于实现所述虚拟机和所述第二用户态半虚拟化数据路径加速驱动之间的通讯。
在一些可能的设计中,所述数据处理设备用于提供一个或者多个外围组件互连扩展设备,所述宿主机还包括虚拟功能输入输出-外围组件互连,所述虚拟机和所述数据处理设备之间的基于虚拟主机协议的控制平面协商是通过所述虚拟输入输出驱动、所述半虚拟化数据路径加速驱动、虚拟功能输入输出-外围组件互连以及所述外围组件互连扩展设备之间相互协商来实现的。
在一些可能的设计中,所述数据平面开发套件中包括第一容器以及第二容器,所述第一容器包括第一组,所述第二容器包括第二组,所述第一用户态半虚拟化数据路径加速设备设置于所述第一组中,所述第二用户态半虚拟化数据路径加速设备设置于所述第二组中。
在一些可能的设计中,所述第一文件描述信息用于指示所述第一容器、所述第一组以及所述第一用户态半虚拟化数据路径加速设备中的一种或者多种。
在一些可能的设计中,所述数据平面开发套件监测器用于在数据平面开发套件监测器崩溃之后,通过系统服务重启所述数据平面开发套件监测器。
在一些可能的设计中,在所述数据平面开发套件和所述数据平面开发套件监测器中至少一个没有崩溃的情况下,所述虚拟机和所述数据处理设备之间的通讯不会中断。
在一些可能的设计中,所述方法还包括:
将所述数据平面开发套件删除,并重新按照新的数据平面开发套件,以对所述数据平面开发套件进行升级。
第二方面,提供了一种计算机设备,所述计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现根据第一方面任一项所述的方法。
第三方面,提供了一种计算机设备集群,所述计算机设备集群包括多个计算机设备,其中一个计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现根据第一方面任一项所述的方法。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机设备上运行时使得所述计算机设备执行根据第一方面任一项所述的方法。
附图说明
为了更清楚地说明本发明实施例或背景技术中的技术方案,下面将对本发明实施例或背景技术中所需要使用的附图进行说明。
图1是本申请提供的一种用户态半虚拟化数据路径加速系统的结构示意图;
图2是本申请提供的一种处理器的硬件结构示意图;
图3是本申请提供的一种文件描述符同步方法的流程示意图;
图4是本申请提供的一种计算设备的结构示意图。
具体实施方式
下面结合本发明实施例中的附图对本发明实施例进行描述。本发明的实施方式部分使用的术语仅用于对本发明的具体实施例进行解释,而非旨在限定本发明。
参见图1,图1是本申请提供的一种用户态半虚拟化数据路径加速系统的结构示意图。如图1所示,本申请的用户态半虚拟化数据路径加速系统可以包括宿主机110、数据处理设备120。
宿主机110可以通过硬件结构以及软件结构两方面进行详细的介绍。
从硬件结构来说,宿主机110包括第一处理器210、内存220。第一处理器210通过双倍速率(double data rate,DDR)总线230和内存220相连。这里,不同的内存220可能采用不同的数据总线与第一处理器210通信,因此双倍速率总线230也可以替换为其他类型的数据总线,本申请实施例不对总线类型进行限定。
第一处理器210是宿主机110的运算核心和控制核心。第一处理器210中可以包括一个或多个核(core)211。第一处理器210可以是一块超大规模的集成电路。在第一处理器210中安装有操作系统和其他软件程序,从而第一处理器210能够实现对内存220的访问。可以理解的是,在本发明实施例中,第一处理器210中的核(core)211例如可以是中央处理器(Central Processing unit,CPU),可以是其他特定集成电路(Application SpecificIntegrated Circuit,ASIC)。第一处理器210还可以是其他通用处理器、数字信号处理器(digital signal processing,DSP)、专用集成电路(application specific integratedcircuit,ASIC)、现场可编程门阵列(field programmable gate array, FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。图2中仅仅以一个第一处理器210为例,在实际应用中,宿主机110也可以包括多个第一处理器210。
内存220是宿主机110的主存。内存220通常用来存放操作系统中各种正在运行的软件、输入和输出数据以及与外存交换的信息等。为了提高第一处理器210的访问速度,内存220需要具备访问速度快的优点。在传统的计算机系统架构中,通常采用动态随机存取存储器(Dynamic Random Access Memory,DRAM)作为内存220。第一处理器210能够通过内存控制器高速访问内存220,对内存220中的任意一个存储单元进行读操作和写操作。除了动态随机存取存储器之外,内存220还可以是其他随机存取存储器,例如静态随机存取存储器(Static Random Access Memory,SRAM)等。另外,内存220也可以是只读存储器(Read OnlyMemory, ROM)。而对于只读存储器,举例来说,可以是可编程只读存储器(ProgrammableRead Only Memory,PROM)、可抹除可编程只读存储器(Erasable Programmable Read OnlyMemory,EPROM)等。本实施例不对内存220的数量和类型进行限定。此外,可对内存220进行配置使其具有保电功能。保电功能是指系统发生掉电又重新上电时,存储器中存储的数据也不会丢失。具有保电功能的内存220被称为非易失性存储器。
此外,宿主机110还可以包括基板管理控制器(Baseboard ManagementController, BMC)240。基板管理控制器240可以对设备进行固件升级,对设备的运行状态进行管理以及排除故障等。第一处理器210可通过PCIe总线或者USB、I2C等总线访问基板管理控制器240。基板管理控制器240还可以和至少一个传感器相连。通过传感器获取计算机设备的状态数据,其中状态数据包括:温度数据,电流数据、电压数据等等。在本申请中不对状态数据的类型做具体限制。基板管理控制器240通过外围组件互连扩展(PeripheralComponent Interconnect Express,PCIe)总线或者其他类型的总线和第一处理器210通信,例如,将获取到的状态数据,传递给第一处理器210进行处理。基板管理控制器240还可以对宿主机110内的电源电路或时钟电路进行控制等。总之,基板管理控制器240可以通过以上方式实现对宿主机110的管理。然而,基板管理控制器240只是一个可选设备。在一些实施方式中,第一处理器210可以直接和传感器通信,从而对计算机设备直接进行管理和维护。图2中仅仅示例出了部分处理器的器件,在实际应用中,处理器的器件还可以包括更多的器件,此处不作具体限定。
从软件方面来说,宿主机110可以包括模拟器111、数据平面开发套件 112、虚拟功能输入输出-外围组件互连(vfio-pci)113。
模拟器111可以是快速模拟器(Quick EMUlator,QEMU)。QEMU可以作为虚拟机监视器,允许在一个物理主机上同时运行多个虚拟机。这些虚拟机可以运行不同的操作系统,如Linux、Windows等。QEMU通过虚拟化技术来实现虚拟机的隔离和管理,使得用户可以在单个物理主机上实现多个虚拟环境。
模拟器111中可以运行有一个或者多个虚拟机(Virtual Machine,VM)115。虚拟机115虚拟机是指在软件上模拟的完整计算机系统,它可以模拟硬件平台并在其上运行操作系统和应用程序。虚拟机使得多个操作系统能够在一个物理机器上同时运行,每个操作系统均在各自的虚拟机环境中运作,彼此隔离,但共享物理机器的资源(如CPU、内存、硬盘空间和I/O设备)。
虚拟机115中可以运行有虚拟输入输出驱动(virtio driver)116。虚拟输入输出驱动116用于与虚拟化环境中的虚拟设备进行通信的驱动程序。在虚拟化环境中,虚拟机(VM)需要与虚拟化宿主机之间进行通信,以便访问网络、存储和其他设备。为了实现这种通信,通常需要虚拟设备和相应的设备驱动程序。虚拟输入输出驱动程序是一种为虚拟设备提供的通用驱动程序,它们可以在虚拟机和宿主之间建立高效的通信通道。
数据平面开发套件112是一个开源的数据平面开发工具包,旨在帮助网络应用程序在通用处理器上实现高性能的数据包处理,它提供了一组优化的用户态网络库和驱动程序,可以最大程度地利用现代多核处理器的性能,从而在软件定义网络(SDN)、网络功能虚拟化(NFV)等领域实现高吞吐量和低延迟的数据包处理。
半虚拟化数据路径加速驱动117是用于支持半虚拟化数据路径加速技术的设备驱动程序。半虚拟化数据路径加速驱动的作用是允许虚拟化环境中的虚拟机或容器直接访问支持半虚拟化数据路径加速技术的硬件设备,并利用其提供的网络加速功能。这些驱动程序通常由硬件供应商或开源社区提供,并与常见的虚拟化平台(如KVM、Xen、VMware)兼容。半虚拟化数据路径加速技术旨在提高虚拟化环境中的网络性能,通过将数据包的处理任务从虚拟机或容器中的软件栈转移到专用的硬件设备(如网卡)上来实现。这种技术可以减轻虚拟化环境中的CPU负载,降低数据包处理的延迟,并提高网络吞吐量。
虚拟功能输入输出-外围组件互连 113用于实现设备的虚拟化和直接分配给虚拟机使用。它是虚拟功能输入/输出(Virtual Function I/O,VFIO)框架的一部分,VFIO框架允许用户空间应用程序直接控制设备,从而提供了更低的虚拟化开销和更好的性能。虚拟功能输入输出-外围组件互连允许用户将物理设备(通常是 PCI 设备)直接分配给虚拟机,这意味着虚拟机可以完全访问设备的功能,而无需通过宿主操作系统。使用虚拟功能输入输出-外围组件互连,用户可以通过配置相应的设备标识符来告知VFIO框架要分配哪些设备给虚拟机。然后,QEMU将设备映射到虚拟机的地址空间,使得虚拟机可以直接访问设备。这种直接访问的方式通常比传统的虚拟化方法(如通过虚拟化的设备模拟器)提供更好的性能和功能支持。
数据处理设备120可以包括网卡(Network Interface Card)以及数据处理单元(Data Processing Unit,DPU)。其中,网卡也称为网络适配器或网络接口控制器,是一种计算机硬件设备,用于将计算机连接到局域网(LAN)或广域网(WAN)。网卡负责在计算机和网络之间进行数据传输,并提供计算机与网络之间的物理连接和数据通信功能。网卡通常安装在宿主机的主板上,或通过外部接口(如USB、PCIe)连接到计算机。它们具有一个或多个网络接口(通常是Ethernet端口),用于插入网络电缆(如Ethernet电缆)。DPU是数据处理单元的缩写,它是一种专用硬件加速器,旨在处理数据中心中的数据密集型任务。DPU通常与CPU、GPU和FPGA等通用处理器一起使用,用于加速数据中心工作负载的处理。
数据处理设备120中可以设置一个或者多个外围组件互连扩展设备121。外围组件互连扩展设备121是连接到PCIe总线上的外部设备或组件。PCIe是一种高速串行扩展总线标准,用于连接计算机内部各种外围设备,如图形卡、网卡、存储控制器、声卡等。PCIe设备通过PCIe插槽或者集成在宿主机110上的插槽连接到宿主机110。外围组件互连扩展设备121可以是通过网卡数据处理设备120模拟出来的设备。
这里,半虚拟化数据路径加速驱动117和模拟器111之间可以通过虚拟主机-用户协议的域套接字,例如,Unix域套接字(Unit Domain Socket,UDS)通道进行通信。其中,UDS通道是一种用于在同一台计算机上进行进程间通信的机制。与传统的网络套接字不同,Unix域套接字不涉及网络协议栈,而是直接在操作系统的文件系统中创建一个特殊类型的文件,进程可以通过该文件进行通信。Unix域套接字通常以文件路径的形式存在于文件系统中,例如,/tmp/my_socket。进程可以通过调用系统函数来创建、连接、发送和接收数据,就像操作网络套接字一样。因为不涉及网络协议栈的开销,Unix域套接字通常比网络套接字具有更高的性能和更低的延迟。其中,模拟器111和数据平面开发套件112之间的UDS通道的数量和数据平面开发套件112中的半虚拟化数据路径加速设备的数量是相同的。举个例子说明,假设数据平面开发套件112中有两个半虚拟化数据路径加速设备,第一用户态半虚拟化数据路径加速设备以及第二用户态半虚拟化数据路径加速设备,那么,模拟器111和数据平面开发套件112之间的域套接字通道的数量可以是两个,第一域套接字通道以及第二域套接字通道。其中,第一域套接字通道和第一用户态半虚拟化数据路径加速设备对应,第二域套接字通道和第二用户态半虚拟化数据路径加速设备对应。
数据平面开发套件监测器118可以是轻量级的应用,并且,数据平面开发套件监测器118可以和数据平面开发套件112都采用系统(systemd)服务来管理。其中,系统服务可以用于启动、停止、重启、状态检查等操作。也就是说,在数据平面开发套件112和数据平面开发套件监测器118出现了崩溃的情况下,可以通过系统(systemd)服务将数据平面开发套件112和数据平面开发套件监测器118重启。
在图1所示的用户态半虚拟化数据路径加速系统的基础之上,如图3所示,本申请提供了一种文件描述符(File Descriptor,FD)同步方法的流程示意图。如图3所示,本申请的FD同步方法包括如下步骤:
S101:在数据平面开发套件中创建第一用户态半虚拟化数据路径加速设备。
在一具体的实施方式中,第一用户态半虚拟化数据路径加速设备可以通过以下的方式进行创建:
(1)加载虚拟功能输入输出-外围组件互连。首先,可以使用modprobe命令加载虚拟功能输入输出-外围组件互连驱动。例如,协议采用以下指令modprobe vfio-pci实现加载虚拟功能输入输出-外围组件互连。
(2)绑定第一用户态半虚拟化数据路径加速设备到虚拟功能输入输出-外围组件互连:绑定第一用户态半虚拟化数据路径加速设备到虚拟功能输入输出-外围组件互连可以通过将第一用户态半虚拟化数据路径加速设备的PCI地址添加到虚拟功能输入输出-外围组件互连的绑定列表来实现,实现方式可以包括以下中的任意一种:
(a)使用echo命令在/sys/bus/pci/drivers/vfio-pci/bind文件中写入第一用户态半虚拟化数据路径加速设备的PCI地址。
(b)使用dpdk-devbind.py工具中的--bind参数将第一用户态半虚拟化数据路径加速设备绑定到虚拟功能输入输出-外围组件互连。
(3)创建第一容器(container)。其中,容器用于对半虚拟化数据路径加速设备进行管理,例如,当存在多个半虚拟化数据路径加速设备时,可以将其中一部分半虚拟化数据路径加速设备设置在第一容器中,其他半虚拟化数据路径加速设备可以设置在第二容器中。继续以上述的例子为例,第一用户态半虚拟化数据路径加速设备可以设置在第一容器中,因此,需要创建第一容器。
(4)创建第一容器的第一组。其中,容器中的半虚拟化数据路径加速设备通常被组织成一个或多个组。组是一个逻辑实体,用于集中管理一组相关的半虚拟化数据路径加速设备。在数据平面开发套件应用程序中,可以根据需要创建一个或多个组。例如,第一容器中的半虚拟化数据路径加速设备的其中一部分半虚拟化数据路径加速设备设置在第一组中,第一个容器中的半虚拟化数据路径加速设备的半虚拟化数据路径加速设备的另一部分半虚拟化数据路径加速设备置在第二组中。继续以上述的例子为例,第一用户态半虚拟化数据路径加速设备可以设置在第一容器的第一组中。
(5)创建第一用户态半虚拟化数据路径加速设备。在容器和组创建好之后,就可以在第一容器以及第一组中创建第一用户态半虚拟化数据路径加速设备。
S102:在数据平面开发套件和模拟器之间创建第一用户态半虚拟化数据路径加速设备对应的第一前域套接字通道。
第一前域套接字通道为数据平面开发套件和模拟器之间进行通信的域套接字通道。域套接字通道是一种用于在同一台计算机上进行进程间通信的机制。与传统的网络套接字不同,Unix域套接字不涉及网络协议栈,而是直接在操作系统的文件系统中创建一个特殊类型的文件,进程可以通过该文件进行通信。Unix域套接字通常以文件路径的形式存在于文件系统中,例如,/tmp/my_socket。进程可以通过调用系统函数来创建、连接、发送和接收数据,就像操作网络套接字一样。因为不涉及网络协议栈的开销,Unix域套接字通常比网络套接字具有更高的性能和更低的延迟。首先,你需要在文件系统中创建一个Unix域套接字。Unix域套接字实际上是一个文件,因此,可以使用类似于socket()系统调用(在C语言中)或者相应的库函数(在高级语言中)来创建它。创建套接字时,需要指定通信协议为AF_Unix。
在数据平面开发套件和模拟器之间创建第一用户态半虚拟化数据路径加速设备对应的第一前域套接字通道的过程为:
(1)建第一套接字文件。首先,需要确定第一套接字文件的位置和名称。第一套接字文件通常以文件系统路径的形式存在,并且可以在文件系统的任何位置创建。
(2)绑定第一套接字。在创建第一套接字后,需要将其绑定到特定的文件路径上。这通过bind()系统调用完成,指定第一套接字文件的路径。如果成功,第一套接字将与指定的文件路径关联。
(3)进行通信。一旦连接建立或者第一套接字准备好进行通信,就可以通过第一套接字发送和接收数据。
S103:在数据平面开发套件中创建第二用户态半虚拟化数据路径加速设备。
在一具体的实施方式中,第二用户态半虚拟化数据路径加速设备可以通过以下的方式进行创建:
(1)绑定第二用户态半虚拟化数据路径加速设备到虚拟功能输入输出-外围组件互连驱动:绑定第二用户态半虚拟化数据路径加速设备到虚拟功能输入输出-外围组件互连驱动可以通过将第二用户态半虚拟化数据路径加速设备的PCI地址添加到虚拟功能输入输出-外围组件互连的绑定列表来实现,实现方式可以包括以下中的任意一种:
(a)使用echo命令在/sys/bus/pci/drivers/vfio-pci/bind文件中写入第二用户态半虚拟化数据路径加速设备的PCI地址。
(b)使用dpdk-devbind.py工具中的--bind参数将第二用户态半虚拟化数据路径加速设备绑定到虚拟功能输入输出-外围组件互连。
(2)创建第二容器(container)。继续以上述的例子为例,第二用户态半虚拟化数据路径加速设备可以设置在第二容器中,因此,需要创建第二容器。
(3)创建第二容器的第一组。继续以上述的例子为例,第二用户态半虚拟化数据路径加速设备可以设置在第二容器的第一组中。
(4)创建第二用户态半虚拟化数据路径加速设备。在容器和组创建好之后,就可以在第二容器的第一组中创建第二用户态半虚拟化数据路径加速设备。
S104:在数据平面开发套件和模拟器之间创建第二用户态半虚拟化数据路径加速设备对应的第二前域套接字通道。
第二前域套接字通道为数据平面开发套件和模拟器之间进行通信的域套接字通道。
在数据平面开发套件和模拟器之间创建第二用户态半虚拟化数据路径加速设备对应的第二前域套接字通道的过程为:
(1)建第二套接字文件。首先,需要确定第二套接字文件的位置和名称。第二套接字文件通常以文件系统路径的形式存在,并且可以在文件系统的任何位置创建。
(2)绑定第二套接字。在创建第二套接字后,需要将其绑定到特定的文件路径上。这通过bind()系统调用完成,指定第二套接字文件的路径。如果成功,第二套接字将与指定的文件路径关联。
(3)进行通信。一旦连接建立或者第二套接字准备好进行通信,就可以通过第二套接字发送和接收数据。
S105:在数据平面开发套件和数据平面开发套件监测器之间创建后域套接字通道。
后域套接字通道是数据平面开发套件和数据平面开发套件监测器之间进行通信的域套接字通道。
S106:数据平面开发套件获取第一文件描述信息以及第二文件描述信息。
第一文件描述信息可以是文件描述符(File Descriptor,FD)等等。第一文件描述信息可以是一个整数值,用于标识第一用户态半虚拟化数据路径加速设备相关的资源,例如,容器、组、半虚拟化数据路径加速设备等等。FD的值的范围通常是从0开始的非负整数,其中,文件描述符的值为0时,可以被称为标准输入(stdin),文件描述符的值为1时,可以被称为标准输出(stdout),文件描述符的值为2时,可以被称为标准错误(stderr)。文件描述符来执行各种操作,包括读取、写入、关闭文件等。例如,通过文件描述符,可以使用系统调用(如read、write、close)来与文件进行交互,或者使用网络套接字进行网络通信。
第二文件描述信息可以是文件描述符(File Descriptor,FD)等等。第二文件描述信息可以是一个整数值,用于标识第二用户态半虚拟化数据路径加速设备相关的资源,例如,容器、组、半虚拟化数据路径加速设备等等。
S107:数据平面开发套件通过后域套接字通道将第一文件描述信息以及第二文件描述信息发送给数据平面开发套件监测器进行引用。
可以理解,图3所示的FD同步方法仅仅以半虚拟化数据路径加速设备的数量为两个进行说明,在实际应用中,半虚拟化数据路径加速设备可以是一个,也可以是更多,此处不作具体限定。
通过上述方法,在数据平面开发套件崩溃时,只要数据平面开发套件监测器还在,那么,第一文件描述符和第二文件描述符依然还有进程在引用,模拟器111就不会检测到半虚拟化数据路径加速驱动117和模拟器111之间的socket通信断开链接,同时虚拟功能输入输出-外围组件互连维护的dma remap的映射关系不会被释放,所以,虚拟机115和外围组件互连扩展设备121之间就不会出现IO中断。接着,只需要等待数据平面开发套件重启即可。只要不是数据平面开发套件和监测器同时崩溃,虚拟机就不会受影响。而且,数据平面开发套件监测器实现的功能简单和单一,数据平面开发套件监测器崩溃的概率几乎为0,那么,数据平面开发套件和数据平面开发套件监测器同时崩溃的概率就更低了。所以,上述方案实现了半虚拟化数据路径加速驱动的高可靠性。在数据平面开发套件升级,直接卸载旧应用,接着重新安装新应用即可,不需要先把虚拟机迁移走,才能升级数据平面开发套件。
图4是本申请实施例提供的一种计算设备的结构示意图,该计算设备400包括:一个或者多个第二处理器410、通信接口420以及存储器430。所述第二处理器410、通信接口420以及存储器430通过总线440相互连接。可选地,该计算设备400还可以包括输入/输出接口450,输入/输出接口450连接有输入/输出设备,用于接收用户设置的参数等。该计算设备400能够用于实现上述的本申请实施例中设备实施例或者系统实施例的部分或者全部功能;第二处理器410还能够用于实现上述的本申请实施例中方法实施例的部分或者全部操作步骤。例如,该计算设备400执行各种操作的具体实现可参照上述实施例中的具体细节,如第二处理器410用于执行上述方法实施例中部分或者全部步骤或者上述方法实施例中的部分或者全部操作。再例如,本申请实施例中,计算设备400可用于实现上述装置实施例中一个或者多个部件的部分或者全部功能,此外通信接口420具体可用于为了实现这些装置、部件的功能所必须的通讯功能等,以及第二处理器410具体可用于为了实现这些装置、部件的功能所必须的处理功能等。
应当理解的是,图4的计算设备400可以包括一个或者多个第二处理器410,并且多个第二处理器410可以按照并行化连接方式、串行化连接方式、串并行连接方式或者任意连接方式来协同提供处理能力,或者多个第二处理器410可以构成处理器序列或者处理器阵列,或者多个第二处理器410之间可以分成主处理器和辅助处理器,或者多个第二处理器410之间可以具有不同的架构如采用异构计算架构。另外,图4所示的计算设备400,相关的结构性描述及功能性描述是示例性且非限制性的。在一些示例性实施例中,计算设备400可以包括比图4所示的更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者具有不同的部件布置。
第二处理器410可以有多种具体实现形式,例如第二处理器410可以包括中央处理器(central processing unit,CPU)、图形处理器(graphic processing unit,GPU)、神经网络处理器(neural-network processing unit,NPU)、张量处理器(tensor processingunit,TPU)或数据处理器(data processing unit,DPU)等一种或多种的组合,本申请实施例不做具体限定。第二处理器410还可以是单核处理器或多核处理器。第二处理器410可以由CPU和硬件芯片的组合。上述硬件芯片可以是专用集成电路(application-specificintegrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(genericarray logic,GAL)或其任意组合。第二处理器410也可以单独采用内置处理逻辑的逻辑器件来实现,例如FPGA或数字信号处理器(digital signal processor,DSP)等。通信接口420可以为有线接口或无线接口,用于与其他模块或设备进行通信,有线接口可以是以太接口、局域互联网络(local interconnect network,LIN)等,无线接口可以是蜂窝网络接口或使用无线局域网接口等。
存储器430可以是非易失性存储器,例如,只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。存储器430也可以是易失性存储器,易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhancedSDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。存储器430也可用于存储程序代码和数据,以便于第二处理器410调用存储器430中存储的程序代码执行上述方法实施例中的部分或者全部操作步骤,或者执行上述设备实施例中的相应功能。此外,计算设备400可能包含相比于图4展示的更多或者更少的组件,或者有不同的组件配置方式。
总线440可以是快捷外围部件互连标准(peripheral component interconnectexpress,PCIe)总线,或扩展工业标准结构(extended industry standard architecture,EISA)总线、统一总线(unified bus,Ubus或UB)、计算机快速链接(compute express link,CXL)、缓存一致互联协议(cache coherent interconnect for accelerators,CCIX)等。总线440可以分为地址总线、数据总线、控制总线等。总线440除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
本申请还提供了一种计算设备集群,可以包括多个上述的计算设备,其中,计算设备的描述请参见图4以及相关描述。
本申请实施例提供的方法和设备是基于同一发明构思的,由于方法及设备解决问题的原理相似,因此方法与设备的实施例、实施方式、示例或实现方式可以相互参见,其中重复之处不再赘述。本申请实施例还提供一种系统,该系统包括多个计算设备,每个计算设备的结构可以参照上述所描述的计算设备的结构。该系统可实现的功能或者操作可以参照上述方法实施例中的具体实现步骤和/或上述装置实施例中所描述的具体功能,在此不再赘述。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,当所述计算机指令在计算机设备(如一个或者多个处理器)上运行时可以实现上述方法实施例中的方法步骤。所述计算机可读存储介质的处理器在执行上述方法步骤的具体实现可参照上述方法实施例中所描述的具体操作和/或上述装置实施例中所描述的具体功能,在此不再赘述。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。本申请实施例可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(如软盘、硬盘、磁带)、光介质、或者半导体介质。半导体介质可以是固态硬盘,也可以是随机存取存储器,闪存,只读存储器,可擦可编程只读存储器,电可擦可编程只读存储器,寄存器或任何其他形式的合适存储介质。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述。可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请实施例的精神和范围。本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并或删减;本申请实施例系统中的模块可以根据实际需要进行划分、合并或删减。如果本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (12)

1.一种用户态半虚拟化数据路径加速方法,其特征在于,应用于用户态半虚拟化数据路径加速系统,所述用户态半虚拟化数据路径加速系统包括:数据处理设备以及宿主机,所述数据处理设备用于通过外围组件互连扩展连接宿主机;所述宿主机用于运行一个或者多个虚拟机,并提供所述虚拟机对所述数据处理设备的访问的用户态半虚拟化数据路径加速,其中,所述用户态半虚拟化数据路径加速包括所述虚拟机和所述数据处理设备之间的基于虚拟输入输出协议的数据平面直通以及基于虚拟主机协议的控制平面协商,所述宿主机包括:数据平面开发套件以及数据平面开发套件监测器,所述方法包括:
在所述数据平面开发套件中创建第一用户态半虚拟化数据路径加速设备,其中,所述第一用户态半虚拟化数据路径加速设备具有第一文件描述信息;
在所述数据平面开发套件和所述数据平面开发套件监测器之间创建后域套接字通道;
将所述第一文件描述信息通过所述后域套接字通道发送给所述数据平面开发套件监测器进行引用;
在所述数据平面开发套件崩溃时,所述数据平面开发套件监测器保持对所述文件描述信息的引用。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述数据平面开发套件中创建第二用户态半虚拟化数据路径加速设备,其中,所述第二用户态半虚拟化数据路径加速设备具有第二文件描述信息;
将所述第一文件描述信息通过所述后域套接字通道发送给所述数据平面开发套件监测器进行引用,包括:
将所述第一文件描述信息以及所述第二文件描述信息通过所述后域套接字通道发送给所述数据平面开发套件监测器进行引用,其中,所述第一文件描述符的值不同于所述第二文件描述符的值。
3.根据权利要求2所述的方法,其特征在于,所述宿主机还包括模拟器,其中,所述模拟器用于运行所述虚拟机,所述虚拟机中设置有虚拟输入输出驱动,所述数据平面开发套件包括半虚拟化数据路径加速驱动,所述半虚拟化数据路径加速驱动包括第一半虚拟化数据路径加速驱动以及第二半虚拟化数据路径加速驱动,所述第一半虚拟化数据路径加速驱动对应于所述第一用户态半虚拟化数据路径加速设备,所述第二半虚拟化数据路径加速驱动对应于所述第二用户态半虚拟化数据路径加速设备,所述方法还包括:
在所述模拟器的虚拟机和所述数据平面开发套件的第一用户态半虚拟化数据路径加速驱动之间创建与所述第一用户态半虚拟化数据路径加速设备对应的第一前域套接字通道,其中,所述第一前域套接字通道用于实现所述虚拟机和所述第一用户态半虚拟化数据路径加速驱动之间的通讯;
在所述模拟器和所述数据平面开发套件的第二用户态半虚拟化数据路径加速驱动之间创建与所述第二用户态半虚拟化数据路径加速设备对应的第二前域套接字通道,其中,所述第二前域套接字通道用于实现所述虚拟机和所述第二用户态半虚拟化数据路径加速驱动之间的通讯。
4.根据权利要求3所述的方法,其特征在于,所述数据处理设备用于提供一个或者多个外围组件互连扩展设备,所述宿主机还包括虚拟功能输入输出-外围组件互连,所述虚拟机和所述数据处理设备之间的基于虚拟主机协议的控制平面协商是通过所述虚拟输入输出驱动、所述半虚拟化数据路径加速驱动、虚拟功能输入输出-外围组件互连以及所述外围组件互连扩展设备之间相互协商来实现的。
5.根据权利要求2至4任一项所述的方法,其特征在于,所述数据平面开发套件中包括第一容器以及第二容器,所述第一容器包括第一组,所述第二容器包括第二组,所述第一用户态半虚拟化数据路径加速设备设置于所述第一组中,所述第二用户态半虚拟化数据路径加速设备设置于所述第二组中。
6.根据权利要求5所述的方法,其特征在于,所述第一文件描述信息用于指示所述第一容器、所述第一组以及所述第一用户态半虚拟化数据路径加速设备中的一种或者多种。
7.根据权利要求1至4任一项所述的方法,其特征在于,所述数据平面开发套件监测器用于在数据平面开发套件监测器崩溃之后,通过系统服务重启所述数据平面开发套件监测器。
8.根据权利要求1至4任一项所述的方法,其特征在于,在所述数据平面开发套件和所述数据平面开发套件监测器中至少一个没有崩溃的情况下,所述虚拟机和所述数据处理设备之间的通讯不会中断。
9.根据权利要求1至4任一项所述的方法,其特征在于,所述方法还包括:
将所述数据平面开发套件删除,并重新按照新的数据平面开发套件,以对所述数据平面开发套件进行升级。
10.一种计算机设备,其特征在于,所述计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现根据权利要求1至9中任一项所述的方法。
11.一种计算机设备集群,其特征在于,所述计算机设备集群包括多个计算机设备,其中一个计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现根据权利要求1至9中任一项所述的方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机设备上运行时使得所述计算机设备执行根据权利要求1至9中任一项所述的方法。
CN202410758966.5A 2024-06-13 2024-06-13 用户态半虚拟化数据路径加速方法、设备、集群以及介质 Pending CN118331687A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410758966.5A CN118331687A (zh) 2024-06-13 2024-06-13 用户态半虚拟化数据路径加速方法、设备、集群以及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410758966.5A CN118331687A (zh) 2024-06-13 2024-06-13 用户态半虚拟化数据路径加速方法、设备、集群以及介质

Publications (1)

Publication Number Publication Date
CN118331687A true CN118331687A (zh) 2024-07-12

Family

ID=91768107

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410758966.5A Pending CN118331687A (zh) 2024-06-13 2024-06-13 用户态半虚拟化数据路径加速方法、设备、集群以及介质

Country Status (1)

Country Link
CN (1) CN118331687A (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9246702B1 (en) * 2012-01-31 2016-01-26 Cisco Technology, Inc. System and method for configuring service appliances as virtual line cards in a network environment
CN116257276A (zh) * 2023-05-09 2023-06-13 珠海星云智联科技有限公司 支持虚拟化硬件加速的虚拟宿主机用户后端升级方法
US20240004679A1 (en) * 2022-06-29 2024-01-04 Microsoft Technology Licensing, Llc Accelerating Networking by Multiplexing Driver Data Paths
CN117640747A (zh) * 2023-12-12 2024-03-01 北京志凌海纳科技有限公司 一种基于代理服务的vhost-user重连方法和系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9246702B1 (en) * 2012-01-31 2016-01-26 Cisco Technology, Inc. System and method for configuring service appliances as virtual line cards in a network environment
US20240004679A1 (en) * 2022-06-29 2024-01-04 Microsoft Technology Licensing, Llc Accelerating Networking by Multiplexing Driver Data Paths
CN116257276A (zh) * 2023-05-09 2023-06-13 珠海星云智联科技有限公司 支持虚拟化硬件加速的虚拟宿主机用户后端升级方法
CN117640747A (zh) * 2023-12-12 2024-03-01 北京志凌海纳科技有限公司 一种基于代理服务的vhost-user重连方法和系统

Similar Documents

Publication Publication Date Title
US10353714B1 (en) Non-disruptive upgrade of multipath drivers in information processing system
CN110063051B (zh) 用于重新配置服务器的系统和方法以及服务器
US20210232528A1 (en) Configurable device interface
US9519795B2 (en) Interconnect partition binding API, allocation and management of application-specific partitions
JP5608243B2 (ja) 仮想化環境においてi/o処理を行う方法および装置
US8830228B2 (en) Techniques for enabling remote management of servers configured with graphics processors
US9122515B2 (en) Completion notification for a storage device
EP2843552B1 (en) Method and system for executing callback functions delivered via a communication between a user-space application and the operating system kernel
US8904159B2 (en) Methods and systems for enabling control to a hypervisor in a cloud computing environment
US10509758B1 (en) Emulated switch with hot-plugging
JP2006018814A (ja) 仮想マシン環境におけるエミュレートされたデバイスの開発のためのシステムおよび方法
EP4053706A1 (en) Cross address-space bridging
WO2018162991A2 (en) Communication method and device for virtual base stations
CN115858103B (zh) 用于开放堆栈架构虚拟机热迁移的方法、设备及介质
CN111679889B (zh) 一种虚拟机的转换迁移方法和系统
JP2012215987A (ja) コンピュータシステム、及びi/oスイッチ
CN115858102A (zh) 一种用于部署支持虚拟化硬件加速的虚拟机的方法
US11392512B2 (en) USB method and apparatus in a virtualization environment with multi-VM
CN117389694B (zh) 基于virtio-blk技术提升虚拟存储IO性能的方法
CN115857995B (zh) 一种用于互联设备升级的方法、介质及计算设备
CN109656675B (zh) 总线设备、计算机设备及实现物理主机云存储的方法
WO2017045272A1 (zh) 虚拟机迁移方法和装置
CN116257276A (zh) 支持虚拟化硬件加速的虚拟宿主机用户后端升级方法
CN118394453B (zh) 用户态半虚拟化设备创建以及删除系统、设备及集群
CN118331687A (zh) 用户态半虚拟化数据路径加速方法、设备、集群以及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination