CN109933435B - 控制方法、装置及计算机设备 - Google Patents
控制方法、装置及计算机设备 Download PDFInfo
- Publication number
- CN109933435B CN109933435B CN201910228643.4A CN201910228643A CN109933435B CN 109933435 B CN109933435 B CN 109933435B CN 201910228643 A CN201910228643 A CN 201910228643A CN 109933435 B CN109933435 B CN 109933435B
- Authority
- CN
- China
- Prior art keywords
- external device
- external
- application
- virtual
- equipment
- 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.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供了一种控制方法、装置及计算机设备,该计算机设备的操作***上部署有至少一个容器,在运行容器中的任一应用的情况下,若该应用当前需要使用某外部设备,将会操作对应虚拟设备的设备文件,在此期间,设备驱动可以确定该虚拟设备所映射的外部设备,并基于该外部设备的状态保存恢复逻辑,实现对该外部设备的设备运行上下文的切换,以使得该应用能够访问该外部设备,满足了当前应用对外部设备的使用需求,且不会影响其他应用对该外部设备的使用,即实现了对外部设备的共享,或者对所述外部设备的独占使用。
Description
技术领域
本申请主要涉及通信技术领域,更具体地说是涉及一种控制方法、装置及计算机设备。
背景技术
近年来,容器技术已成为一种被大家广泛认可的虚拟化技术,可以用来实现服务器资源共享。相对于虚拟机,容器直接部署在主机操作***之上,当容器中的某应用运行期间,应用可以与其他容器中的应用共享宿主机连接的外部设备,也可以独占某一个或多个外部设备。
然而,在实际应用中,有些外部设备是无法被多个容器中的应用共享的;有些设备虽然支持设备虚拟化,实现多个逻辑设备的共享,但无法在容器化场景下共享,即便有些设备也能够在容器化场景下共享,往往也只能使用部分设备资源,无法满足某些应用对全部设备资源的独占要求。可见,如何让这些设备在容器化场景下高效地共享成为亟需解决的问题。
发明内容
有鉴于此,本申请提供了一控制方法、装置及计算机设备,实现了容器化场景下外部设备的高效共享。
为了实现上述发明目的,本申请提供了以下技术方案:
本申请提供了一种控制方法,所述方法包括:
在容器中的应用运行期间,获取所述应用使用的虚拟设备的设备文件,并确定所述虚拟设备所映射的外部设备;
基于所述外部设备中的状态保存恢复逻辑,实现对所述外部设备的设备运行上下文的切换,以使得所述应用能够访问或释放所述外部设备。
可选的,所述基于所述外部设备中的状态保存恢复逻辑,实现对所述外部设备的设备运行上下文的切换,包括:
在所述应用需要使用所述外部设备的情况下,将所述外部设备的设备运行上下文写入所述外部设备,并向所述外部设备发送状态恢复命令,以使所述外部设备响应所述设备运行上下文,实现与所述应用的数据交互;
若所述外部设备在预设时间段内未被所述应用访问,向所述外部设备发送状态保存命令,以使所述外部设备保存当前设备运行上下文;
同步所述外部设备的当前设备运行上下文,释放所述外部设备与所述虚拟设备的映射关系,并将所述外部设备的当前状态调整为空闲状态。
可选的,所述确定所述虚拟设备所映射的外部设备,包括:
查询所述虚拟设备是否映射有外部设备;
如果是,执行所述基于所述外部设备中的状态保存恢复逻辑,实现对所述外部设备的设备运行上下文的切换步骤;
如果否,获取当前处于空闲状态的外部设备,并建立所述虚拟设备与所述当前处于空闲状态的外部设备之间的映射关系。
可选的,在容器引擎创建所述容器的情况下,所述方法还包括:
针对所述容器,配置虚拟设备标识符并创建设备运行上下文;
创建与所述虚拟设备标识符和所述设备运行上下文对应的虚拟设备,以及所述虚拟设备的设备文件;
获取所述设备文件的属性信息,并将所述属性信息反馈至所述容器引擎,以使所述应用通过所述容器引擎获取所述设备文件的属性信息,基于所述设备文件的属性信息,获取所述设备文件;
其中,所述设备文件的属性信息包括所述设备文件的路径和/或文件号。
可选的,所述方法还包括:
接收所述容器引擎发送的针对所述容器的容器销毁命令,所述容器销毁命令是在所述容器中的各应用被清除的情况下生成的;
响应所述容器销毁命令,释放所述容器对应的虚拟设备标识符及设备运行上下文;
清除针对所述容器创建的所述虚拟设备。
可选的,所述外部设备包括:用于接收状态恢复命令和状态保存命令的接口寄存器,以及用于存储设备运行上下文的设备内存,所述设备运行上下文包含有所述外部设备的配置信息以及状态信息。
本申请还提供了一种控制装置,所述装置包括:
获取模块,用于在容器中的应用运行期间,获取所述应用使用的虚拟设备的设备文件,并确定所述虚拟设备所映射的外部设备;
控制模块,用于基于所述外部设备中的状态保存恢复逻辑,实现对所述外部设备的设备运行上下文的切换,以使得所述应用能够访问或释放所述外部设备。
可选的,所述控制模块包括:
写入单元,用于在所述应用需要使用所述外部设备的情况下,将所述外部设备的设备运行上下文写入所述外部设备;
状态恢复命令发送单元,用于向所述外部设备发送状态恢复命令,以使所述外部设备响应所述设备运行上下文,实现与所述应用的数据交互;
状态保存命令发送单元,用于所述外部设备在预设时间段内未被所述应用访问的情况下,向所述外部设备发送状态保存命令,以使所述外部设备保存当前设备运行上下文;
数据同步单元,用于同步所述外部设备的当前设备运行上下文;
设备释放单元,用于释放所述外部设备与所述虚拟设备的映射关系,并将所述外部设备的当前状态调整为空闲状态。
可选的,所述获取模块包括:
查询单元,用于查询所述虚拟设备是否映射有外部设备,在查询结果为是的情况下,触发所述控制模块执行所述基于所述外部设备中的状态保存恢复逻辑,实现对所述外部设备的设备运行上下文的切换步骤;
映射关系建立单元,用于在所述查询单元的查询结果为否的情况下,获取当前处于空闲状态的外部设备,并建立所述虚拟设备与所述当前处于空闲状态的外部设备之间的映射关系。
本申请还提供了一种计算机设备,所述计算机设备包括:
通信接口,所述通信接口用于连接外部设备,所述外部设备配置有状态保存恢复逻辑;
存储器,用于存储实现如上所述的控制方法的程序;
处理器,用于加载并执行所述存储器存储的程序,所述程序用于:
在容器中的应用运行期间,获取所述应用使用的虚拟设备的设备文件,并确定所述虚拟设备所映射的外部设备;
基于所述外部设备中的状态保存恢复逻辑,实现对所述外部设备的设备运行上下文的切换,以使得所述应用能够访问或释放所述外部设备。
由此可见,与现有技术相比,本申请提供了一种控制方法、装置及计算机设备,该计算机设备的操作***上部署有至少一个容器,在运行容器中的任一应用的情况下,若该应用当前需要使用某外部设备,将会操作对应虚拟设备的设备文件,在此期间,设备驱动可以确定该虚拟设备所映射的外部设备,并基于该外部设备的状态保存恢复逻辑,实现对该外部设备的设备运行上下文的切换,以使得该应用能够访问该外部设备,满足了当前应用对外部设备的使用需求,且不会影响其他应用对该外部设备的使用,即实现了对外部设备的共享,或者对所述外部设备的独占使用。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1示出了本申请提出的控制方法的一实施例的流程示意图;
图2示出了本申请提出的控制方法的另一实施例的流程示意图;
图3示出了本申请提出的控制方法的又一实施例的流程示意图;
图4示出了本申请提出的控制方法的一实施例的信令流程示意图;
图5示出了本申请提出的控制方法的另一实施例的信令流程示意图;
图6示出了本申请提出的控制装置的一实施例的结构示意图;
图7示出了本申请提出的控制装置的另一实施例的结构示意图;
图8示出了本申请提出的控制装置的另一实施例的结构示意图;
图9示出了本申请提出的控制装置的又一实施例的结构示意图;
图10示出了本申请提出的计算机设备的一实施例的硬件结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前,为了实现多个应用对计算机设备连接的外部设备的共享,通常是采用虚拟化技术,来创建同一外部设备的多个虚拟设备(即逻辑设备),供多个应用使用。具体的,可以采用软件虚拟化方法,即通过软件模型的方式,来构建外部设备的多个虚拟设备,但这种虚拟化开销大,且与hypervisor(虚拟机监视器)耦合性强,在容器化场景下无法使用。
现有还提供了一种硬件虚拟化方法,即使用SR-IOV等技术,使得一个外部设备对外呈现出多个虚拟设备,但是这种虚拟设备只能使用外部设备的部分资源,比如GPU(Graphics Processing Unit,图形处理器)等,导致某些需要独占外部设备资源的应用无法使用,而且,这种实现方式非常复杂,很多外部设备并不适用。
此外,还有还提出了一种热插拔方法,即通过模拟设备热插拔事件,实现设备在多个虚拟机之间的时分切换,但是,在这种实现方法中,计算机设备中的所有容器共用一个内核,无法针对某个容器进行设备热插拔,因此,容器化场景下也是不适用的。且应用能感知的外部设备的加入与离开,对应用是不透明的,还会涉及到ACPI(Advanced Configurationand Power Management Interface,高级配置和电源管理接口)相关操作,导致开销大,延迟也大。
为了改善上文列举的几种现有技术,本申请提出在外部设备中增加状态保存恢复的逻辑,以使得计算机设备的驱动能够基于该状态保存恢复逻辑,负责设备上下文的切换,维护外部设备与虚拟设备,并动态更新两者之间的映射关系,从而使得设备驱动能够通过虚拟设备,透明地为容器化应用提供服务,保证现有应用无需改动就可以高效地共享外部设备。
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
参照图1,为本申请实施例提供的一种控制方法的流程示意图,该方法可以应用于计算机设备,本申请对该计算机设备的产品类型不做限定,如图1所示,该方法可以包括但并不局限于以下步骤:
步骤S11,在容器中的应用运行期间,获取该应用使用的虚拟设备的设备文件;
其中,设备文件可以是应用使用虚拟设备的程序文件,应用可以通过执行设备文件,实现对虚拟设备的使用,本申请对虚拟设备的设备文件的内容不做限定,在实际应用中,虚拟设备及其设备文件通常是在创建对应容器期间创建,具体过程可以参照下文相应实施例的描述。
本实施例中,在部署在容器中的应用运行,需要使用外部设备期间,通常是操作设备文件,通过虚拟设备来是使用与其映射的外部设备,所以,对于计算机设备中的任一容器中的任一应用运行过程中,需要使用外部设备,可以获取与其所在容器映射的虚拟设备的设备文件,具体获取方法不做限定。
步骤S12,确定该虚拟设备所映射的外部设备;
由于创建每一个虚拟设备后,通常都会为其创建设备文件,设备驱动通过该设备文件,实现对虚拟设备的使用,进而实现对该虚拟设备所映射的外部设备的使用。所以,在部署于容器中的任一应用运行期间,设备驱动可以先确定该应用所要操作的设备文件,即确定该设备文件所属的虚拟设备之后,确定该虚拟设备所映射的真实的外部设备。
其中,虚拟设备与外部设备之间的映射关系可以是动态的,并不是固定不变的,具体可以根据实际情况动态调整虚拟设备与外部设备之间的动态映射关系,本申请对该映射关系的动态调整方法不做限定。
本申请中,外部设备可以指计算机主机以外的硬件设备,对数据和信息起到传输、转送和存储的作用,是计算机***中的重要组成部分,可以分为输入设备、显示设备、打印设备、外部存储设备和网络设备等类型,但并不局限于此。
步骤S13,基于该外部设备中的状态保存恢复逻辑,实现对该外部设备的设备运行上下文的切换,以使得该应用能够访问或释放该外部设备。
本实施例中,设备运行上下文可以包括相应外部设备的配置、一些关键的状态数据等,其可以表明该外部设备的运行情况,在实际应用中,外设的设备上下文数据对应用来说往往是不透明的,使得应用并不能直接实现对设备运行上下文的切换控制,即不能直接对外设发送状态保存/恢复命令,也就不能实现对外部设备的灵活使用,灵活选择是独占外部设备的资源,还是与其他应用共享外部设备的资源,且在一定程度上还降低了计算机设备的工作性能。
为了改善上述问题,本申请提出直接外部设备中增加其状态保存恢复的逻辑,如配置状态保存/恢复命令的接口寄存器,以及用于存储设备运行上下文数据的设备内存,以使得设备驱动能够实现对外部设备的直接控制,实现外部设备与应用之间的交互。
所以说,计算机设备中的设备驱动能够基于外部设备的状态保存恢复逻辑,实现对该外部设备的设备运行上下文的切换,以使得应用能够依据当前运行阶段对外部设备资源的使用要求,访问外部设备,如独占外部设备资源或与其他应用共享该外部设备的资源,或者释放该外部设备,以使得其他应用能够独占该外部设备的资源,即实现了容器化场景下,多个应用对同一外部设备的共享,或某一应用处于特定运行阶段对外部设备的独占使用
结合上文步骤S11部分的描述,下面将对虚拟设备及设备运行上下文等内容的创建进行说明,本申请中,这些内容通常是在创建容器阶段实现的,具体可以参照图2所示的另一种控制方法的流程示意图,该方法主要对容器创建阶段,对虚拟设备、设备运行上下等内容的创建过程进行说明,关于其使用可以参照上文实施例的描述,如图2所示,该方法可以包括但并不限于以下步骤:
步骤S21,在容器引擎创建容器的情况下,针对该容器,配置虚拟设备标识符,并创建设备运行上下文;
在实际应用中,可以使用容器引擎docker或容器编排器实现容器创建,所以说,步骤S21的容器引擎可以指容器引擎docker或容器编排器,本实施例对容器的创建过程不做详述。
另外,本实施例可以将一组容器称为pod,且本实施例的计算机设备的操作***往往会部署多个容器,所以,在容器引擎创建容器的情况下,执行本实施例提出的控制方法,也可以认为是在创建pod的情况下,执行本实施例提出的控制方法。
本实施例中,创建容器/pod时,容器引擎可以通知设备驱动创建对应的虚拟设备,具体可以,设备驱动可以为该容器分配全局唯一的虚拟设备标识符,同时,还可以创建一份设备运行上下文,此时可以将创建的设备运行上下文作为设备默认数据,供与该虚拟设备映射的外部设备使用。
步骤S22,创建与所该虚拟设备标识符和设备运行上下文对应的虚拟设备,以及该虚拟设备的设备文件;
其中,针对计算机设备中的任一容器,创建的虚拟设备具有唯一的虚拟设备标识符,以便具体区分为计算机设备中的其他容器创建的虚拟设备。在创建虚拟设备后,将会为其创建设备文件,以便通过操作设备文件,实现对该虚拟设备的使用,本申请对虚拟设备及其设备文件的具体创建过程不做详述。
步骤S23,获取该设备文件的属性信息,并将该属性信息反馈至该容器引擎,以使应用通过容器引擎获取该设备文件的属性信息,基于该设备文件的属性信息,获取该设备文件。
其中,设备文件的属性信息可以包括设备文件的路径和/或文件号等信息,本实施例中,该属性信息主要是用来指示应用如何准确获取所需设备文件,也就是说,该属性信息可以指引应用从设备驱动创建的多个设备文件中,准确获取所需设备文件,本申请对该属性信息包含的具体内容不做限定。
在本实施例实际应用中,设备驱动针对任一容器,完成虚拟设备及其设备文件的创建后,可以将设备文件路径和/或文件号,通过容器引擎反馈至该容器中的各应用,这样,在该容器中的应用需要使用该虚拟设备的情况下,即需要对该虚拟设备的设备文件进行操作,就可以通过记录的该设备文件的文件路径和/或文件号等属性信息,读取该设备文件,进而通过操作该设备文件,使用该设备文件所属的虚拟设备。
基于上文对本申请控制方法的核心构思的描述,并结合上文对虚拟设备及其设备文件的创建过程的描述,本申请提出了对该控制方法的一种细化方案,参照图3所示的另一种控制方法的流程示意图,该方法可以包括但并不局限于以下步骤:
步骤S31,在容器中的应用运行期间,获取该应用使用的虚拟设备的设备文件;
步骤S32,查询该虚拟设备是否映射有外部设备,如果否,进入步骤S33;如果是,执行步骤S35;
在本实施例中,在虚拟设备运行的应用,能够访问该虚拟设备映射的外部设备,在实际应用中,虚拟设备是针对某一个容器创建的,但多个容器可以共享同一外部设备,所以,虚拟设备通常对应唯一容器,但可以映射多个外部设备,以使得运行在该虚拟设备中的应用,能够使用者多个外部设备。
为了提高应用使用外部设备的可靠性,在部署于某容器中的应用需要使用外部设备的情况下,如设备驱动得到该应用的设备访问请求,可以先检查该容器对应的虚拟设备当前是否映射有真实的外部设备。
步骤S33,获取当前处于空闲状态的外部设备;
在应用运行的虚拟设备当前未映射有外部设备(即应用需要使用的外部设备)的情况下,可以检测计算机***中各外部设备的状态,确定与应用需要使用的外部设备类型相同,且当前处于空闲状态的外部设备。
其中,外部设备的空闲状态可以是指其未被任一应用使用,这种情况下,该处于空闲状态的外部设备可以未与任一虚拟设备建立映射关系,或者即便有与该外部设备建立映射关系的虚拟设备,但运行在该虚拟设备中的应用当前未使用该外部设备的资源等。
当然,外部设备的空闲状态还可以指该外部设备被至少一个应用使用,但其资源仍有裕量,即还可以接受新的应用的访问请求。这种情况下,该外部设备通常映射有虚拟设备,但当前运行在映射的这些虚拟设备中的应用,并未占用该外部设备的所有资源,剩余资源还能够支持其他应用运行。
由此可见,本申请可以通过检测外部设备的映射关系,和/或该外部设备的资源占用情况等,来确定该外部设备是否处于空闲状态,但并不局限于本实施例描述的检测方法。
步骤S34,建立该虚拟设备与该当前处于空闲状态的外部设备之间的映射关系;
本申请对虚拟设备和外部设备之间的映射关系的构建方法不做限定,通常情况下,确定虚拟设备与外部设备的映射关系后,可以将该映射关系存储至相应的虚拟设备和外部设备中,以便虚拟设备中的应用能够与该外部设备之间能够进行数据交互,但并不局限于此。
步骤S35,将设备运行上下文写入该虚拟设备当前映射的外部设备;
结合上文描述,外部设备配置了用于存储设备运行上下文的设备内存,在外部设备被首次使用时,可以将设备驱动创建的设备运行上下文,写入该外部设备的设备内存中,以完成对该外部设备的初始配置,进而使得该外部设备能够正常工作。
步骤S36,向该外部设备发送状态恢复命令,以使该外部设备响应设备运行上下文,实现与应用的数据交互。
本实施例中,外部设备通过配置用于接收状态恢复命令和状态保存命令的接口寄存器,使得状态保存恢复命令接口对外透明,所以,计算机设备的设备驱动可以通过调用状态保存恢复命令接口,向该接口寄存器发送状态恢复命令,以使得该外部设备读取设备内存中的设备运行上下文,并响应该设备运行上下文,完成初始配置,进而使得应用能够正常操作该外部设备,满足应用需求,如该外部设备能够接收并响应应用发送的操作指令,以及向该应用反馈操作数据,也就是实现该外部设备与应用之间的数据交互。
其中,关于应用与外部设备的数据交互过程,本申请不做详述,具体可以依据该应用类型及其当前运行阶段的需求等因素确定,所以,对于不同类型的应用,在不同运行阶段,与外部设备的数据交互过程可能不同,本申请不做一一详述。
可选的,在实际应用中,对于按照上文实施例描述方式,实现应用与某外部设备的数据交互之后,经过一段时间,该应用可能暂时不需要使用该外部设备,为了避免该外部设备资源的浪费,可以释放该外部设备,进而使得其他应用能够使用该外部设备。具体释放过程可以参照图4所示控制方法的又一实施例的信令流程图,该方法主要对某外部设备长时间被应用访问的情况下的控制流程进行说明,如图4所示,该方法可以包括但并不局限于以下步骤:
步骤S41,设备驱动确定外部设备在预设时间段内未被应用访问,向该外部设备发送状态保存命令;
其中,预设时间段可以是一个较长的连续时间段,本申请对其具体数值不做限定。
在实际应用中,某外部设备在长时间未被使用的情况可以有很多种,如该外部设备未映射任一虚拟设备,无应用能够使用该外部设备;或者,该外部设备映射有虚拟设备,但运行在该虚拟设备的应用不需要使用该外部设备,使用的是该虚拟设备映射的其他外部设备,导致该外部设备长时间未被使用等情况,本申请对外部设备在长时间未被使用的具体情况不做限定。
为了避免对外部设备资源的浪费,在确定某外部设备长时间未被使用的情况下,可以释放该外部设备,在此之前,需要驱动设备记录该外部设备当前的设备运行上下文,以便下一次使用该外部设备时,能够控制该外部设备直接恢复到当前状态。
基于此,本实施例可以通过调用该外部设备的状态保存接口,向该外部设备的接口寄存器发送状态保存命令,但该状态保存命令的发送方法并不局限于这一种实现方式。
步骤S42,外部设备响应状态保存命令,保存当前设备运行上下文;
步骤S43,外部设备向设备驱动反馈状态保存提示信息;
外部设备接收到设备驱动要气保存状态的命令后,可以将当前设备的配置以及内部的一些关键状态数据,即该外部设备的当前设备运行上下文,同步到该外部设备的设备内存保存,本申请对外部设备的当前设备运行上下文数据内容不做限定,可以基于该外部设备的类型及其工作情况确定,且对于需要保存的该外部设备的哪些状态信息为关键状态信息,也可以基于该外部设备的类型及其工作原理等因素设定,对于不同外部设备,其需要保存的关键状态数据内容往往是不同的,本申请对其不做限定。
在实际应用中,外部设备确定将其当前设备运行上下文写入设备内存后,可以告知设备驱动,如本实施例提出的向设备驱动反馈状态保存提示信息,用来告知设备驱动该外部设备已对当前设备运行上下文备份存储。本申请对该状态保存提示信息的内容及其输出形式等不做限定。
步骤S44,设备驱动同步存储外部设备保存的当前设备运行上下文;
设备驱动得知外部设备将当前设备运行上下文写入设备内存后,可以直接从该设备内存读取该设备的当前运行上下文,并同步至驱动程序,这样,设备驱动确定该外部设备再次被使用时,可以将此时保存的上述当前设备运行上下文写入该外部设备,以使得该外部设备能够直接恢复到上一次结束使用该外部设备时的状态。
步骤S45,设备驱动释放该外部设备与虚拟设备的映射关系,并将该外部设备的当前状态调整为空闲状态。
继上文分析,设备驱动确定该外部设备长时间未被使用,可以认为各应用当前阶段不需要使用该外部设备,可以直接释放该外部设备与虚拟设备之间的映射关系,并将该外部设备的当前状态调整为空闲状态,也就是说,可以将长时间未被使用的外部设备标记为空闲设备。
这样,在今后应用运行期间,需要使用该外部设备,且其运行的虚拟设备未映射同类型的外部设备,按照上文实施例描述的方式,可以直接将该虚拟设备与该空闲设备映射,进而使用该应用能够使用该空闲设备,具体操作过程可以参照上文实施例相应部分的描述。
可选的,在确定外部设备长时间未被使用的情况下,设备驱动也可以不用释放该外部设备与虚拟设备的映射关系,而是直接调整其当前状态为空闲状态,以使得后续应用能够使用该空闲设备,如独占处于空闲状态的外部设备的资源,或与其他应用共享处于空闲状态的外部设备的资源等等。本申请对长时间未被使用的外部设备的释放方法不作限定。
综上,本申请的外部设备提供了对外透明的状态保存恢复命令接口,以使得设备驱动能够根据当前需求,直接向该外部设备发送状态保存命令或状态恢复命令,控制该外部设备进行状态保存或恢复,避免长时间对外部设备资源占用造成浪费,或者满足与应用的数据交互需求。
且,该外部设备还提供了对外透明的,设备内存保存的设备运行上下文,以使得设备驱动能够依据运行应用的实际需求,直接对该设备运行上下文进行读写操作,即设备驱动能够选择时机配合硬件设备进行上下文切换,并保存切换时的设备运行上下文,相对于现有技术对实时记录的设备运行上下文的不透明保存,不仅减少了需要保存的设备状态数据,而且简化了控制步骤,提高了控制可靠性。
其中,虚拟设备与外部设备之间的映射关系是动态的,能够在不需要使用外部设备时,及时释放该外部设备,减少了对外部设备资源的浪费,且不需要改动应用,就能够使得多个应用高效地共享外部设备。
作为本申请另一可选实施例,参照图5,为本申请提供的控制方法的又一实施例的信令流程示意图,该方法可以包括但并不局限于以下步骤:
步骤S51,容器引擎确定第一容器中的各应用均被清除,生成针对该第一容器的容器销毁命令;
在本实施例实际应用中,计算机设备的操作***可以部署至少一个容器,每一个容器中都可以部署至少一个应用。这样,在确定任一容器中的所有应用都被清除的情况下,为了节省空间,可以考虑销毁该容器,所以此时可以生成针对该容器的容器销毁命令。
其中,步骤S51中的第一容器可以是部署在计算机设备的操作***的任一容器,本申请对如何检测第一容器中的各应用是否都被清除的方法不做限定,如检测各应用进程是否都结束等方法。
步骤S52,容器引擎将该容器销毁命令发送至设备驱动;
步骤S53,设备驱动响应该容器销毁命令,释放第一容器对应的虚拟设备标识符及设备运行上下文;
步骤S54,设备驱动清除针对第一容器创建的虚拟设备。
本实施例中,容器引擎确定可以销毁某容器后,可以将针对该容器的容器销毁命令发送至设备驱动,由该设备驱动响应该容器销毁命令,具体可以在销毁容器之前,可以先释放该容器对应的虚拟设备标识符及设备运行上下文,再清除针对该容器创建的虚拟设备,具体清除方法本实施例不做限定。
由此可见,在容器中的各应用不再使用的情况下,本实施例可以销毁该容器,避免该容器对计算机设备资源的占用,为其他应用或设备工作腾出空间。
参照图6,为本申请提供的控制装置的一种实施例的结构示意图,该装置可以应用于计算机设备,具体可以包括:
获取模块11,用于在容器中的应用运行期间,获取所述应用使用的虚拟设备的设备文件,并确定所述虚拟设备所映射的外部设备;
其中,外部设备可以包括:用于接收状态恢复命令和状态保存命令的接口寄存器,以及用于存储设备运行上下文的设备内存,且该设备运行上下文可以包含有所述外部设备的配置信息以及状态信息。
控制模块12,用于基于所述外部设备中的状态保存恢复逻辑,实现对所述外部设备的设备运行上下文的切换,以使得所述应用能够访问或释放所述外部设备。
可选的,如图7所示,该控制模块12可以包括:
写入单元121,用于在所述应用需要使用所述外部设备的情况下,将所述外部设备的设备运行上下文写入所述外部设备;
状态恢复命令发送单元122,用于向所述外部设备发送状态恢复命令,以使所述外部设备响应所述设备运行上下文,实现与所述应用的数据交互;
状态保存命令发送单元123,用于所述外部设备在预设时间段内未被所述应用访问的情况下,向所述外部设备发送状态保存命令,以使所述外部设备保存当前设备运行上下文;
数据同步单元124,用于同步所述外部设备的当前设备运行上下文;
设备释放单元125,用于释放所述外部设备与所述虚拟设备的映射关系,并将所述外部设备的当前状态调整为空闲状态。
作为本申请另一可选实施例,如图7所示,上述获取模块11可以包括:
查询单元111,用于查询所述虚拟设备是否映射有外部设备,在查询结果为是的情况下,触发控制模块12执行所述基于所述外部设备中的状态保存恢复逻辑,实现对所述外部设备的设备运行上下文的切换步骤;
映射关系建立单元112,用于在所述查询单元的查询结果为否的情况下,获取当前处于空闲状态的外部设备,并建立所述虚拟设备与所述当前处于空闲状态的外部设备之间的映射关系。
可选的,参照图8,在容器引擎创建所述容器的情况下,该装置还可以包括:
第一创建模块13,用于针对所述容器,配置虚拟设备标识符并创建设备运行上下文;
第二创建模块14,用于创建与所述虚拟设备标识符和所述设备运行上下文对应的虚拟设备,以及所述虚拟设备的设备文件;
信息获取模块15,用于获取所述设备文件的属性信息,并将所述属性信息反馈至所述容器引擎,以使所述应用通过所述容器引擎获取所述设备文件的属性信息,基于所述设备文件的属性信息,获取所述设备文件;
其中,所述设备文件的属性信息包括所述设备文件的路径和/或文件号。
作为本申请又一实施例,如图9所示,该装置还可以包括:
命令接收模块16,用于接收所述容器引擎发送的针对所述容器的容器销毁命令,所述容器销毁命令是在所述容器中的各应用被清除的情况下生成的;
释放模块17,用于响应所述容器销毁命令,释放所述容器对应的虚拟设备标识符及设备运行上下文;
清除模块18,用于清除针对所述容器创建的所述虚拟设备。
需要说明,上述模块和单元可以是实现相应功能的程序模块,而各程序模块实现相应功能的具体实现过程,可以参照上述方法实施例相应部分的描述,本实施例不再赘述。
参照图10,为本申请实施例提供的一种计算机设备的硬件结构图,该计算机设备可以是终端或者服务器等,本申请对其产品类型不做限定,在本实施例中,该计算机设备可以包括:通信接口21,外部设备22、存储器23以及处理器24,其中:
通信接口21可以包括无线通信模块和/或有线通信模块的接口,如WIFI模块、GPRS模块、GSM模块等等通信模块的接口,还可以是USB接口、并/串口等实现计算机设备内部数据交互的接口。
外部设备22可以是计算机设备中除了主机之外的硬件设备,本申请对外部设备的数量及其类型不做限定,可以基于计算机设备的产品类型及其功能等因素确定,如加速器、GPU等。
存储器23用于存储实现上述控制方法的程序;
在本申请中,存储器23还可以用来存储设备文件,以及应用运行期间所产生的各种数据等等。
可选的,该存储器可以存储实现上述虚拟装置包含的各功能模块的程序代码,具体可以是高速RAM存储器,或者是非易失性存储器(non-volatile memory),例如至少一个磁盘存储器等。
处理器24可以是中央处理器CPU、或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本申请实施例的一个或多个集成电路,本申请对该处理器44的组成结构不作限定。
在本申请实施例中,处理器24用于加载并执行存储器存储的程序,实现上述控制方法的各个步骤,本申请在此不再赘述。
需要说明,本申请提出的计算机设备的结构组成,并不局限于上文列举的几部分,可以依据计算机设备的产品类型确定,本申请不再一一详述。
最后,需要说明的是,关于上述各实施例中,诸如第一、第二等之类的关系术语仅仅用来将一个操作、单元或模块与另一个操作、单元或模块区分开来,而不一定要求或者暗示这些单元、操作或模块之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法或者***不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法或者***所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法或者***中还存在另外的相同要素。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置、计算机设备而言,由于其与实施例公开的方法对应,所以描述的比较简单,相关之处参见方法部分说明即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (9)
1.一种控制方法,所述方法包括:
在容器中的应用运行期间,获取所述应用使用的虚拟设备的设备文件,并确定所述虚拟设备所映射的外部设备;
基于所述外部设备中的状态保存恢复逻辑,实现对所述外部设备的设备运行上下文的切换,以使得所述应用能够依据当前运行阶段对外部设备资源的使用要求访问或释放所述外部设备,以实现所述外部设备与应用之间的交互,所述设备运行上下文包括所述外部设备的配置以及预设的关键状态数据;
其中,所述外部设备包括:用于接收状态恢复命令和状态保存命令的接口寄存器,以及用于存储设备运行上下文的设备内存,所述设备运行上下文包含有所述外部设备的配置信息以及状态信息。
2.根据权利要求1所述的方法,所述基于所述外部设备中的状态保存恢复逻辑,实现对所述外部设备的设备运行上下文的切换,包括:
在所述应用需要使用所述外部设备的情况下,将所述外部设备的设备运行上下文写入所述外部设备,并向所述外部设备发送状态恢复命令,以使所述外部设备响应所述设备运行上下文,实现与所述应用的数据交互;
若所述外部设备在预设时间段内未被所述应用访问,向所述外部设备发送状态保存命令,以使所述外部设备保存当前设备运行上下文;
同步所述外部设备的当前设备运行上下文,释放所述外部设备与所述虚拟设备的映射关系,并将所述外部设备的当前状态调整为空闲状态。
3.根据权利要求2所述的方法,所述确定所述虚拟设备所映射的外部设备,包括:
查询所述虚拟设备是否映射有外部设备;
如果是,执行所述基于所述外部设备中的状态保存恢复逻辑,实现对所述外部设备的设备运行上下文的切换步骤;
如果否,获取当前处于空闲状态的外部设备,并建立所述虚拟设备与所述当前处于空闲状态的外部设备之间的映射关系。
4.根据权利要求1~3任一项所述的方法,在容器引擎创建所述容器的情况下,所述方法还包括:
针对所述容器,配置虚拟设备标识符并创建设备运行上下文;
创建与所述虚拟设备标识符和所述设备运行上下文对应的虚拟设备,以及所述虚拟设备的设备文件;
获取所述设备文件的属性信息,并将所述属性信息反馈至所述容器引擎,以使所述应用通过所述容器引擎获取所述设备文件的属性信息,基于所述设备文件的属性信息,获取所述设备文件;
其中,所述设备文件的属性信息包括所述设备文件的路径和/或文件号。
5.根据权利要求4所述的方法,所述方法还包括:
接收所述容器引擎发送的针对所述容器的容器销毁命令,所述容器销毁命令是在所述容器中的各应用被清除的情况下生成的;
响应所述容器销毁命令,释放所述容器对应的虚拟设备标识符及设备运行上下文;
清除针对所述容器创建的所述虚拟设备。
6.一种控制装置,所述装置包括:
获取模块,用于在容器中的应用运行期间,获取所述应用使用的虚拟设备的设备文件,并确定所述虚拟设备所映射的外部设备,所述外部设备包括:用于接收状态恢复命令和状态保存命令的接口寄存器,以及用于存储设备运行上下文的设备内存,所述设备运行上下文包含有所述外部设备的配置信息以及状态信息;
控制模块,用于基于所述外部设备中的状态保存恢复逻辑,实现对所述外部设备的设备运行上下文的切换,以使得所述应用能够依据当前运行阶段对外部设备资源的使用要求访问或释放所述外部设备,以实现所述外部设备与应用之间的交互,所述设备运行上下文包括所述外部设备的配置以及预设的关键状态数据。
7.根据权利要求6所述的装置,所述控制模块包括:
写入单元,用于在所述应用需要使用所述外部设备的情况下,将所述外部设备的设备运行上下文写入所述外部设备;
状态恢复命令发送单元,用于向所述外部设备发送状态恢复命令,以使所述外部设备响应所述设备运行上下文,实现与所述应用的数据交互;
状态保存命令发送单元,用于所述外部设备在预设时间段内未被所述应用访问的情况下,向所述外部设备发送状态保存命令,以使所述外部设备保存当前设备运行上下文;
数据同步单元,用于同步所述外部设备的当前设备运行上下文;
设备释放单元,用于释放所述外部设备与所述虚拟设备的映射关系,并将所述外部设备的当前状态调整为空闲状态。
8.根据权利要求7所述的装置,所述获取模块包括:
查询单元,用于查询所述虚拟设备是否映射有外部设备,在查询结果为是的情况下,触发所述控制模块执行所述基于所述外部设备中的状态保存恢复逻辑,实现对所述外部设备的设备运行上下文的切换步骤;
映射关系建立单元,用于在所述查询单元的查询结果为否的情况下,获取当前处于空闲状态的外部设备,并建立所述虚拟设备与所述当前处于空闲状态的外部设备之间的映射关系。
9.一种计算机设备,所述计算机设备包括:
通信接口,所述通信接口用于连接外部设备,所述外部设备配置有状态保存恢复逻辑;
存储器,用于存储实现如权利要求1~5任意一项所述的控制方法的程序;
处理器,用于加载并执行所述存储器存储的程序,所述程序用于:
在容器中的应用运行期间,获取所述应用使用的虚拟设备的设备文件,并确定所述虚拟设备所映射的外部设备,所述外部设备包括:用于接收状态恢复命令和状态保存命令的接口寄存器,以及用于存储设备运行上下文的设备内存,所述设备运行上下文包含有所述外部设备的配置信息以及状态信息;
基于所述外部设备中的状态保存恢复逻辑,实现对所述外部设备的设备运行上下文的切换,以使得所述应用能够依据当前运行阶段对外部设备资源的使用要求访问或释放所述外部设备,以实现所述外部设备与应用之间的交互,所述设备运行上下文包括所述外部设备的配置以及预设的关键状态数据;
其中,所述应用访问所述外部设备,以使得所述应用独占所述外部设备资源或者所述应用与其他应用共享所述外部设备资源;所述应用释放所述外部设备,以使得其他应用独占所述外部设备资源。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910228643.4A CN109933435B (zh) | 2019-03-25 | 2019-03-25 | 控制方法、装置及计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910228643.4A CN109933435B (zh) | 2019-03-25 | 2019-03-25 | 控制方法、装置及计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109933435A CN109933435A (zh) | 2019-06-25 |
CN109933435B true CN109933435B (zh) | 2022-03-25 |
Family
ID=66988103
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910228643.4A Active CN109933435B (zh) | 2019-03-25 | 2019-03-25 | 控制方法、装置及计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109933435B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110955510B (zh) * | 2019-12-11 | 2021-03-02 | 腾讯科技(上海)有限公司 | 一种隔离处理方法以及相关装置 |
CN113296872B (zh) * | 2020-04-13 | 2022-05-06 | 阿里巴巴集团控股有限公司 | 容器状态查询方法、装置、设备、存储介质和*** |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1936845A (zh) * | 2005-09-19 | 2007-03-28 | 联想(北京)有限公司 | 一种虚拟机***输入/输出设备动态分配的方法及其设备 |
US7454756B2 (en) * | 2004-03-05 | 2008-11-18 | Intel Corporation | Method, apparatus and system for seamlessly sharing devices amongst virtual machines |
CN105354090A (zh) * | 2015-10-16 | 2016-02-24 | 安一恒通(北京)科技有限公司 | 虚拟设备的管理方法和装置 |
CN107179955A (zh) * | 2017-05-08 | 2017-09-19 | 北京海杭通讯科技有限公司 | 基于Android容器的设备隔离方法及其终端 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010097933A1 (ja) * | 2009-02-27 | 2010-09-02 | 富士通株式会社 | 情報処理装置、情報処理方法及びコンピュータプログラム |
US8438349B2 (en) * | 2009-08-21 | 2013-05-07 | Symantec Corporation | Proxy backup of virtual disk image files on NAS devices |
US20150106805A1 (en) * | 2013-10-15 | 2015-04-16 | Cisco Technology, Inc. | Accelerated instantiation of cloud resource |
US10091070B2 (en) * | 2016-06-01 | 2018-10-02 | Cisco Technology, Inc. | System and method of using a machine learning algorithm to meet SLA requirements |
-
2019
- 2019-03-25 CN CN201910228643.4A patent/CN109933435B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7454756B2 (en) * | 2004-03-05 | 2008-11-18 | Intel Corporation | Method, apparatus and system for seamlessly sharing devices amongst virtual machines |
CN1936845A (zh) * | 2005-09-19 | 2007-03-28 | 联想(北京)有限公司 | 一种虚拟机***输入/输出设备动态分配的方法及其设备 |
CN105354090A (zh) * | 2015-10-16 | 2016-02-24 | 安一恒通(北京)科技有限公司 | 虚拟设备的管理方法和装置 |
CN107179955A (zh) * | 2017-05-08 | 2017-09-19 | 北京海杭通讯科技有限公司 | 基于Android容器的设备隔离方法及其终端 |
Also Published As
Publication number | Publication date |
---|---|
CN109933435A (zh) | 2019-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10990540B2 (en) | Memory management method and apparatus | |
CN100426238C (zh) | Vex-虚拟扩展框架 | |
US9558016B2 (en) | Platform system, method for changing support hardware configuration of universal extensible firmware interface basic input output system and computer program product | |
US8719639B2 (en) | Virtual machine control program, virtual machine control system, and dump capturing method | |
US8738890B2 (en) | Coupled symbiotic operating system | |
CN105874428B (zh) | 用于多个操作***环境中的操作***转变的技术 | |
CN109933435B (zh) | 控制方法、装置及计算机设备 | |
CN110704161B (zh) | 虚拟机创建方法、装置及计算机设备 | |
US20190227918A1 (en) | Method for allocating memory resources, chip and non-transitory readable medium | |
CN103324582A (zh) | 一种内存迁移方法、装置及设备 | |
CN116028455A (zh) | 一种数据处理方法、装置、存储介质及电子设备 | |
CN1979428A (zh) | 自动释放嵌入式***中应用程序模块泄漏内存的*** | |
CN111628895B (zh) | 一种配置数据同步方法、装置、设备及可读存储介质 | |
CN113485789B (zh) | 资源配置方法、装置及计算机架构 | |
CN113704177A (zh) | 一种服务器固件升级文件的存储方法、***及相关组件 | |
CN114489826A (zh) | 芯片运行方法、装置、存储介质及电子设备 | |
WO2014087654A1 (ja) | データ送信装置、データ送信方法、及び記録媒体 | |
CN117692322B (zh) | 网卡配置方法、装置、电子设备及存储介质 | |
CN117369891B (zh) | 一种服务器的启动运行方法、装置、服务器及存储介质 | |
CN113918353B (zh) | 工作负载扩容方法和*** | |
CN115982060B (zh) | 一种内存回收方法及相关装置 | |
CN117687703B (zh) | 服务器的启动方法、装置、***、存储介质和电子设备 | |
CN112162830B (zh) | 虚拟机快速启动方法、存储介质及终端 | |
CN117407180A (zh) | 一种栅栏对象同步方法、装置、设备及存储介质 | |
CN115129459A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |