一种资源配置方法及系统

文档序号:26003501发布日期:2021-07-23 21:21阅读:66来源:国知局
一种资源配置方法及系统

本发明涉及计算机技术领域,特别是涉及一种资源配置方法及系统。



背景技术:

在终端(例如,台式电脑、笔记本电脑等)配置的linux操作系统中会同时运行多个不同的应用程序,操作系统中的多个应用程序之间,共同使用终端的系统资源(例如,cpu(centralprocessingunit,中央处理器)资源、内存资源和网络带宽资源),以及终端中的模块(例如,摄像头、显卡等)。当系统资源无法满足所有应用程序的资源需求时,可能会导致所有应用程序同时崩溃。另外,当一个应用程序存在漏洞时,恶意程序可能通过该应用程序的漏洞攻击操作系统,进而攻击操作系统中的其他应用程序。

为了解决上述问题,可以在操作系统中创建多个容器,一个容器只运行一个或多个指定应用程序,容器中包含了指定应用程序所需的系统资源。现有技术中,当需要运行一个应用程序(可以称为目标应用程序)时,终端可以通过容器管理器(lxcruntime)创建一个新的容器(可以称为目标容器),用于运行目标应用程序。并通过资源限制器(cgroup)对目标容器进行资源配置,具体的,可以为目标容器分配系统资源,以及设置目标容器的调用权限,目标容器的调用权限表示是否允许目标应用程序调用终端中的各模块。



技术实现要素:

本发明实施例的目的在于提供一种资源配置方法及系统,以实现为目标容器进行资源配置,并灵活的更新目标容器的资源配置。具体技术方案如下:

第一方面,为了达到上述目的,本发明实施例提供了一种资源配置方法,所述方法应用于终端,所述终端包括:资源管理器resourcesmanager、容器管理器lxcruntime和资源限制器cgroup,所述方法包括:当接收到容器创建请求时,所述资源管理器向所述容器管理器转发所述容器创建请求;所述容器管理器接收到所述容器创建请求时,创建一个新的容器,作为目标容器;所述资源限制器为所述目标容器进行资源配置;当接收到针对所述目标容器的配置更新请求时,所述资源管理器将所述配置更新请求中携带的更新后的目标配置信息,写入所述目标容器对应的预设存储位置;所述资源限制器获取所述预设存储位置中记录的所述目标配置信息,并按照所述目标配置信息更新所述目标容器的资源配置。

可选的,所述目标配置信息包括以下至少一项:为所述目标容器分配的cpu资源的资源大小、内存资源的资源大小、网络带宽资源的资源大小和磁盘资源的资源大小。

可选的,所述终端还包括:设备表rdev;所述目标配置信息包括:所述终端中允许所述目标容器调用的第一模块的名称,以及禁止所述目标容器调用的第二模块的名称;在所述资源管理器将所述配置更新请求中携带的更新后的目标配置信息,写入所述目标容器对应的预设存储位置之前,所述方法还包括:当接收到针对目标容器的配置更新请求时,所述资源管理器向所述设备表发送所述第一模块的名称和所述第二模块的名称;所述设备表在模块的名称与通用编号的对应关系中,确定所述第一模块的名称对应的通用编号,得到所述第一模块的通用编号;以及确定所述第二模块的名称对应的通用编号,得到所述第二模块的通用编号,并向所述资源管理器发送所述第一模块的通用编号和所述第二模块的通用编号;所述资源管理器将所述配置更新请求中携带的更新后的目标配置信息,写入所述目标容器对应的预设存储位置,包括:所述资源管理器将所述第一模块的通用编号,写入所述目标容器对应的用于存储允许所述目标容器调用的模块的通用编号的第一预设存储位置;以及将所述第二模块的通用编号,写入用于存储禁止所述目标容器调用的模块的通用编号的第二预设存储位置;所述资源限制器获取所述预设存储位置中记录的所述目标配置信息,并按照所述目标配置信息更新所述目标容器的资源配置,包括:所述资源限制器获取所述第一预设存储位置记录的所述第一模块的通用编号,并允许所述目标容器调用所述第一模块;获取所述第二预设存储位置记录的所述第二模块的通用编号,并禁止所述目标容器调用所述第二模块。

可选的,在所述资源限制器为所述目标容器进行资源配置之前,所述方法还包括:所述容器管理器向所述设备表发送请求消息;其中,所述请求消息用于获取所述终端中所有模块的通用编号;所述设备表在接收到所述请求消息之后,获取所述终端中的所有模块的通用编号,并向所述容器管理器发送所述终端中的所有模块的通用编号;所述容器管理器将所述终端中的所有模块的通用编号写入所述第一预设存储位置;所述资源限制器获取所述第一预设存储位置中记录的所述终端中的所有模块的通用编号,并允许所述目标容器调用所述终端中的所有模块,并向所述容器管理器发送第一通知消息;其中,所述第一通知消息用于通知所述容器管理器已允许所述目标容器调用所述终端中的所有模块;所述容器管理器接收到所述第一通知消息时,通过预设的驱动程序对所述终端中的所有模块进行初始化。

