虚拟机中闲置资源的分配方法和装置与流程

文档序号:20681752发布日期:2020-05-08 18:27阅读:197来源:国知局
虚拟机中闲置资源的分配方法和装置与流程

本申请涉及计算机技术领域,尤其涉及一种虚拟机中闲置资源的分配方法和装置。



背景技术:

目前,越来越多机器学习平台为用户提供数据处理、建模开发、模型训练的一站式开发环境。如何为数据处理、模型训练作业等分配资源、对资源进行高效管理是一个重要的技术问题。比如用户使用开发环境进行开发虽然是一个长驻操作,但不是一个永久性操作,用户夜间休息、假期休息等都属于无效占用时间。因此,可以在用户使用时开发环境存在、用户不使用时将资源可以释放出去。

相关技术中,在机器学习平台中设置资源监控模块,用于监控每个开发环境容器的使用情况,发现不使用结束该开发环境容器的服务进程实现资源释放。



技术实现要素:

本申请旨在至少在一定程度上解决相关技术中的技术问题之一。

为此,本申请的第一个目的在于提出一种虚拟机中闲置资源的分配方法,虚拟机之上运行至少一个开发环境容器,包括以下步骤:

检测所述开发环境容器的使用状态;

根据所述开发环境容器的使用状态判断所述开发环境容器是否处于闲置状态;以及

如果判断所述开发环境容器处于闲置状态,则将所述开发环境容器对应的资源释放至所述开发环境容器所属的虚拟机之中。

为达上述目的,本申请第二方面实施例提出了一种虚拟机中闲置资源的分配装置,虚拟机之上运行至少一个开发环境容器,包括:

检测模块,用于检测所述开发环境容器的使用状态;

判断模块,用于根据所述开发环境容器的使用状态判断所述开发环境容器是否处于闲置状态;以及

释放模块,用于判断所述开发环境容器处于闲置状态时,将所述开发环境容器对应的资源释放至所述开发环境容器所属的虚拟机之中。

为达上述目的,本申请第三方面实施例提出了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时,执行如上述实施例描述的虚拟机中闲置资源的分配方法。

为达上述目的,本申请第四方面实施例提出了一种计算机程序产品,当所述计算机程序产品中的指令处理器执行时,执行如上述实施例描述的虚拟机中闲置资源的分配方法。

为了实现上述目的,本申请第五方面实施例提出了一种非临时性计算机可读存储介质,该程序被处理器执行时实现如上述实施例描述的虚拟机中闲置资源的分配方法。

本申请提供的及技术方案,至少具有如下有益技术效果:

检测开发环境容器的使用状态,并根据开发环境容器的使用状态判断开发环境容器是否处于闲置状态,以及如果判断开发环境容器处于闲置状态时将开发环境容器对应的资源释放至开发环境容器所属的虚拟机之中。由此,在开发环境容器处于闲置状态时,将开发环境容器对应的资源释放至开发环境容器所属的虚拟机之中,减少闲置内存占用问题。

本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。

附图说明

本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:

图1是根据本申请一个实施例的虚拟机中闲置资源的分配方法的流程图;

图2是根据本申请另一个实施例的虚拟机中闲置资源的分配方法的流程图;

图3是根据本申请又一个实施例的虚拟机中闲置资源的分配方法的流程图;

图4是根据本申请一个实施例的虚拟机中闲置资源的分配方法的示例图;

图5是根据本申请一个实施例的虚拟机中闲置资源的分配装置的结构示意图;

图6是根据本申请另一个实施例的虚拟机中闲置资源的分配装置的结构示意图;以及

图7是根据本申请又一个实施例的虚拟机中闲置资源的分配装置的结构示意图。

具体实施方式

下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。

本申请提供了一种虚拟机中闲置资源的分配方法,在本申请的实施例中,在开发环境容器处于闲置状态时,将开发环境容器对应的资源释放至开发环境容器所属的虚拟机之中,减少闲置内存占用问题。

下面参考附图描述本申请实施例的虚拟机中闲置资源的分配方法和装置。

图1是根据本申请一个实施例的全景页面切换时拍摄点的移动控制虚拟机中闲置资源的分配方法的流程图,如图1所示,该方法包括以下步骤:

步骤101,检测开发环境容器的使用状态。

具体地,机器学习平台可以为用户提供数据处理、建模开发、模型训练的一站式开发环境。在本申请实施例中,可以在在物理机上创建多个kvm虚拟机(kernel-basedvirtualmachine,一个开源的系统虚拟化模块),在kvm虚机上可以部署一个或者多个开发环境容器作为机器学习开发环境。

可以理解的是,在执行本申请实施例的虚拟机中闲置资源的分配方法时,虚拟机之上运行至少一个开发环境容器。

其中,可以采用很多种方式检测开发环境容器的使用状态,举例说明如下:

第一种示例,获取开发环境容器的cpu(centralprocessingunit,中央处理器)的占用率,并将cpu占用率与预设的第一阈值进行比较,从而根据一段时间内的比较结果确定开发环境容器的使用状态。

第二种示例,预先设置的监控策略模块,通过该监控策略模块对开发环境容器的活动状态进行监控,并根据监控结果确定开发环境容器的使用状态。

可以理解的是,本申请实施例中的开发环境容器的使用状态可以是闲置状态、占用状态等。

步骤102,根据开发环境容器的使用状态判断开发环境容器是否处于闲置状态。

步骤103,如果判断开发环境容器处于闲置状态,则将开发环境容器对应的资源释放至开发环境容器所属的虚拟机之中。

具体地,在判断开发环境容器处于闲置状态时,可以将开发环境容器对应的资源释放至开发环境容器所属的虚拟机之中。

也就是说,用户没有对页面进行操作,开发环境容器对应的资源属于无效占用时间,这时候可以将该资源释放至开发环境容器所属的虚拟机之中。作为一种可能实现的方式,使用dockerswap技术将开发环境容器中的资源释放至开发环境容器所属的虚拟机之中。

其中,dockerswap技术是docker基于linux内核cgroup的技术。在宿主机系统中可以在磁盘配置swap分区用来存放非活跃的匿名页。因此,cgroup作为docker资源管理的driver,可以通过修改开发环境容器cgroup中参数来动态调整docker容器可用的宿主机swap空间,通过修改对应参数来动态调整宿主机可用资源。当增大swap参数,减小资源参数时,就可以达到将开发环境容器中的资源释放的效果。

综上,本申请实施例的虚拟机中闲置资源的分配方法,检测开发环境容器的使用状态,并根据开发环境容器的使用状态判断开发环境容器是否处于闲置状态,以及如果判断开发环境容器处于闲置状态时将开发环境容器对应的资源释放至开发环境容器所属的虚拟机之中。由此,在开发环境容器处于闲置状态时,将开发环境容器对应的资源释放至开发环境容器所属的虚拟机之中,减少闲置内存占用问题。

图2是根据本申请另一个实施例的虚拟机中闲置资源的分配方法的流程图,如图2所示,该方法包括以下步骤:

步骤201,当开发环境容器的cpu占用率低于第一阈值,且持续时间大于第二阈值时,则判断开发环境容器处于闲置状态。

步骤202,将开发环境容器对应的资源释放至开发环境容器所属的虚拟机之中。

步骤203,虚拟机将资源分配至其他开发环境容器。

步骤204,将虚拟机的资源释放至虚拟机所属的物理机。

可以理解的是,相关技术中,释放的资源一般只能用来建立新的容器开发环境给其他的用户进行开发,导致释放的资源难以被灵活应用。本实施描述的虚拟机中闲置资源的分配方法能够提高虚拟机中闲置资源的分配的灵活性,进一步提高释放的资源的灵活应用。

具体地,获取开发环境容器的cpu占用率,比如0.1,低于第一阈值0.2,并且开发环境容器的cpu占用率为0.1的持续时间大于第二阈值十分钟时,确定开发环境容器处于闲置状态。其中,第一阈值和第二阈值可以根据实际应用需要进行设置。

