CN113849269A - 在虚拟机中添加gpu资源的方法及装置 - Google Patents
在虚拟机中添加gpu资源的方法及装置 Download PDFInfo
- Publication number
- CN113849269A CN113849269A CN202111101655.4A CN202111101655A CN113849269A CN 113849269 A CN113849269 A CN 113849269A CN 202111101655 A CN202111101655 A CN 202111101655A CN 113849269 A CN113849269 A CN 113849269A
- Authority
- CN
- China
- Prior art keywords
- identification information
- virtual machine
- pod
- target virtual
- gpu
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 67
- 238000012545 processing Methods 0.000 title description 8
- 241001026509 Kata Species 0.000 claims abstract description 47
- 230000008569 process Effects 0.000 claims abstract description 28
- 238000004891 communication Methods 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 7
- 238000005516 engineering process Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 10
- 244000035744 Hura crepitans Species 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 6
- 238000007781 pre-processing Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 239000003795 chemical substances by application Substances 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45575—Starting, stopping, suspending or resuming virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种在虚拟机中添加GPU资源的方法及装置,属于云服务领域。其中,该方法包括:获取软连接文件,其中,所述软连接文件用于指向目标虚拟机对应的K8S容器集群的设备插件的缓存文件,所述缓存文件包括GPU资源的设备标识信息;在创建所述目标虚拟机的容器组时,根据所述软连接文件从所述缓存文件中获取GPU资源的设备标识信息;将与当前创建的所述容器组对应的所述设备标识信息写入所述目标虚拟机的设备列表中;将所述设备列表中的设备标识信息对应的GPU资源添加到所述目标虚拟机中。通过本发明,解决了相关技术在虚拟机中热插GPU需要占用内存的技术问题,解除了在Kata流程中向虚拟机中插入GPU资源时BIOS的限制。
Description
技术领域
本发明涉及云服务领域,具体而言,涉及一种在虚拟机中添加GPU资源的方法及装置。
背景技术
相关技术中,社区版本的KATA组件(一种轻量级虚拟机的容器组件)中,通过使用PCIE(peripheral component interconnect express,高速串行计算机扩展总线)热插的方式,来实现在对应的容器实例中添加GPU(graphics processing unit,图形处理器)资源,从而实现将GPU资源应用于虚拟化环境中。
然而,这种通过PCIE热插的方式将GPU资源添加到虚拟化环境中的方案存在以下缺陷:当GPU所占用的内存过大的时候,例如当社区版的KATA组件试图热插一块NvidiaTesla V100的GPU的时候,就会由于BIOS预留的内存不足,而以失败告终。并且,即便是通过修改BIOS的源码,重新编译BIOS,让其预留出足够多的内存,也无法应对未来可能出现的占用内存更高的GPU型号。同时,在当前的热插解决方案中,当需要热插多个GPU设备的时候,也会存在问题,导致GPU无法顺利的热插成功。
另外,对于K8S环境来说。由于其本身架构的原因,K8S并不会在开机启动的流程中将GPU资源的相关信息传递给KATA组件。换句话说,在K8S的处理流程中,GPU资源的相关信息是在开机工作全部完成之后,才会传递给KATA组件。而此时,由于开机流程已经执行完毕,因此只能采用热插方案来添加GPU资源,所以目前在K8S环境下,很难克服热插方案的上述缺陷。
针对相关技术中存在的上述问题,目前尚未发现有效的解决方案。
发明内容
本发明实施例提供了一种在虚拟机中添加GPU资源的方法及装置。
根据本发明实施例的一个方面,提供了一种在虚拟机中添加GPU资源的方法,包括:获取软连接文件,其中,所述软连接文件用于指向目标虚拟机对应的K8S容器集群的设备插件的缓存文件,所述缓存文件包括GPU资源的设备标识信息;在创建所述目标虚拟机的容器组时,根据所述软连接文件从所述缓存文件中获取GPU资源的设备标识信息;将与当前创建的所述容器组对应的所述设备标识信息写入所述目标虚拟机的设备列表中;将所述设备列表中的设备标识信息对应的GPU资源添加到所述目标虚拟机中。
进一步,所述根据所述软连接文件从所述缓存文件中获取GPU资源的设备标识信息,包括:根据所述软连接文件确定所述缓存文件的位置;将所述缓存文件中的设备标识信息存入所述目标虚拟机对应的KATA组件的预设数据结构,其中,所述预设数据结构用于存储设备标识信息。
进一步,所述将与所述当前创建的容器组对应的所述设备标识信息写入所述目标虚拟机的设备列表中,包括:获取所述K8S组件与所述KATA组件之间传输的第一OCI-SPEC数据包;从所述第一OCI-SPEC数据包中解析出所述当前创建的容器组的第一Pod ID;在所述预设数据结构中查找与所述第一Pod ID匹配的所述设备标识信息;将与所述第一Pod ID匹配的所述设备标识信息按照OCI标准的格式,写入至所述设备列表,其中,所述设备列表存储于所述第一OCI-SPEC数据包中。
进一步,所述设备标识信息包括Pod设备整体信息,所述在所述预设数据结构中查找与所述第一Pod ID匹配的所述设备标识信息,包括:枚举所述预设数据结构中的每个所述GPU资源的Pod设备整体信息;提取每个所述Pod设备整体信息的第二Pod ID;判断所述第一Pod ID与所述第二Pod ID是否一致;在所述第一Pod ID与所述第二Pod ID一致的情况下,确定所述第二Pod ID与所述第一Pod ID匹配,并从所述预设数据结构中提取与所述第二Pod ID对应的GPU资源的设备标识信息。
进一步,在所述将所述设备列表中的设备标识信息对应的GPU资源添加到所述目标虚拟机中的步骤后,所述方法还包括:在创建所述目标虚拟机的Pod容器的过程中,获取所述K8S组件与所述KATA组件之间传输的第二OCI-SPEC数据包;在所述第二OCI-SPEC数据包中剔除与所述第一Pod ID匹配的设备标识信息。
进一步,所述在所述第二OCI-SPEC数据包中剔除与所述第一Pod ID匹配的设备标识信息,包括:获取预先记录的与所述第一Pod ID匹配的设备标识信息;在所述第二OCI-SPEC数据包的设备列表中查找与所述第一Pod ID匹配的设备标识信息;在所述第二OCI-SPEC数据包的设备列表中剔除与所述第一Pod ID匹配的设备标识信息。
进一步,所述将所述设备列表中的设备标识信息对应的GPU资源添加到所述目标虚拟机中,包括:在所述设备列表中获取GPU资源的设备标识信息,其中,所述目标虚拟机用于装载容器实例;根据所述设备标识信息确定所述GPU资源对应的PCIE标识信息;启动所述目标虚拟机,并根据所述PCIE标识信息将对应的GPU资源添加至所述目标虚拟机。
根据本发明实施例的另一个方面,提供了一种在虚拟机中添加GPU资源的装置,包括:第一获取模块,用于获取软连接文件,其中,所述软连接文件用于指向目标虚拟机对应的K8S容器集群的设备插件的缓存文件,所述缓存文件包括GPU资源的设备标识信息;第二获取模块,用于在创建所述目标虚拟机的容器组时,根据所述软连接文件从所述缓存文件中获取GPU资源的设备标识信息;写模块,用于将与当前创建的所述容器组对应的所述设备标识信息写入所述目标虚拟机的设备列表中;加载模块,用于将所述设备列表中的设备标识信息对应的GPU资源添加到所述目标虚拟机中。
进一步,所述第二获取模块包括:确定单元,用于根据所述软连接文件确定所述缓存文件的位置;存储单元,用于将所述缓存文件中的设备标识信息存入所述目标虚拟机对应的KATA组件的预设数据结构,其中,所述预设数据结构用于存储设备标识信息。
进一步,所述写模块包括:获取单元,用于获取所述K8S组件与所述KATA组件之间传输的第一OCI-SPEC数据包;解析单元,用于从所述第一OCI-SPEC数据包中解析出所述当前创建的容器组的第一Pod ID;查找单元,用于在所述预设数据结构中查找与所述第一PodID匹配的所述设备标识信息;写单元,用于将与所述第一Pod ID匹配的所述设备标识信息按照OCI标准的格式,写入至所述设备列表,其中,所述设备列表存储于所述第一OCI-SPEC数据包中。
进一步,所述设备标识信息包括Pod设备整体信息,所述查找单元包括:枚举子单元,用于枚举所述预设数据结构中的每个所述GPU资源的Pod设备整体信息;提取子单元,用于提取每个所述Pod设备整体信息的第二Pod ID;判断子单元,用于判断所述第一Pod ID与所述第二Pod ID是否一致;提取子单元,用于在所述第一Pod ID与所述第二Pod ID一致的情况下,确定所述第二Pod ID与所述第一Pod ID匹配,并从所述预设数据结构中提取与所述第二Pod ID对应的GPU资源的设备标识信息。
进一步,所述装置还包括:第三获取模块,用于在所述加载模块将所述设备列表中的设备标识信息对应的GPU资源添加到所述目标虚拟机中的步骤后,在创建所述目标虚拟机的Pod容器的过程中,获取所述K8S组件与所述KATA组件之间传输的第二OCI-SPEC数据包;剔除模块,用于在所述第二OCI-SPEC数据包中剔除与所述第一Pod ID匹配的设备标识信息。
进一步,所述剔除模块包括:第一获取单元,用于获取预先记录的与所述第一PodID匹配的设备标识信息;查找单元,用于在所述第二OCI-SPEC数据包的设备列表中查找与所述第一Pod ID匹配的设备标识信息;剔除单元,用于在所述第二OCI-SPEC数据包的设备列表中剔除与所述第一Pod ID匹配的设备标识信息。
进一步,所述加载模块包括:获取单元,用于在所述设备列表中获取GPU资源的设备标识信息,其中,所述目标虚拟机用于装载容器实例;确定单元,用于根据所述设备标识信息确定所述GPU资源对应的PCIE标识信息;加载单元,用于启动所述目标虚拟机,并根据所述PCIE标识信息将对应的GPU资源添加至所述目标虚拟机。
根据本发明实施例的另一方面,还提供了一种存储介质,该存储介质包括存储的程序,程序运行时执行上述的步骤。
根据本发明实施例的另一方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;其中:存储器,用于存放计算机程序;处理器,用于通过运行存储器上所存放的程序来执行上述方法中的步骤。
本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述方法中的步骤。
通过本发明,获取软连接文件,其中,软连接文件用于指向目标虚拟机对应的K8S容器集群的设备插件的缓存文件,缓存文件包括GPU资源的设备标识信息,在创建目标虚拟机的容器组时,根据软连接文件从缓存文件中获取GPU资源的设备标识信息,将与当前创建的容器组对应的设备标识信息写入目标虚拟机的设备列表中,将设备列表中的设备标识信息对应的GPU资源添加到目标虚拟机中,通过创建软连接文件,通过软连接文件从K8S的缓存文件中获取GPU资源的设备标识信息,然后从获取的GPU资源的设备标识信息中确定当前容器组对应的GPU资源,并添加到目标虚拟机的设备列表中,可以将GPU资源在虚拟机开机启动时插入到操作系统的启动命令中,进而将GPU资源透传到目标虚拟机中,解决了相关技术在虚拟机中热插GPU需要占用内存的技术问题,解除了在Kata流程中向虚拟机中插入GPU资源时BIOS的限制。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明实施例的一种服务器的硬件结构框图;
图2是根据本发明实施例的一种在虚拟机中添加GPU资源的方法的流程图;
图3是本发明实施例透传GPU资源的流程图;
图4是本发明实施例在虚拟机中使用GPU的流程示意图;
图5是本发明实施例的虚拟机的内层结构图;
图6是根据本发明实施例的一种在虚拟机中添加GPU资源的装置的结构框图;
图7是实施本发明实施例的一种电子设备的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
本发明实施例一所提供的方法实施例可以在计算机、VR设备、服务器或者类似的数据存储设备中执行。以运行在服务器上为例,图1是本发明实施例的一种服务器的硬件结构框图。如图1所示,服务器可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,可选地,上述服务器还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述服务器的结构造成限定。例如,服务器还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储服务器程序,例如,应用软件的软件程序以及模块,如本发明实施例中的一种在虚拟机中添加GPU资源的方法对应的服务器程序,处理器102通过运行存储在存储器104内的服务器程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至服务器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括服务器的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种在虚拟机中添加GPU资源的方法,图2是根据本发明实施例的一种在虚拟机中添加GPU资源的方法的流程图,如图2所示,该流程包括如下步骤:
步骤S202,获取软连接文件,其中,软连接文件用于指向目标虚拟机对应的K8S容器集群的设备插件的缓存文件,缓存文件包括GPU资源的设备标识信息;
在本实施例中,通过在物理机中插入GPU资源,或者添加一个虚拟化的GPU,都可以在K8S容器集群的设备插件的缓存文件中添加待加载的GPU资源,除了添加GPU资源之外,还可以添加其他类型的逻辑设备,本实施例仅说明GPU资源在目标虚拟机中的穿透和使用。
本实施例的目标虚拟机中,可以包括K8S相关组件,KATA组件,操作系统组件等。
步骤S204,在创建目标虚拟机的容器组时,根据软连接文件从缓存文件中获取GPU资源的设备标识信息;
通过解析目标虚拟机上K8S组件的文件缓存机制,采用软连接的方式,链接上缓存文件,可以使目标虚拟机对应的KATA组件能够正确的查找到该相应的缓存文件,如果K8S组件的版本或者配置的变化,导致缓存文件的位置发生变化,通过软连接文件,即使是在尚未读取到KATA配置文件的流程阶段,也能够在不修改源代码的情况下,通过调整软连接文件,来保持目标虚拟机的KATA组件对缓存文件的访问。
步骤S206,将与当前创建的容器组对应的设备标识信息写入目标虚拟机的设备列表中;
步骤S208,将设备列表中的设备标识信息对应的GPU资源添加到目标虚拟机中。
其中,可以在物理机上将GPU资源抽象为PCIE设备,以将GPU资源在虚拟机开机启动时插入到操作系统的启动命令中,进而将GPU资源透传到目标虚拟机中。
通过上述步骤,获取软连接文件,其中,软连接文件用于指向目标虚拟机对应的K8S容器集群的设备插件的缓存文件,缓存文件包括GPU资源的设备标识信息,在创建目标虚拟机的容器组时,根据软连接文件从缓存文件中获取GPU资源的设备标识信息,将与当前创建的容器组对应的设备标识信息写入目标虚拟机的设备列表中,将设备列表中的设备标识信息对应的GPU资源添加到目标虚拟机中,通过创建软连接文件,通过软连接文件从K8S的缓存文件中获取GPU资源的设备标识信息,然后从获取的GPU资源的设备标识信息中确定当前容器组对应的GPU资源,并添加到目标虚拟机的设备列表中,可以将GPU资源在虚拟机开机启动时插入到操作系统的启动命令中,进而将GPU资源透传到目标虚拟机中,解决了相关技术在虚拟机中热插GPU需要占用内存的技术问题,解除了在Kata流程中向虚拟机中插入GPU资源时BIOS的限制。
可选的,在获取软连接文件的过程中,可以在固定的目录新建一个软连接文件,该软连接文件指向当前K8S配置下的,设备插件的缓存文件。以测试环境中的的K8S版本和配置文件为例,该软连接将会指向文件:/var/lib/kubelet/device-plugins/kubelet_internal_checkpoint该文件的位置会伴随K8S配置文件的变化而变化,如果K8S配置文件发生变化,则修改对应的软连接文件。
在实施例的一个实施方式中,基于KATA社区的原流程进行改进,在创建目标虚拟机的部署单元Pod时,在下载Runtime配置(load Runtime Config)前,根据软连接文件从缓存文件中获取GPU资源的设备标识信息。其中,根据软连接文件从缓存文件中获取GPU资源的设备标识信息可以包括:
S11,根据软连接文件确定缓存文件的位置;
S12,将缓存文件中的设备标识信息存入目标虚拟机对应的KATA组件的预设数据结构,其中,预设数据结构用于存储设备标识信息。
在创建目标虚拟机的Pod沙盒的过程中,配置预设数据结构,其中,预设数据结构用于指示存储缓存文件的缓存数据的数据项;
在本实施例中,该预设数据结构用于定义接收K8S缓存文件中缓存数据的预设数据结构,是一种数据格式,用于指示需要传输和存储缓存数据的哪些数据项。读取软连接文件,解析读取到的内容,并将信息存入到新定义的预设数据结构。
预设数据结构的缓存数据写入第一OCI-SPEC数据包,其中,缓存数据包括GPU设备的设备信息。在一个示例中,第一OCI-SPEC数据包是K8S组件与KATA组件通信时传输的数据包,当然,也可以是K8S组件与KATA组件之间传输的其他数据包,或者是其他组件之间传输的数据包。
在一个示例中,将与当前创建的容器组对应的设备标识信息写入目标虚拟机的设备列表中包括:获取K8S组件与KATA组件之间传输的第一开放容器标准OCI-SPEC(OpenContainer Initiative SPEC)数据包;从第一OCI-SPEC数据包中解析出当前创建的容器组的第一Pod ID;在预设数据结构中查找与第一Pod ID匹配的设备标识信息;将与第一PodID匹配的设备标识信息按照OCI标准的格式,写入至设备列表,其中,设备列表存储于第一OCI-SPEC数据包中。
在一些示例中,设备标识信息包括Pod设备整体信息,在预设数据结构中查找与第一Pod ID匹配的设备标识信息,包括:枚举预设数据结构中的每个GPU资源的Pod设备整体信息;提取每个Pod设备整体信息的第二Pod ID;判断第一Pod ID与第二Pod ID是否一致;在第一Pod ID与第二Pod ID一致的情况下,确定第二Pod ID与第一Pod ID匹配,并从预设数据结构中提取与第二Pod ID对应的GPU资源的设备标识信息。
从OCI-SPEC数据包中,解析出当前正在处理的容器的PodID信息,之后,枚举之前存储的预设数据结构中的Pod设备整体信息,即Pod Device Entire设备信息,从Pod设备整体信息中找到与当前正在处理的PodID一致的设备数据,若设备信息上的PodID与当前正在处理的容器实例的PodID一致的则表示即为需要处理的设备(在本实施例中指需要透传的GPU资源)。本实施例中的Pod设备整体信息是一种设备描述信息,包括设备列表中当前枚举的设备对应的POD信息以及文件路径信息等。
可选的,将设备信息按照OCI标准的格式,写入至第一OCI-SPEC数据包的过程中,需要透传的GPU资源,按照OCI标准的格式,写入到OCI-SPEC数据包设备信息数据结构中,从而记录需要添加和透传的GPU资源。
在实施例的一个实施方式中,在将设备列表中的设备标识信息对应的GPU资源添加到目标虚拟机中之后,还包括:在创建目标虚拟机的Pod容器的过程中,获取K8S组件与KATA组件之间传输的第二OCI-SPEC数据包;在第二OCI-SPEC数据包中剔除与第一Pod ID匹配的设备标识信息。
在一个示例中,在第二OCI-SPEC数据包中剔除与第一Pod ID匹配的设备标识信息,包括:获取预先记录的与第一Pod ID匹配的设备标识信息;在第二OCI-SPEC数据包的设备列表中查找与第一Pod ID匹配的设备标识信息;在第二OCI-SPEC数据包的设备列表中剔除与第一Pod ID匹配的设备标识信息。
读取之前被处理过的设备(包括已经被透传的GPU资源)的设备信息,读取当前流程(创建目标虚拟机的Pod容器)中传输的OCI-SPEC数据包中的设备信息,匹配上述设备信息。从当前流程传输的OCI-SPEC数据包的设备信息数据结构中,剔除掉能成功匹配的相关设备,这些设备就是在创建Pod沙盒的流程中,已经被处理过的设备,在开机启动的时候,这些设备已经完成了通过QEMU(虚拟操作系统模拟器,Quick EMUlator)启动参数进行透传的过程。通过删除此处OCI-SPEC中的相关设备信息,避免其在KATA社区流程中,再次被执行热插的操作,避免重复透传,提高开机速度。
图3是本发明实施例透传GPU资源的流程图,首先K8S组件发送pause请求(暂停请求)给OCI-SPEC预处理模块,OCI-SPEC预处理模块通过软连接获取缓存文件中的设备缓存数据,并存储;在后续流程中,K8S组件发起GPU容器请求给OCI-SPEC预处理模块,OCI-SPEC预处理模块读取之前被处理过的设备,在OCI-SPEC数据包中剔除,然后继续开机启动并运行容器。
在实施例的一个实施方式中,将设备列表中的设备标识信息对应的GPU资源添加到目标虚拟机中包括:
S21,在设备列表中获取GPU资源的设备标识信息,其中,目标虚拟机用于装载容器实例;
可选的,新添加一个KATA的配置选项:命名为VFIOWithLaunchParam(带启动参数的VFIO(Virtual Function IO))。该指定配置选项可选两个标志位,如0和1,分别对应带启动参数的VFIO和不带启动参数的VFIO。本实施例的KATA组件是运行在容器和Docker之间的组件。
S22,根据设备标识信息确定GPU资源对应的PCIE标识信息;
在其中一个示例中,根据设备标识信息确定GPU资源对应的PCIE标识信息包括:获取目标虚拟机对应的KATA组件中的指定配置选项,其中,指定配置选项用于指示带启动参数的虚拟机接口;检测指定配置选项的标志位,其中,标志位用于指示是否添加GPU资源;在确定添加GPU资源的情况下,根据设备标识信息确定PCIE标识信息;将PCIE标识信息存储至目标虚拟机对应的管理程序配置的指定数据结构中,其中,指定数据结构用于存储PCIE标识信息。
在其中一个示例中,根据设备标识信息确定PCIE标识信息包括:枚举目标虚拟机的设备列表中的所有设备标识信息,在设备列表中选择设备标识信息符合预设条件的GPU资源;根据物理机的内核目录判断GPU资源是否为有效设备,其中,物理机用于承载目标虚拟机;在GPU资源为有效设备的情况下,从内核目录中提取GPU资源对应的PCIE编号,其中,PCIE标识信息包括PCIE编号。
在一些实施方式中,设备标识信息包括设备文件路径的前缀字符和全部字符,在设备列表中选择设备标识信息符合预设条件的GPU资源包括:针对设备列表中的每个设备标识信息,提取设备文件路径的前缀字符和全部字符;采用第一预设字符比对前缀字符,以及采用第二预设字符比对全部字符;在第一预设字符与前缀字符相同且第二预设字符与全部字符不同的情况下,确定设备标识信息对应的设备为符合预设条件的GPU资源。
可选的,可以修改KATA社区源代码中的Hyper visor Config(管理程序配置)的数据结构,在其中添加Data.PCIEDevice数据结构,作为数据结构新增的数据项,该结构支持传入一组字符串数据,表示为PCIE设备的编号。
在一个实例中,第一预设字符为/dev/VFIO,第二预设字符为/dev/VFIO/VFIO,枚举设备列表中的每个设备,针对每一个被枚举到的设备,判断其前缀是否为/dev/VFIO且设备的全称不为/dev/VFIO/VFIO如果符合条件,则该设备为VFIO设备,即符合预设条件的GPU资源。
可选的,根据物理机的内核目录判断GPU资源是否为有效设备包括:提取GPU资源对应的虚拟机接口的VFIO编号;查询内核目录,并判断内核目录中是否存在VFIO编号;在内核目录中存在VFIO编号的情况下,确定GPU资源为有效设备。
在一个实例中,内核目录为/sys/kernel/iommu_groups/[VFIO编号]/devices/,通过提取该GPU资源的VFIO编号,并通过查询相关的内核目录/sys/kernel/iommu_groups/[VFIO编号]/devices/如果该目录不存在,则该设备不是有效的VFIO-PCIE设备,如果存在,则为有效设备。
在本实施例的一个实施方式中,在根据指定配置选项将GPU资源的标识信息添加至指定数据结构之后,还包括:对指定数据结构中的标识信息进行去重。
S23,启动目标虚拟机,并根据PCIE标识信息将对应的GPU资源添加至目标虚拟机。
在本实施例中,PCIE标识信息包括PCIE编号,根据PCIE标识信息将对应的GPU资源添加至目标虚拟机包括:解析PCIE编号,以将PCIE编号转换为虚拟操作系统模拟器(QEMU,Quick EMUlator)的启动参数,启动参数用于在启动目标虚拟机的过程中添加GPU资源;将启动参数添加到虚拟操作系统模拟器的开机命令中;执行开机命令,以基于目标虚拟机的镜像启动目标虚拟机。
可选的,目标虚拟机的镜像包括GPU资源对应的驱动程序和透传工具,通过透传工具将GPU资源和驱动程序添加到目标虚拟机的容器实例中。
在一个场景中,上述抽象GPU资源的过程设置于原社区流程的create sandbox(创建沙盒)的流程中。在社区的new sandbox被调用之前执行。在一个完整的实例中,包括以下的操作:
S31,通过检查VFIOWithLaunchParam配置选项,通过该配置选项的标志位决定该过程是否启用。
S32,获取虚拟机的设备列表,枚举设备列表中的所有设备。
S33,针对每一个被枚举到的设备,判断其前缀是否为/dev/VFIO且设备的全称不为/dev/VFIO/VFIO如果符合条件,则该设备为符合预设条件的GPU资源。
S34,提取该设备的VFIO编号,并通过查询物理机的内核目录/sys/kernel/iommu_groups/[VFIO编号]/devices/,如果该内核目录不存在上述VFIO编号,则该设备不是有效的VFIO-PCIE设备。
S25,从上述目录中,枚举每个设备的设备文件名,提取其文件名,将文件名确定为该设备的PCIE编号,如果通过上述方式,获取到了合法的PCIE编号,则判断该设备为有效的VFIO-PCIEE设备,需要进行处理。
S26,对于有效的VFIO-PCIE设备,将其从设备列表的设备信息的数据结构中抹除,同时,将从该设备中解析出来的PCIE编号,添加到之前配置的HypervisorConfig的数据结构中。
S27,对添加到HyperviConfig中的PCIE编号进行去重。
在本实施例中,将PCIE设备透传至目标虚拟机包括:解析PCIE设备的PCIE编号,将PCIE编号转换为QEMU启动参数;将QEMU启动参数添加到QEMU开机的命令中;在目标虚拟机的镜像中添加GPU资源的驱动程序,将驱动程序透传到目标虚拟机的Docker容器中。
图4是本发明实施例在虚拟机中使用GPU的流程示意图,首先K8Scontainerd组件发布create pause容器指令,传递至KATA组件,执行启动虚拟机指令,在开机启动虚拟机时,将GPU透传至虚拟机,将该指令传输给QEMU(包括KATA-agent),KATA-agent启动成功后,返回给KATA组件,KATA组件启动pause容器指令给QEMU,QEMU在启动pause容器指令成功后通知KATA组件,将create pause容器指令完成的消息发送给K8S containerd组件,K8Scontainerd组件发布create GPU容器的指令给KATA组件,由KATA组件启动容器指令,不用再热插GPU资源,在QEMU中使用带GPU驱动的虚拟机镜像。
图5是本发明实施例的虚拟机的内层结构图,底层是KATA-runtime组件和QEMU虚拟机内核,该内核包括KATA-agent,上层是OCI-SPCE预处理模块,VFIO-PCIE拒绝热插模块,镜像驱动模块。
在本实施例中,为了使GPU容器在K8S组件+KATA组件+QEMU的架构下,也能透传GPU,在虚拟机原有的构架上添加了一个额外的模块,OCI-SPEC预处理模块,该模块分别在创建Pod沙盒(create Pod Sandbox)和创建Pod容器(create Pod Container)中添加了对应的处理过程,在开机启动之前就能获取到容器实例启动所需要的相关设备信息。通过软连接的方式,链接上相应的缓存文件,使得KATA组件能够正确的查找到该相应的缓存文件。如果K8S组件的版本或者配置的变化,导致缓存文件的位置发生变化,采用本实施例的方案,即使是在尚未读取到KATA配置文件的流程阶段,也能够在不修改源代码的情况下,通过调整软连接,来保持KATA对缓存文件的访问。添加了新的预设数据结构,该数据结构用来存储从K8S缓存文件中读取解析到的内容,在create Pod Sandbox里添加的过程,负责从K8S缓存文件读取设备信息,并通过分析自身的OCI-SPCE数据包,从缓存中读取到的设备信息中,解析出与当前正在处理的容器实例相关的具体设备信息,将其中的GPU资源信息,按照OCI-SPEC的标准格式追加到OCI-SPCE数据包的数据结构中,同时记录下这些被追加进去的设备信息。在create Pod Container的过程中,根据本记录下的设备信息,从当前流程传输的OCI-SPEC数据包的数据结构中剔除掉重复的相关设备信息,以防止在Create Container的流程中对已透传的GPU做重复处理。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例2
在本实施例中还提供了一种在虚拟机中添加GPU资源的装置,用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图6是根据本发明实施例的一种在虚拟机中添加GPU资源的装置的结构框图,如图6所示,该装置包括:第一获取模块60,第二获取模块62,写模块64,加载模块66,其中,
第一获取模块60,用于获取软连接文件,其中,所述软连接文件用于指向目标虚拟机对应的K8S容器集群的设备插件的缓存文件,所述缓存文件包括GPU资源的设备标识信息;
第二获取模块62,用于在创建所述目标虚拟机的容器组时,根据所述软连接文件从所述缓存文件中获取GPU资源的设备标识信息;
写模块64,用于将与当前创建的所述容器组对应的所述设备标识信息写入所述目标虚拟机的设备列表中;
加载模块66,用于将所述设备列表中的设备标识信息对应的GPU资源添加到所述目标虚拟机中。
可选的,所述第二获取模块包括:确定单元,用于根据所述软连接文件确定所述缓存文件的位置;存储单元,用于将所述缓存文件中的设备标识信息存入所述目标虚拟机对应的KATA组件的预设数据结构,其中,所述预设数据结构用于存储设备标识信息。
可选的,所述写模块包括:获取单元,用于获取所述K8S组件与所述KATA组件之间传输的第一OCI-SPEC数据包;解析单元,用于从所述第一OCI-SPEC数据包中解析出所述当前创建的容器组的第一Pod ID;查找单元,用于在所述预设数据结构中查找与所述第一PodID匹配的所述设备标识信息;写单元,用于将与所述第一Pod ID匹配的所述设备标识信息按照OCI标准的格式,写入至所述设备列表,其中,所述设备列表存储于所述第一OCI-SPEC数据包中。
可选的,所述设备标识信息包括Pod设备整体信息,所述查找单元包括:枚举子单元,用于枚举所述预设数据结构中的每个所述GPU资源的Pod设备整体信息;提取子单元,用于提取每个所述Pod设备整体信息的第二Pod ID;判断子单元,用于判断所述第一Pod ID与所述第二Pod ID是否一致;提取子单元,用于在所述第一Pod ID与所述第二Pod ID一致的情况下,确定所述第二Pod ID与所述第一Pod ID匹配,并从所述预设数据结构中提取与所述第二Pod ID对应的GPU资源的设备标识信息。
可选的,所述装置还包括:第三获取模块,用于在所述加载模块将所述设备列表中的设备标识信息对应的GPU资源添加到所述目标虚拟机中的步骤后,在创建所述目标虚拟机的Pod容器的过程中,获取所述K8S组件与所述KATA组件之间传输的第二OCI-SPEC数据包;剔除模块,用于在所述第二OCI-SPEC数据包中剔除与所述第一Pod ID匹配的设备标识信息。
可选的,所述剔除模块包括:第一获取单元,用于获取预先记录的与所述第一PodID匹配的设备标识信息;查找单元,用于在所述第二OCI-SPEC数据包的设备列表中查找与所述第一Pod ID匹配的设备标识信息;剔除单元,用于在所述第二OCI-SPEC数据包的设备列表中剔除与所述第一Pod ID匹配的设备标识信息。
可选的,所述加载模块包括:获取单元,用于在所述设备列表中获取GPU资源的设备标识信息,其中,所述目标虚拟机用于装载容器实例;确定单元,用于根据所述设备标识信息确定所述GPU资源对应的PCIE标识信息;加载单元,用于启动所述目标虚拟机,并根据所述PCIE标识信息将对应的GPU资源添加至所述目标虚拟机。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
实施例3
本申请实施例还提供了一种电子设备,图7是本发明实施例的一种电子设备的结构图,如图7所示,包括处理器71、通信接口72、存储器73和通信总线74,其中,处理器71,通信接口72,存储器73通过通信总线74完成相互间的通信,存储器73,用于存放计算机程序;处理器71,用于执行存储器73上所存放的程序时,实现如下步骤:获取软连接文件,其中,所述软连接文件用于指向目标虚拟机对应的K8S容器集群的设备插件的缓存文件,所述缓存文件包括GPU资源的设备标识信息;在创建所述目标虚拟机的容器组时,根据所述软连接文件从所述缓存文件中获取GPU资源的设备标识信息;将与当前创建的所述容器组对应的所述设备标识信息写入所述目标虚拟机的设备列表中;将所述设备列表中的设备标识信息对应的GPU资源添加到所述目标虚拟机中。
可选的,所述根据所述软连接文件从所述缓存文件中获取GPU资源的设备标识信息,包括:根据所述软连接文件确定所述缓存文件的位置;将所述缓存文件中的设备标识信息存入所述目标虚拟机对应的KATA组件的预设数据结构,其中,所述预设数据结构用于存储设备标识信息。
可选的,所述将与所述当前创建的容器组对应的所述设备标识信息写入所述目标虚拟机的设备列表中,包括:获取所述K8S组件与所述KATA组件之间传输的第一OCI-SPEC数据包;从所述第一OCI-SPEC数据包中解析出所述当前创建的容器组的第一Pod ID;在所述预设数据结构中查找与所述第一Pod ID匹配的所述设备标识信息;将与所述第一Pod ID匹配的所述设备标识信息按照OCI标准的格式,写入至所述设备列表,其中,所述设备列表存储于所述第一OCI-SPEC数据包中。
可选的,所述设备标识信息包括Pod设备整体信息,所述在所述预设数据结构中查找与所述第一Pod ID匹配的所述设备标识信息,包括:枚举所述预设数据结构中的每个所述GPU资源的Pod设备整体信息;提取每个所述Pod设备整体信息的第二Pod ID;判断所述第一Pod ID与所述第二Pod ID是否一致;在所述第一Pod ID与所述第二Pod ID一致的情况下,确定所述第二Pod ID与所述第一Pod ID匹配,并从所述预设数据结构中提取与所述第二Pod ID对应的GPU资源的设备标识信息。
可选的,在所述将所述设备列表中的设备标识信息对应的GPU资源添加到所述目标虚拟机中的步骤后,所述方法还包括:在创建所述目标虚拟机的Pod容器的过程中,获取所述K8S组件与所述KATA组件之间传输的第二OCI-SPEC数据包;在所述第二OCI-SPEC数据包中剔除与所述第一Pod ID匹配的设备标识信息。
可选的,所述在所述第二OCI-SPEC数据包中剔除与所述第一Pod ID匹配的设备标识信息,包括:获取预先记录的与所述第一Pod ID匹配的设备标识信息;在所述第二OCI-SPEC数据包的设备列表中查找与所述第一Pod ID匹配的设备标识信息;在所述第二OCI-SPEC数据包的设备列表中剔除与所述第一Pod ID匹配的设备标识信息。
可选的,所述将所述设备列表中的设备标识信息对应的GPU资源添加到所述目标虚拟机中,包括:在所述设备列表中获取GPU资源的设备标识信息,其中,所述目标虚拟机用于装载容器实例;根据所述设备标识信息确定所述GPU资源对应的PCIE标识信息;启动所述目标虚拟机,并根据所述PCIE标识信息将对应的GPU资源添加至所述目标虚拟机。
上述终端提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本申请提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的在虚拟机中添加GPU资源的方法。
在本申请提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的在虚拟机中添加GPU资源的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。
以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种在虚拟机中添加GPU资源的方法,其特征在于,包括:
获取软连接文件,其中,所述软连接文件用于指向目标虚拟机对应的K8S容器集群的设备插件的缓存文件,所述缓存文件包括GPU资源的设备标识信息;
在创建所述目标虚拟机的容器组时,根据所述软连接文件从所述缓存文件中获取GPU资源的设备标识信息;
将与当前创建的所述容器组对应的所述设备标识信息写入所述目标虚拟机的设备列表中;
将所述设备列表中的设备标识信息对应的GPU资源添加到所述目标虚拟机中。
2.根据权利要求1所述的方法,其特征在于,所述根据所述软连接文件从所述缓存文件中获取GPU资源的设备标识信息,包括:
根据所述软连接文件确定所述缓存文件的位置;
将所述缓存文件中的设备标识信息存入所述目标虚拟机对应的KATA组件的预设数据结构,其中,所述预设数据结构用于存储设备标识信息。
3.根据权利要求2所述的方法,其特征在于,所述将与当前创建的所述容器组对应的所述设备标识信息写入所述目标虚拟机的设备列表中,包括:
获取所述K8S组件与所述KATA组件之间传输的第一OCI-SPEC数据包;
从所述第一OCI-SPEC数据包中解析出所述当前创建的容器组的第一Pod ID;
在所述预设数据结构中查找与所述第一PodID匹配的所述设备标识信息;
将与所述第一Pod ID匹配的所述设备标识信息按照OCI标准的格式,写入至所述设备列表,其中,所述设备列表存储于所述第一OCI-SPEC数据包中。
4.根据权利要求3所述的方法,其特征在于,所述设备标识信息包括Pod设备整体信息,所述在所述预设数据结构中查找与所述第一Pod ID匹配的所述设备标识信息,包括:
枚举所述预设数据结构中的每个所述GPU资源的Pod设备整体信息;
提取每个所述Pod设备整体信息的第二Pod ID;
判断所述第一Pod ID与所述第二Pod ID是否一致;
在所述第一Pod ID与所述第二Pod ID一致的情况下,确定所述第二Pod ID与所述第一PodID匹配,并从所述预设数据结构中提取与所述第二PodID对应的GPU资源的设备标识信息。
5.根据权利要求3所述的方法,其特征在于,在所述将所述设备列表中的设备标识信息对应的GPU资源添加到所述目标虚拟机中的步骤后,所述方法还包括:
在创建所述目标虚拟机的Pod容器的过程中,获取所述K8S组件与所述KATA组件之间传输的第二OCI-SPEC数据包;
在所述第二OCI-SPEC数据包中剔除与所述第一Pod ID匹配的设备标识信息。
6.根据权利要求5所述的方法,其特征在于,所述在所述第二OCI-SPEC数据包中剔除与所述第一Pod ID匹配的设备标识信息,包括:
获取预先记录的与所述第一Pod ID匹配的设备标识信息;
在所述第二OCI-SPEC数据包的设备列表中查找与所述第一Pod ID匹配的设备标识信息;
在所述第二OCI-SPEC数据包的设备列表中剔除与所述第一Pod ID匹配的设备标识信息。
7.根据权利要求1所述的方法,其特征在于,所述将所述设备列表中的设备标识信息对应的GPU资源添加到所述目标虚拟机中,包括:
在所述设备列表中获取GPU资源的设备标识信息,其中,所述目标虚拟机用于装载容器实例;
根据所述设备标识信息确定所述GPU资源对应的PCIE标识信息;
启动所述目标虚拟机,并根据所述PCIE标识信息将对应的GPU资源添加至所述目标虚拟机。
8.一种在虚拟机中添加GPU资源的装置,其特征在于,包括:
第一获取模块,用于获取软连接文件,其中,所述软连接文件用于指向目标虚拟机对应的K8S容器集群的设备插件的缓存文件,所述缓存文件包括GPU资源的设备标识信息;
第二获取模块,用于在创建所述目标虚拟机的容器组时,根据所述软连接文件从所述缓存文件中获取GPU资源的设备标识信息;
写模块,用于将与当前创建的所述容器组对应的所述设备标识信息写入所述目标虚拟机的设备列表中;
加载模块,用于将所述设备列表中的设备标识信息对应的GPU资源添加到所述目标虚拟机中。
9.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,所述程序运行时执行上述权利要求1至7中任一项所述的方法步骤。
10.一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;其中:
存储器,用于存放计算机程序;
处理器,用于通过运行存储器上所存放的程序来执行权利要求1至7中任一项所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111101655.4A CN113849269A (zh) | 2021-09-18 | 2021-09-18 | 在虚拟机中添加gpu资源的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111101655.4A CN113849269A (zh) | 2021-09-18 | 2021-09-18 | 在虚拟机中添加gpu资源的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113849269A true CN113849269A (zh) | 2021-12-28 |
Family
ID=78974672
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111101655.4A Pending CN113849269A (zh) | 2021-09-18 | 2021-09-18 | 在虚拟机中添加gpu资源的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113849269A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116028164A (zh) * | 2023-03-29 | 2023-04-28 | 阿里云计算有限公司 | 设备虚拟化方法以及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180285164A1 (en) * | 2017-03-28 | 2018-10-04 | International Business Machines Corporation | Managing system resources in containers and virtual machines in a coexisting environment |
CN111966305A (zh) * | 2020-10-22 | 2020-11-20 | 腾讯科技(深圳)有限公司 | 持久卷分配方法、装置、计算机设备和存储介质 |
CN112328363A (zh) * | 2020-11-05 | 2021-02-05 | 北京金山云网络技术有限公司 | 一种云硬盘挂载方法及其装置 |
CN113111025A (zh) * | 2021-06-10 | 2021-07-13 | 深圳市科力锐科技有限公司 | Pci设备映射方法、装置、设备及存储介质 |
-
2021
- 2021-09-18 CN CN202111101655.4A patent/CN113849269A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180285164A1 (en) * | 2017-03-28 | 2018-10-04 | International Business Machines Corporation | Managing system resources in containers and virtual machines in a coexisting environment |
CN111966305A (zh) * | 2020-10-22 | 2020-11-20 | 腾讯科技(深圳)有限公司 | 持久卷分配方法、装置、计算机设备和存储介质 |
CN112328363A (zh) * | 2020-11-05 | 2021-02-05 | 北京金山云网络技术有限公司 | 一种云硬盘挂载方法及其装置 |
CN113111025A (zh) * | 2021-06-10 | 2021-07-13 | 深圳市科力锐科技有限公司 | Pci设备映射方法、装置、设备及存储介质 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116028164A (zh) * | 2023-03-29 | 2023-04-28 | 阿里云计算有限公司 | 设备虚拟化方法以及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113849272A (zh) | 在虚拟机中添加gpu资源的方法及装置 | |
US10776131B2 (en) | Method and apparatus for UEFI firmware boot journal recording | |
WO2020001112A1 (zh) | 一种支持多类型设备的平台的应用方法、移动终端 | |
CN109426613B (zh) | 在uefi中检索调试数据的方法及其电脑系统 | |
CN112948026A (zh) | 热点代码处理方法、装置、服务器、电子设备及存储介质 | |
US12008171B2 (en) | Program download method for intelligent terminal with memory card identifier and intelligent terminal with memory card identifier | |
CN106484719B (zh) | 一种扩展手机存储的方法及终端 | |
CN108694052B (zh) | 一种固件升级方法、固件升级装置及固件升级系统 | |
CN116450046A (zh) | 云盘实现方法、装置、智能网卡、服务器及存储介质 | |
CN113900693A (zh) | 一种固件升级方法、装置、系统、电子设备及存储介质 | |
CN112559088A (zh) | 配置文件的优化方法、装置、服务器以及存储介质 | |
CN108153548A (zh) | 一种emmc固件升级方法和装置 | |
US10503430B2 (en) | Method and device for clearing data and electronic device | |
CN118051277A (zh) | 服务器的启动方法、装置、存储介质和电子设备 | |
US20190068772A1 (en) | Computer system and method thereof for bluetooth data sharing between uefi firmware and os | |
CN111803917A (zh) | 资源的处理方法和装置 | |
CN113849269A (zh) | 在虚拟机中添加gpu资源的方法及装置 | |
CN111045698A (zh) | 冗余图片的删除方法、装置、电子设备及存储介质 | |
CN104601798B (zh) | 一种定制应用程序启动控制方法及装置 | |
CN111782474A (zh) | 日志处理方法、装置、电子设备和介质 | |
EP2835737A1 (en) | Data terminal running mode switching method, device, and data terminal | |
CN111767082A (zh) | 计算芯片启动方法、装置和计算机系统 | |
CN110327626B (zh) | 虚拟服务器创建方法及装置 | |
CN113721953A (zh) | 固件程序升级方法、装置及显示控制设备 | |
CN111209056B (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 |