可选的,所述容器创建请求中携带有所述终端中允许所述目标容器调用的第三模块的名称,和禁止所述目标容器调用的第四模块的名称;在所述容器管理器接收到所述第一通知消息时,通过预设的驱动程序对所述终端中的所有模块进行初始化之后,所述方法还包括:在对所述终端中的所有模块初始化完成时,所述容器管理器向所述资源管理器发送第二通知消息;在接收到所述第二通知消息时,所述资源管理器向所述设备表发送所述第三模块的名称和所述第四模块的名称;所述设备表在模块的名称与通用编号的对应关系中,确定所述第三模块的名称对应的通用编号,得到所述第三模块的通用编号;以及确定所述第四模块的名称对应的通用编号,得到所述第四模块的通用编号,并向所述资源管理器发送所述第三模块的通用编号和所述第四模块的通用编号;所述资源管理器将所述第三模块的通用编号,写入所述第一预设存储位置;以及将所述第四模块的通用编号,写入所述第二预设存储位置;所述资源限制器为所述目标容器进行资源配置,包括:所述资源限制器获取所述第一预设存储位置记录的所述第三模块的通用编号,并允许所述目标容器调用所述第三模块;以及获取所述第二预设存储位置记录的所述第四模块的通用编号,并禁止所述目标容器调用所述第四模块。

可选的,所述容器创建请求中携带有为所述目标容器分配的系统资源的资源大小;在所述资源限制器为所述目标容器进行资源配置之前,所述方法还包括:所述容器管理器将为所述目标容器分配的系统资源的资源大小,写入用于存储为所述目标容器分配的系统资源的资源大小的第三预设存储位置;所述资源限制器为所述目标容器进行资源配置,包括:所述资源限制器获取所述第三预设存储位置记录的系统资源的资源大小,并为所述目标容器分配相应资源大小的系统资源。

第二方面,为了达到上述目的,本发明实施例提供了一种资源配置系统,所述资源配置系统应用于终端,所述资源配置系统包括:资源管理器、容器管理器和资源限制器,其中:所述资源管理器,用于当接收到容器创建请求时,向所述容器管理器转发所述容器创建请求;所述容器管理器,用于接收到所述容器创建请求时,创建一个新的容器,作为目标容器;所述资源限制器,用于为所述目标容器进行资源配置;所述资源管理器,还用于当接收到针对所述目标容器的配置更新请求时,将所述配置更新请求中携带的更新后的目标配置信息,写入所述目标容器对应的预设存储位置;所述资源限制器,还用于获取所述预设存储位置中记录的所述目标配置信息,并按照所述目标配置信息更新所述目标容器的资源配置。

可选的,所述目标配置信息包括以下至少一项:为所述目标容器分配的cpu资源的资源大小、内存资源的资源大小、网络带宽资源的资源大小和磁盘资源的资源大小。

可选的,所述系统还包括:设备表;所述目标配置信息包括:所述终端中允许所述目标容器调用的第一模块的名称,以及禁止所述目标容器调用的第二模块的名称;所述资源管理器,还用于当接收到针对目标容器的配置更新请求时,向所述设备表发送所述第一模块的名称和所述第二模块的名称;所述设备表,用于在模块的名称与通用编号的对应关系中,确定所述第一模块的名称对应的通用编号,得到所述第一模块的通用编号;以及确定所述第二模块的名称对应的通用编号,得到所述第二模块的通用编号,并向所述资源管理器发送所述第一模块的通用编号和所述第二模块的通用编号;所述资源管理器,具体用于将所述第一模块的通用编号,写入所述目标容器对应的用于存储允许所述目标容器调用的模块的通用编号的第一预设存储位置;以及将所述第二模块的通用编号,写入用于存储禁止所述目标容器调用的模块的通用编号的第二预设存储位置;所述资源限制器,具体用于获取所述第一预设存储位置记录的所述第一模块的通用编号,并允许所述目标容器调用所述第一模块;获取所述第二预设存储位置记录的所述第二模块的通用编号,并禁止所述目标容器调用所述第二模块。

可选的,所述容器管理器,还用于向所述设备表发送请求消息;其中,所述请求消息用于获取所述终端中所有模块的通用编号;所述设备表,还用于在接收到所述请求消息之后,获取所述终端中的所有模块的通用编号,并向所述容器管理器发送所述终端中的所有模块的通用编号;所述容器管理器,还用于将所述终端中的所有模块的通用编号写入所述第一预设存储位置;所述资源限制器,还用于获取所述第一预设存储位置中记录的所述终端中的所有模块的通用编号,并允许所述目标容器调用所述终端中的所有模块,并向所述容器管理器发送第一通知消息;其中,所述第一通知消息用于通知所述容器管理器已允许所述目标容器调用所述终端中的所有模块;所述容器管理器,还用于接收到所述第一通知消息时,通过预设的驱动程序对所述终端中的所有模块进行初始化。

可选的,所述容器创建请求中携带有所述终端中允许所述目标容器调用的第三模块的名称,和禁止所述目标容器调用的第四模块的名称;所述容器管理器,还用于在对所述终端中的所有模块初始化完成时,向所述资源管理器发送第二通知消息;所述资源管理器,还用于在接收到所述第二通知消息时,向所述设备表发送所述第三模块的名称和所述第四模块的名称;所述设备表,还用于在模块的名称与通用编号的对应关系中,确定所述第三模块的名称对应的通用编号,得到所述第三模块的通用编号;以及确定所述第四模块的名称对应的通用编号,得到所述第四模块的通用编号,并向所述资源管理器发送所述第三模块的通用编号和所述第四模块的通用编号;所述资源管理器,还用于将所述第三模块的通用编号,写入所述第一预设存储位置;以及将所述第四模块的通用编号,写入所述第二预设存储位置;所述资源限制器,具体用于获取所述第一预设存储位置记录的所述第三模块的通用编号,并允许所述目标容器调用所述第三模块;以及获取所述第二预设存储位置记录的所述第四模块的通用编号,并禁止所述目标容器调用所述第四模块。

可选的,所述容器创建请求中携带有为所述目标容器分配的系统资源的资源大小;所述容器管理器,还用于将为所述目标容器分配的系统资源的资源大小,写入用于存储为所述目标容器分配的系统资源的资源大小的第三预设存储位置;所述资源限制器,具体用于获取所述第三预设存储位置记录的系统资源的资源大小,并为所述目标容器分配相应资源大小的系统资源。

本发明实施例还提供了一种终端,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序时,实现上述第一方面所述的资源配置方法步骤。

本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的资源配置方法步骤。

本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的资源配置方法。

本发明实施例提供的一种资源配置方法,当接收到容器创建请求时,资源管理器向容器管理器转发容器创建请求。容器管理器接收到容器创建请求时,创建一个新的容器,作为目标容器。资源限制器为目标容器进行资源配置。当接收到针对目标容器的配置更新请求时,资源管理器将配置更新请求中携带的更新后的目标配置信息,写入目标容器对应的预设存储位置。资源限制器获取预设存储位置中记录的目标配置信息,并按照目标配置信息更新目标容器的资源配置。基于上述处理,可以为目标容器进行资源配置,并且还可以在接收到配置更新请求时,灵活的更新目标容器的资源配置。

当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的实施例。

图1为本发明实施例提供的一种资源配置方法的流程图;

图2为本发明实施例提供的另一种资源配置方法的流程图;

图3为本发明实施例提供的另一种资源配置方法的流程图;

图4为本发明实施例提供的另一种资源配置方法的流程图;

图5为本发明实施例提供的另一种资源配置方法的流程图;

图6为本发明实施例提供的一种虚拟化技术的示意图;

图7为本发明实施例提供的一种容器技术的示意图;

图8为本发明实施例提供的一种获取目标应用程序的运行结果的方法的流程图;

图9为本发明实施例提供的另一种资源配置方法的流程图;

图10为本发明实施例提供的另一种资源配置方法的流程图;

图11为本发明实施例提供的一种资源配置系统的结构图;

图12为本发明实施例提供的一种终端的结构图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员基于本申请所获得的所有其他实施例,都属于本发明保护的范围。

参见图1,图1为本发明实施例提供的一种资源配置方法的流程图,该方法应用于终端,终端可以包括:资源管理器、容器管理器和资源限制器。该方法可以包括以下步骤:

s101:当接收到容器创建请求时,资源管理器向容器管理器转发容器创建请求。

s102:容器管理器接收到容器创建请求时,创建一个新的容器,作为目标容器。

s103:资源限制器为目标容器进行资源配置。

s104:当接收到针对目标容器的配置更新请求时,资源管理器将配置更新请求中携带的更新后的目标配置信息,写入目标容器对应的预设存储位置。

s105:资源限制器获取预设存储位置中记录的目标配置信息,并按照目标配置信息更新目标容器的资源配置。

基于上述处理,可以为目标容器进行资源配置,并且还可以在接收到配置更新请求时,灵活的更新目标容器的资源配置。

在步骤s101中,终端可以为台式电脑、笔记本电脑、平板电脑等,终端中可以配置有linux操作系统。资源限制器(cgroup)是linux操作系统提供的一种可以管理应用程序所使用的系统资源的程序。linux操作系统中还包括除cgroup以外的其他资源限制器。容器管理器(lxcruntime)和资源管理器用于管理linux操作系统中的各资源限制器。资源管理器、容器管理器和资源限制器均属于linux操作系统,且直接运行于终端。

用户在对目标应用程序进行测试时,可以向资源管理器输入针对目标应用程序的容器创建请求,该容器创建请求用于指示资源管理器创建一个用于运行目标应用程序的容器(即本发明实施例中的目标容器),并为目标容器进行资源配置。相应的,资源管理器在接收到容器创建请求时,可以向容器管理器转发容器创建请求。

针对步骤s102和步骤s103,容器管理器在接收到容器创建请求时,可以创建一个新的容器,作为用于运行目标应用程序的目标容器。然后,为了使得目标容器满足目标应用程序的运行需求,资源限制器可以为目标容器进行资源配置,例如,资源限制器可以为目标容器分配系统资源,以及设置目标容器调用终端中的各模块的调用权限。

系统资源可以包括以下至少一项:cpu资源、内存资源、网络带宽资源和磁盘资源等。终端中的各模块可以包括:计算卡、摄像头和gpu(graphicsprocessingunit,微型处理器)等。

另外,资源限制器在完成对目标容器的资源配置之后,可以向容器管理器发送第三通知消息,以通知容器管理器已完成对目标容器的资源配置。相应的,容器管理器在接收到第三通知消息之后,可以在目标容器中启动目标应用程序,以使目标应用程序在目标容器中运行。当目标应用程序运行结束之后,容器管理还可以获取目标应用程序的运行结果。进而,容器管理器可以在终端的显示界面中显示目标应用程序的运行结果,以供用户浏览。

针对步骤s104和步骤s105,在目标应用程序运行的过程中,可能需要修改目标容器的资源配置,则用户可以向资源管理器输入配置更新请求。相应的,资源管理器可以获取配置更新请求中携带的目标配置信息,并将目标配置信息写入目标容器对应的预设存储位置。

相应的,资源限制器可以对预设存储位置进行监听,进而,当检测到预设存储位置中写入目标配置信息时,资源限制器可以获取目标配置信息,并按照目标配置信息更新目标容器的资源配置。

在本发明的一个实施例中,目标配置信息可以包括以下至少一项:为目标容器分配的cpu资源的资源大小、内存资源的资源大小、网络带宽资源的资源大小和磁盘资源的资源大小。

cpu资源的资源大小可以用cpu核心的数目表示。例如,可以将一个cpu核心划分为100000份,如果为目标容器分配的cpu资源的资源大小为200000,则可以确定为目标容器分配2个cpu核心,且目标容器最大可以占用该2个cpu核心每秒内的所有运转次数。或者,如果为目标容器分配的cpu资源的资源大小为50000,则可以确定为目标容器分配1个cpu核心,且目标容器最大可以占用该cpu核心每秒内的运转次数的1/2。

示例性的,目标配置信息包括:cpu资源的资源大小的单位是1/100000个cpu核心,为目标容器分配的cpu资源的资源大小为200000。

资源管理器可以确定存储cpu资源的资源大小的预设存储位置为:/sys/fs/cgroup/cpu/docker/<containerid>/cpu.cfs_quota_us(/系统/资源配置/资源限制器/cpu/容器/目标容器标识/cpu配额)。然后,资源管理器可以以十进制格式将200000写入该预设存储位置。资源管理器还可以确定存储cpu资源的资源大小的单位的预设存储位置为:/sys/fs/cgroup/cpu/docker/<containerid>/cpu.cfs_period_us(/系统/资源配置/资源限制器/cpu/容器/目标容器标识/cpu单位),进而,资源管理器可以以十进制格式将100000写入该预设存储位置。

目标配置信息还可以包括:内存资源的资源大小为200000字节。资源管理器可以确定用于存储为目标容器分配的内存资源的资源大小的预设存储位置为:/sys/fs/cgroup/memory/docker/<containerid>/memory.limit_in_bytes(/系统/资源配置/资源限制器/内存资源/容器/目标容器的标识/内存资源的资源大小)。进而,资源管理器可以以十进制格式,将200000写入该预设存储位置。

一种实现方式中,资源限制器从预设存储位置获取目标配置信息之后,可以将目标配置信息从预设存储位置中删除。后续,在下一次更新目标容器的资源配置时,资源管理器可以直接将更新后的配置信息写入预设存储位置。由于资源限制器对预设存储位置进行了监听,资源限制器可以检测到预设存储位置中写入了更新后的配置信息。进而,资源限制器可以按照当前预设存储位置中存储的配置信息更新目标容器的资源配置。

在本发明的一个实施例中,终端还包括:设备表。目标配置信息可以包括:终端中允许目标容器调用的第一模块的名称,以及禁止目标容器调用的第二模块的名称。

在本发明的一个实施例中,参见图2,在图1的基础上,在步骤s104之前,该方法还可以包括以下步骤:

s106:当接收到针对目标容器的配置更新请求时,资源管理器向设备表发送第一模块的名称和第二模块的名称。

s107:设备表在模块的名称与通用编号的对应关系中,确定第一模块的名称对应的通用编号,得到第一模块的通用编号;以及确定第二模块的名称对应的通用编号,得到第二模块的通用编号,并向资源管理器发送第一模块的通用编号和第二模块的通用编号。

相应的,步骤s104可以包括以下步骤:

s1041:资源管理器将第一模块的通用编号,写入目标容器对应的用于存储允许目标容器调用的模块的通用编号的第一预设存储位置;以及将第二模块的通用编号,写入用于存储禁止目标容器调用的模块的通用编号的第二预设存储位置。

相应的,步骤s105可以包括以下步骤:

s1051:资源限制器获取第一预设存储位置记录的第一模块的通用编号,并允许目标容器调用第一模块。

s1052:获取第二预设存储位置记录的第二模块的通用编号,并禁止目标容器调用第二模块。

设备表(rdev)为linux操作系统中提供的一种用于查询模块的通用编号的程序。模块的通用编号可以包括:模块的majorid(主标识)和minorid(子标识)。

一种实现方式中,可以对终端中的各模块所属的类型进行编号,一个模块的majorid表示该模块所属的类型的编号。还可以对同一类型下的各模块进行编号,一个模块的minorid表示该模块在所属类型下的编号。例如,终端中的模块可以包括:1号gpu,2号gpu,3号gpu和4号gpu。该4个gpu所属的类型为gpu类型。gpu类型的编号为103,gpu类型下的1号gpu的编号为1,2号gpu的编号为2,3号gpu的编号为3,4号gpu的编号为4。则1号gpu的majorid为103,1号gpu的minorid为1,也就是说,1号gpu的通用编号为(103,1)。同理2号gpu的通用编号为(103,2),3号gpu的通用编号为(103,3),4号gpu的通用编号为(103,4)。

在接收到配置更新请求时,资源管理器可以获取配置更新请求中携带的第一模块的名称和第二模块的名称,并向设备表发送第一模块的名称和第二模块的名称。由于资源限制器无法识别模块的名称,因此资源管理器需要通过设备表获取模块的通用编号。

相应的,设备表可以确定记录模块的名称与通用编号的对应关系的存储位置为:/dev/<devicename>(/设备/设备名称)。进而,设备表可以在该存储位置中记录的模块的名称与通用编号的对应关系中,确定第一模块的名称对应的第一模块的通用编号,并确定第二模块的名称对应的第二模块的通用编号,并向资源管理器发送第一模块的通用编号和第二模块的通用编号。

然后,资源管理器可以确定用于存储允许目标容器调用的模块的通用编号的第一预设存储位置为:/sys/fs/cgroup/devices/docker/<containerid>/devices.allow(/系统/资源配置/资源限制器/设备/容器/目标容器的标识/设备.允许)。进而,资源管理器可以按照预设格式将第一模块的通用编号,写入第一预设存储位置。同理,资源管理器可以按照预设格式将第二模块的通用编号,写入第二预设存储位置。第二预设存储位置为:/sys/fs/cgroup/devices/docker/<containerid>/devices.deny(/系统/资源配置/资源限制器/设备/容器/目标容器的标识/设备.禁止)。

其中,预设格式可以为:“c空格<majorid>:<minorid>空格rw”。

在本发明实施例中并不限定步骤s1051和步骤s1052的执行的先后顺序,也就是说,可以先执行步骤s1051,再执行步骤s1052,或者也可以同时执行步骤s1051和步骤s1052,或者也可以先执行步骤s1052,再执行步骤s1053。

另外,资源限制器完成更新目标容器的资源配置之后,可以向容器管理器发送目标容器的配置更新结果,进而,容器管理器可以向资源管理器转发目标容器的配置更新结果。进而,资源管理器可以在终端的显示界面中显示目标容器的配置更新结果,以供用户浏览。目标容器的配置更新结果可以为更新目标容器的资源配置成功,或者更新目标容器的资源配置失败。

在本发明的一个实施例中,参见图3,在图2的基础上,在步骤s103之前,该方法还可以包括以下步骤:

s108:容器管理器向设备表发送请求消息。其中,请求消息用于获取终端中所有模块的通用编号。

s109:设备表在接收到请求消息之后,获取终端中的所有模块的通用编号,并向容器管理器发送终端中的所有模块的通用编号。

s1010:容器管理器将终端中的所有模块的通用编号写入第一预设存储位置。

s1011:资源限制器获取第一预设存储位置中记录的终端中的所有模块的通用编号,并允许目标容器调用终端中的所有模块,并向容器管理器发送第一通知消息。其中,第一通知消息用于通知容器管理器已允许目标容器调用终端中的所有模块。

s1012:容器管理器接收到第一通知消息时,通过预设的驱动程序对终端中的所有模块进行初始化。

一种实现方式中,目标应用程序中可以包含预设的驱动程序,容器管理器创建目标容器时,可以将目标应用程序部署于目标容器中。因此,目标容器中包含了预设的驱动程序。

由于目标应用程序运行时可能需要调用终端中的各模块,因此,在创建目标容器之后,需要通过目标容器中预设的驱动程序对终端中的各模块进行初始化,以对目标应用程序和终端中的各模块进行适配,进而,在对终端中的各模块进行初始化完成之后,目标应用程序才可以正常调用终端中的模块。

因此,容器管理器可以通过设备表获取终端中所有模块的通用编号。然后,容器管理器可以按照预设格式,将终端中的所有模块的通用编号写入第一预设存储位置。进而,资源限制器可以按照第一预设存储位置中记录的终端中的所有模块的通用编号,允许目标容器调用终端中的所有模块,并向容器管理器发送第一通知消息,以通知容器管理器已允许目标容器调用终端中的所有模块。容器管理器接收到第一通知消息时,可以确定目标容器具有调用终端中的所有模块的权限,此时,容器管理器可以通过目标容器中的预设的驱动程序对终端中的所有模块进行初始化。

在本发明的一个实施例中,容器创建请求中携带有终端中允许目标容器调用的第三模块的名称,和禁止目标容器调用的第四模块的名称。参见图4,在图3的基础上,在步骤s1012之后,该方法还可以包括以下步骤:

s1013:在对终端中的所有模块初始化完成时,容器管理器向资源管理器发送第二通知消息。

s1014:在接收到第二通知消息时,资源管理器向设备表发送第三模块的名称和第四模块的名称。

s1015:设备表在模块的名称与通用编号的对应关系中,确定第三模块的名称对应的通用编号,得到第三模块的通用编号;以及确定第四模块的名称对应的通用编号,得到第四模块的通用编号,并向资源管理器发送第三模块的通用编号和第四模块的通用编号。

s1016:资源管理器将第三模块的通用编号,写入第一预设存储位置;以及将第四模块的通用编号,写入第二预设存储位置。

相应的,步骤s103可以包括以下步骤:

s1031:资源限制器获取第一预设存储位置记录的第三模块的通用编号,并允许目标容器调用第三模块;以及获取第二预设存储位置记录的第四模块的通用编号,并禁止目标容器调用第四模块。

一种实现方式中,由于在对终端中的各模块进行初始化时,资源限制器设置了允许目标容器调用终端中的所有模块。因此,在对终端中的各模块初始化完成之后,需要按照容器创建请求中携带的终端中允许目标容器调用的第三模块的名称,和禁止目标容器调用的第四模块的名称,重新设置目标容器的调用权限,以完成对目标容器的资源配置。

示例性的,终端中的模块可以包括:1号gpu,2号gpu,3号gpu和4号gpu。容器创建请求中携带有:允许目标容器调用1号gpu和2号gpu,且禁止目标容器调用3号gpu和4号gpu。资源管理器可以向容器管理器转发接收到的容器创建请求。容器管理器可以创建一个新的容器(即目标容器)。进而,容器管理器可以对该4个gpu进行初始化,并在初始完成后向资源管理器发送第二通知消息。