可以理解的是,开发环境容器的cpu占用率低于第一阈值但是持续时间很短可能是由于某些突发情况,暂时不使用,并不是开发环境容器真正处于闲置状态。

进一步地,从而虚拟机可用的内存将会增大,可以执行步骤203、将此内存分配给同一kvm虚拟机的其他开发环境容器使用其资源,还可以执行步骤204将虚拟机的资源释放至虚拟机所属的物理机,供物理机的其他服务使用,实现释放的资源的灵活应用。

需要说明的是,还可以具体分析资源的情况,合理分配同时执行步骤203和步骤204,即将一部分资源分配给同一kvm虚拟机的其他开发环境容器使用,将另一部分资源释放至虚拟机所属的物理机,,供物理机的其他服务使用。

作为一种可能实现的方式,使用kvmballoon技术将虚机闲置资源释放到物理机,供物理机其他服务使用,比如其他虚拟机或其他程序使用。

具体地,释放出来的空闲资源相当于是物理机即时可用的空闲资源,可以通过balloondriver分配给其他虚拟机,或者跑任何占用内存资源的任务。作为一种场景举例,在机器学习场景下,这部分空闲资源被用来在夜间跑定时调度的批量计算任务。

其中,kvmballoon技术是基于linux内核virtio-balloon驱动的技术,其基本原理是:虚拟机可以通过balloondriver对自己的空闲资源存进行标记,宿主机对标记的空闲资源进行分配和调度,此为虚拟机的内存收缩操作。

由此,当开发环境容器的cpu占用率低于第一阈值,且持续时间大于第二阈值时判断开发环境容器处于闲置状态,将开发环境容器对应的资源释放至开发环境容器所属的虚拟机之中,虚拟机将资源分配至其他开发环境容器,或者是将虚拟机的资源释放至虚拟机所属的物理机,提高虚拟机中闲置资源的分配的灵活性,进一步提高释放的资源的灵活应用。

图3是根据本申请又一个实施例的虚拟机中闲置资源的分配方法的流程图,如图3所示,在步骤103之后,该方法包括以下步骤:

步骤301,继续检测开发环境容器的使用状态。

步骤302,根据开发环境容器的使用状态判断开发环境容器是否处于唤醒状态。

步骤303,如果判断开发环境容器处于唤醒状态,则将开发环境容器释放的资源重新加载至开发环境容器。

可以理解的是,在确定开发环境容器的使用状态为闲置状态后继续检测开发环境容器的使用状态。比如通过当开发环境容器的cpu占用率低于第一阈值且持续时间大于第二阈值时,判断开发环境容器处于闲置状态后,继续检测开发环境容器的cpu占用率,当开发环境容器的cpu占用率大于第三阈值时,判断开发环境容器处于唤醒状态。

其中,第一阈值、第二阈值和第三阈值可以实际应用需要进行选择,第一阈值小于第三阈值。

再比如,在确定开发环境容器的使用状态为闲置状态后检测到开发环境容器接收到用户指令,比如用户在进行页面操作等,判断开发环境容器处于唤醒状态。

进一步地,在判断开发环境容器是否处于唤醒状态,将开发环境容器释放的资源重新加载至开发环境容器。作为一种可能实现的方式,可将物理机的资源通过kvmballoon技术加载到kvm虚拟机,同时将资源加载回开发环境容器中,以获得开发环境容器唤醒的效果。

具体地,虚拟机也可以通过balloondriver向宿主机重新申请内存,此为虚拟机内存的恢复操作,balloondriver在对资源进行换入换出的时候不会对当前虚拟机运行状态造成影响。

由此,能够将已经释放的资源加载回去,进一步提高释放的资源的灵活应用。

为了本领域人员能够清楚本申请实施例的虚拟机中闲置资源的分配方法,下面结合图4以进行详细说明。