在接收到第二通知消息时,资源管理器向设备表发送1号gpu,2号gpu,3号gpu和4号gpu。设备表在模块的名称与通用编号的对应关系中,确定1号gpu的通用编号为(103,1)。同理2号gpu的通用编号为(103,2),3号gpu的通用编号为(103,3),4号gpu的通用编号为(103,4)。

进而,资源管理器可以分别将“c103:1rw”和“c103:2rw”,写入/sys/fs/cgroup/devices/docker/<containerid>/devices.allow。然后,资源限制器可以允许目标容器调用1号gpu和2号gpu。资源管理器还可以分别将“c103:3rw”和“c103:4rw”写入/sys/fs/cgroup/devices/docker/<containerid>/devices.deny。然后,资源限制器可以禁止目标容器调用3号gpu和4号gpu。

当接收到针对目标容器的配置更新请求时,资源管理器可以获取配置更新请求中携带的目标配置信息,目标配置信息包括:允许目标容器调用1号gpu和3号gpu,且禁止目标容器调用2号gpu和4号gpu。资源管理器向设备表发送1号gpu,2号gpu,3号gpu和4号gpu。设备表可以获取该4个gpu的通用编号,并向资源管理器发送该4个gpu的通用编号。

资源管理器可以分别将“c103:1rw”和“c103:3rw”,写入/sys/fs/cgroup/devices/docker/<containerid>/devices.allow。然后,资源限制器可以允许目标容器调用1号gpu和3号gpu。资源管理器还可以分别将“c103:2rw”和“c103:4rw”,写入/sys/fs/cgroup/devices/docker/<containerid>/devices.deny。然后,资源限制器可以禁止目标容器调用2号gpu和4号gpu。

在本发明的一个实施例中,容器创建请求中携带有为目标容器分配的系统资源的资源大小。参见图5,在图1的基础上,在步骤s103之前,该方法还可以包括以下步骤:

s1017:容器管理器将为目标容器分配的系统资源的资源大小,写入用于存储为目标容器分配的系统资源的资源大小的第三预设存储位置。

相应的,步骤s103可以包括以下步骤:

s1032:资源限制器获取第三预设存储位置记录的系统资源的资源大小,并为目标容器分配相应资源大小的系统资源。

一种实现方式中,在创建目标容器之后,为了使得目标容器满足目标应用程序的运行需求,需要按照容器创建请求中携带的为目标容器分配的系统资源的资源大小,为目标容器分配相应大小的系统资源,以完成对目标容器的资源配置。资源限制器对目标容器进行资源配置的方式与更新目标容器的资源配置的方式类似,可以参见前述实施例的相关介绍。

参见图6,图6为本发明实施例提供的一种虚拟化技术的示意图。

虚拟化技术是通过hypervisor(虚拟机监视器),对一个物理机进行虚拟化处理,得到多个与物理机配置相同的vm(虚拟机),且该多个虚拟机之间相互隔离。在使用一个虚拟机之前,需要在该虚拟机中配置os(操作系统),并将applications(应用程序)安装于虚拟机中配置的操作系统中运行。

参见图7,图7为本发明实施例提供的一种容器技术的示意图。

容器技术是对不同的应用程序使用的系统资源,以及调用的模块进行限制。applications(应用程序)运行于container(容器)中,容器运行于物理机中配置的os(操作系统)中,相对于虚拟机的启动速度和运行效率,容器的启动速度和运行效率均较高。

参见图8,图8为本发明实施例提供的一种获取目标应用程序的运行结果的方法的流程图。

s801:容器管理器接收容器创建请求。

s802:容器管理器创建一个新的容器,作为目标容器。

s803:容器管理器通过资源限制器为目标容器分配系统资源,并设置目标容器的调用权限。

为了使得目标容器满足目标应用程序的运行需求,容器管理器可以通过资源限制器可以对目标容器的进行资源配置,即为目标容器分配系统资源,以及设置目标容器调用终端中的各模块的调用权限。

容器管理器将为目标容器分配的系统资源的大小写入目标容器对应的预设存储位置。然后,资源限制器可以获取预设存储位置记录的为目标容器分配的系统资源的大小,并为目标容器分配相应大小的系统资源。容器管理器将允许目标容器调用的模块的通用编号写入第一预设存储位置,并将禁止目标容器调用的模块的通用编号写入第二预设存储位置。然后,资源限制器可以按照第一预设存储位置和第二预设存储位置记录的通用编号,设置目标容器的调用权限。

s804:资源限制器通知容器管理器设置生效。

资源限制器在完成对目标容器的资源配置之后,可以通知容器管理器对目标容器的资源配置生效,即资源限制器向容器管理器发送第三通知消息,以通知容器管理器已完成对目标容器的资源配置。

s805:在目标容器中启动目标应用程序,以使目标应用程序在目标容器中运行。

s806:获取目标应用程序的运行结果。

当目标应用程序运行结束之后,容器管理还可以获取目标应用程序的运行结果。进而,容器管理器可以在终端的显示界面中显示目标应用程序的运行结果,以供用户浏览。

参见图9,图9为本发明实施例提供的另一种资源配置方法的流程图。

s901:资源管理器接收容器创建请求。

s902:资源管理器向容器管理器转发容器创建请求。

s903:容器管理器创建一个新的容器,作为目标容器。

s904:容器管理器通过资源限制器为目标容器分配系统资源,并设置目标容器的调用权限。

容器管理器可以通过资源限制器对目标容器的进行资源配置,即为目标容器分配系统资源,以及设置目标容器调用终端中的各模块的调用权限。容器管理器将为目标容器分配的系统资源的大小写入目标容器对应的预设存储位置。然后,资源限制器可以获取预设存储位置记录的为目标容器分配的系统资源的大小,并为目标容器分配相应大小的系统资源。容器管理器将允许目标容器调用的模块的通用编号写入第一预设存储位置,并将禁止目标容器调用的模块的通用编号写入第二预设存储位置。然后,资源限制器可以按照第一预设存储位置和第二预设存储位置记录的模块的通用编号,设置目标容器的调用权限。

s905:资源限制器通知容器管理器设置生效。

资源限制器在完成对目标容器的资源配置之后,可以通知容器管理器对目标容器的资源配置生效,即资源限制器向容器管理器发送第三通知消息,以通知容器管理器已完成对目标容器的资源配置。

s906:容器管理器在目标容器中启动目标应用程序,以使目标应用程序在目标容器中运行。

s907:资源管理器接收针对目标容器的配置更新请求。

s908:资源管理器通过资源限制器重新为目标容器分配系统资源。

在目标应用程序运行的过程中,可能需要修改目标容器的资源配置,则用户可以向资源管理器输入配置更新请求。相应的,资源管理器可以获取配置更新请求中携带的为目标容器分配的系统资源的资源大小,将为目标容器分配的系统资源的资源大小,写入目标容器对应的预设存储位置。资源限制器可以获取预设存储位置中存储的为目标容器分配的系统资源的资源大小,并为目标容器分配相应资源大小的系统资源。

s909:资源限制器通知资源管理器设置生效。

资源限制器在完成对目标容器的资源配置之后,可以通知容器管理器对目标容器的资源配置生效,即资源限制器向容器管理器发送第三通知消息,以通知容器管理器已完成对目标容器的资源配置。

参见图10,图10为本发明实施例提供的另一种资源配置方法的流程图。

s1001:资源管理器接收容器创建请求。

s1002:资源管理器向容器管理器转发容器创建请求。

s1003:容器管理器创建一个新的容器,作为目标容器。

s1004:容器管理器通过设备表获取终端中的所有模块的通用编号。

容器管理器通过设备表获取所有模块的通用编号,并将所有模块的通用编号写入第一预设存储位置。

s1005:资源限制器在目标容器中挂载终端中的所有模块。

s1006:资源限制通知容器管理器挂载完成。

资源限制器可以允许目标容器调用终端中的各模块,并通知容器管理器挂载完成,即资源限制器可以向容器管理器发送第一通知消息,以通知容器管理器已允许目标容器调用终端中的所有模块。

s1007:容器管理器通过预设的驱动程序,对终端中的各模块进行初始化。

s1008:容器管理器通知资源管理器初始化完成。

容器管理器接收到第一通知消息时,可以确定目标容器具有调用终端中的所有模块的权限,此时,容器管理器可以通过预设的驱动程序对终端中的所有模块进行初始化,并通知资源管理器已完成对终端中的所有模块的初始化,即容器管理器向资源管理器发送第二通知消息。

s1009:资源管理器通过设备表查询模块的通用编号。

s10010:资源管理器通过资源限制器设置目标容器的调用权限。

在接收到第二通知消息时,资源管理器通过设备表获取允许目标容器调用的第三模块的通用编号,以及禁止目标容器调用的第四模块的通用编号。进而,资源管理器可以设置目标容器的调用权限,即资源管理器可以将第三模块的通用编号写入第一预设存储位置,并将第四模块的通用编号写入第二预设存储位置。然后,资源限制器允许目标容器调用第三模块,并禁止目标容器调用第四模块。

s10011:资源限制器通知容器管理器设置生效。

资源限制器在完成设置目标容器的调用权限之后,可以通知容器管理器对目标容器的调用权限设置生效,即资源限制器向容器管理器发送第三通知消息,以通知容器管理器已完成对目标容器的资源配置。

s10012:容器管理器在目标容器中启动目标应用程序,以使目标应用程序在目标容器中运行。

s10013:资源管理器接收配置更新请求。

s10014:资源管理器通过设备表查询模块的通用编号。

s10015:资源管理器通过资源限制器重新设置目标容器的调用权限。

资源管理器可以重新设置目标容器的调用权限,即资源管理器可以将第一模块的通用编号写入第一预设存储位置,并将第二模块的通用编号写入第二预设存储位置。然后,资源限制器允许目标容器调用第一模块,并禁止目标容器调用第二模块。

s10016:资源限制器通知容器管理器设置生效。

s10017:容器管理器向资源管理器返回配置更新结果。

资源限制器完成对目标容器的资源配置之后,可以向资源管理器发送目标容器的配置更新结果。进而,资源管理器可以在终端的显示界面中显示目标容器的配置更新结果,以供用户浏览。

与图1的方法实施例相对应,参见图11,图11为本发明实施例提供的一种资源配置系统的结构图,所述资源配置系统应用于终端,所述资源配置系统包括:资源管理器1101、容器管理器1102和资源限制器1103,其中:

所述资源管理器1101,用于当接收到容器创建请求时,向所述容器管理器转发所述容器创建请求;

所述容器管理器1102,用于接收到所述容器创建请求时,创建一个新的容器,作为目标容器;