具体地,如图4所示,在物理机上创建多个kvm虚拟机,在kvm虚机部署多个docker(开发环境容器)作为机器学习开发环境,部署监控系统监控机器学习开发环境使用状态,如当开发环境容器的cpu占用率持续低于某一阈值时即判断为当前开发环境容器也就是开发环境资源闲置,使用dockerswap技术将开发环境容器中的资源释放至开发环境容器所属的虚拟机之中,此时虚拟机可用内存将会增大,可以将此内存分配给同一kvm的其他开发环境容器。进一步的,可以使用kvmballoon技术将虚机闲置资源换出到物理机,供物理机其他服务使用。

其中,如果检测到用户开始使用开发环境,如用户对开发环境页面有操作,或者开发环境容器cpu使用率上升,此时可将物理机的资源通过balloon加载到kvm虚拟机,同时将资源加载回开发环境容器中,以获得开发环境容器唤醒的效果。

由此,结合开发环境容器的dockerswap技术和kvmballoon技术,减少在机器学习数据挖掘中闲置资源占用问题,将闲置资源换出到虚拟机的磁盘上,进而对开发环境容器进行“智能缩容”,将资源还给kvm虚拟机供其他活动的数据挖掘环境或者将资源还给物理机,供物理机其他服务使用。

为了实现上述实施例,本申请还提出了一种虚拟机中闲置资源的分配装置。

图5是根据本申请一个实施例的虚拟机中闲置资源的分配装置的结构示意图,如图5所示,该装置包括检测模块100、判断模块200和释放模块300,其中,虚拟机之上运行至少一个开发环境容器,

检测模块100,用于检测开发环境容器的使用状态。

判断模块200,用于根据开发环境容器的使用状态判断开发环境容器是否处于闲置状态。以及

释放模块300,用于判断开发环境容器处于闲置状态时,将开发环境容器对应的资源释放至开发环境容器所属的虚拟机之中。

在本申请的一个实施例中,如图6所示,在如图5所示的基础上,还包括:第一发送模块400和第二发送模块500,其中,

第一发送模块400,用于虚拟机将资源分配至其他开发环境容器。

第二发送模块500,用于将虚拟机的资源释放至虚拟机所属的物理机。

在本申请的一个实施例中,如图7所示,在如图5所示的基础上,该装置还包括:处理模块600。

其中,检测模块100,还用于继续检测开发环境容器的使用状态。

判断模块200,还用于根据开发环境容器的使用状态判断开发环境容器是否处于唤醒状态。

处理模块600,用于如果判断开发环境容器处于唤醒状态,则将开发环境容器释放的资源重新加载至开发环境容器。

在本申请的一个实施例中,当开发环境容器的cpu占用率低于第一阈值,且持续时间大于第二阈值时,则判断开发环境容器处于闲置状态。

在本申请的一个实施例中,当检测到开发环境容器接收到用户指令,或开发环境容器的cpu占用率大于第三阈值时,则判断开发环境容器处于唤醒状态。

需要说明的是,前述对虚拟机中闲置资源的分配方法实施例的解释说明也适用于该实施例的虚拟机中闲置资源的分配装置,此处不再赘述。

综上,本申请实施例的虚拟机中闲置资源的分配装置,检测开发环境容器的使用状态,并根据开发环境容器的使用状态判断开发环境容器是否处于闲置状态,以及如果判断开发环境容器处于闲置状态时将开发环境容器对应的资源释放至开发环境容器所属的虚拟机之中。由此,在开发环境容器处于闲置状态时,将开发环境容器对应的资源释放至开发环境容器所属的虚拟机之中,减少闲置内存占用问题,提高释放的资源应用的灵活性。

为了实现上述实施例,本申请还提出一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,以用于实现上述实施例描述的虚拟机中闲置资源的分配方法。

为了实现上述实施例,本申请还提出一种计算机程序产品,包括:处理器,其中,处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,以用于实现上述实施例描述的虚拟机中闲置资源的分配方法。

为了实现上述实施例,本申请还提出一种非临时性计算机可读存储介质,当所述存储介质中的指令由处理器被执行时,使得能够执行上述实施例示出的虚拟机中闲置资源的分配方法。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1