所述资源限制器1103,用于为所述目标容器进行资源配置;

所述资源管理器1101,还用于当接收到针对所述目标容器的配置更新请求时,将所述配置更新请求中携带的更新后的目标配置信息,写入所述目标容器对应的预设存储位置;

所述资源限制器1103,还用于获取所述预设存储位置中记录的所述目标配置信息,并按照所述目标配置信息更新所述目标容器的资源配置。

可选的,所述目标配置信息包括以下至少一项:为所述目标容器分配的cpu资源的资源大小、内存资源的资源大小、网络带宽资源的资源大小和磁盘资源的资源大小。

可选的,所述系统还包括:设备表;所述目标配置信息包括:所述终端中允许所述目标容器调用的第一模块的名称,以及禁止所述目标容器调用的第二模块的名称;

所述资源管理器1101,还用于当接收到针对目标容器的配置更新请求时,向所述设备表发送所述第一模块的名称和所述第二模块的名称;

所述设备表,用于在模块的名称与通用编号的对应关系中,确定所述第一模块的名称对应的通用编号,得到所述第一模块的通用编号;以及确定所述第二模块的名称对应的通用编号,得到所述第二模块的通用编号,并向所述资源管理器发送所述第一模块的通用编号和所述第二模块的通用编号;

所述资源管理器1101,具体用于将所述第一模块的通用编号,写入所述目标容器对应的用于存储允许所述目标容器调用的模块的通用编号的第一预设存储位置;以及将所述第二模块的通用编号,写入用于存储禁止所述目标容器调用的模块的通用编号的第二预设存储位置;

所述资源限制器1103,具体用于获取所述第一预设存储位置记录的所述第一模块的通用编号,并允许所述目标容器调用所述第一模块;

获取所述第二预设存储位置记录的所述第二模块的通用编号,并禁止所述目标容器调用所述第二模块。

可选的,所述容器管理器1102,还用于向所述设备表发送请求消息;其中,所述请求消息用于获取所述终端中所有模块的通用编号;

所述设备表,还用于在接收到所述请求消息之后,获取所述终端中的所有模块的通用编号,并向所述容器管理器发送所述终端中的所有模块的通用编号;

所述容器管理器1102,还用于将所述终端中的所有模块的通用编号写入所述第一预设存储位置;

所述资源限制器1103,还用于获取所述第一预设存储位置中记录的所述终端中的所有模块的通用编号,并允许所述目标容器调用所述终端中的所有模块,并向所述容器管理器发送第一通知消息;其中,所述第一通知消息用于通知所述容器管理器已允许所述目标容器调用所述终端中的所有模块;

所述容器管理器1102,还用于接收到所述第一通知消息时,通过预设的驱动程序对所述终端中的所有模块进行初始化。

可选的,所述容器创建请求中携带有所述终端中允许所述目标容器调用的第三模块的名称,和禁止所述目标容器调用的第四模块的名称;

所述容器管理器1102,还用于在对所述终端中的所有模块初始化完成时,向所述资源管理器发送第二通知消息;

所述资源管理器1101,还用于在接收到所述第二通知消息时,向所述设备表发送所述第三模块的名称和所述第四模块的名称;

所述设备表,还用于在模块的名称与通用编号的对应关系中,确定所述第三模块的名称对应的通用编号,得到所述第三模块的通用编号;以及确定所述第四模块的名称对应的通用编号,得到所述第四模块的通用编号,并向所述资源管理器发送所述第三模块的通用编号和所述第四模块的通用编号;

所述资源管理器1101,还用于将所述第三模块的通用编号,写入所述第一预设存储位置;以及将所述第四模块的通用编号,写入所述第二预设存储位置;

所述资源限制器1103,具体用于获取所述第一预设存储位置记录的所述第三模块的通用编号,并允许所述目标容器调用所述第三模块;以及获取所述第二预设存储位置记录的所述第四模块的通用编号,并禁止所述目标容器调用所述第四模块。

可选的,所述容器创建请求中携带有为所述目标容器分配的系统资源的资源大小;

所述容器管理器1102,还用于将为所述目标容器分配的系统资源的资源大小,写入用于存储为所述目标容器分配的系统资源的资源大小的第三预设存储位置;

所述资源限制器1103,具体用于获取所述第三预设存储位置记录的系统资源的资源大小,并为所述目标容器分配相应资源大小的系统资源。

基于本发明实施例提供资源配置系统,可以为目标容器进行资源配置,并且还可以在接收到配置更新请求时,灵活的更新目标容器的资源配置。

本发明实施例还提供了一种终端,如图12所示,包括处理器1201、通信接口1202、存储器1203和通信总线1204,其中,处理器1201,通信接口1202,存储器1203通过通信总线1204完成相互间的通信;存储器1203,用于存放计算机程序;处理器1201,用于执行存储器1203上所存放的程序时,实现上述任一资源配置方法。

上述终端提到的通信总线可以是外设部件互连标准(peripheralcomponentinterconnect,pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信接口用于上述终端与其他设备之间的通信。

存储器可以包括随机存取存储器(randomaccessmemory,ram),也可以包括非易失性存储器(non-volatilememory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

基于本发明实施例提供的终端,可以为目标容器进行资源配置,并且还可以在接收到配置更新请求时,灵活的更新目标容器的资源配置。

在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一资源配置方法的步骤。

在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一资源配置方法。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统、终端、计算机可读存储介质和计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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