CN112114958A - 资源隔离方法、分布式平台、计算机设备和存储介质 - Google Patents

资源隔离方法、分布式平台、计算机设备和存储介质 Download PDF

Info

Publication number
CN112114958A
CN112114958A CN201910541011.3A CN201910541011A CN112114958A CN 112114958 A CN112114958 A CN 112114958A CN 201910541011 A CN201910541011 A CN 201910541011A CN 112114958 A CN112114958 A CN 112114958A
Authority
CN
China
Prior art keywords
resource
amount
target
task instance
task
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
CN201910541011.3A
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.)
Shanghai Bilibili Technology Co Ltd
Original Assignee
Shanghai Bilibili 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 Shanghai Bilibili Technology Co Ltd filed Critical Shanghai Bilibili Technology Co Ltd
Priority to CN201910541011.3A priority Critical patent/CN112114958A/zh
Publication of CN112114958A publication Critical patent/CN112114958A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明提供了一种资源隔离方法、分布式平台、计算机设备和存储介质。该资源隔离方法包括:获取任务实例中的待运行进程;判断待运行进程是否需要消费目标资源,其中,任务实例包括一个或多个进程;当待运行进程需要消费目标资源时,判断第一资源量与第二资源量的和是否大于资源申请量;当第一资源量与第二资源量的和大于资源申请量时,向任务实例返回表征待运行进程资源申请失败的标识信息;以及当第一资源量与第二资源量的和小于或等于资源申请量时,向待运行进程分配第二资源量的目标资源。通过本发明,能够避免资源冲突。

Description

资源隔离方法、分布式平台、计算机设备和存储介质
技术领域
本发明涉本发明涉及分布式平台技术领域,尤其涉及一种资源隔离方法、分布式平台、计算机设备和存储介质。
背景技术
为了提升单个节点的任务处理能力和任务处理的可靠性,现有技术提出一种分布式平台,该分布式平台集中管理若干物理服务器节点或虚拟机节点中的资源,进行任务请求响应。其中,为了提升分布式平台的资源利用率,现有技术中有相关研究对节点中的物理设备做超分,使得节点中物理设备的逻辑数量大于物理设备的实际数量,实现物理设备的共享调度。
但是,发明人研究发现,当前对物理设备进行超分的方式,将一个物理设备超分为二,从而一个物理设备被超分为两个逻辑设备,两个逻辑设备被分配给两个任务实例时,相当于两个任务实例共享同一个物理设备,这种共享调度方式仍然存在如下的问题:现有技术中一个任务实例的某些进程会占满一个物理设备上某些资源的全部,那么当其他任务实例被分配至该物理设备时,会产生这类型资源的冲突。
因此,提供一种资源调度方法、分布式平台、计算机设备和存储介质,以进一步提升资源利用率并减少资源冲突,成为本领域急需解决的技术问题。
发明内容
本发明的目的是提供一种资源隔离方法、分布式平台、计算机设备和存储介质,用于解决现有技术中存在的上述技术问题。
为实现上述目的,本发明提供了一种资源隔离方法。
该资源隔离方法包括:获取任务实例中的待运行进程;判断待运行进程是否需要消费目标资源,其中,任务实例包括一个或多个进程;当待运行进程需要消费目标资源时,判断第一资源量与第二资源量的和是否大于资源申请量,其中,第一资源量为任务实例正在占用的目标资源的量,第二资源量为待运行进程所需的目标资源的量,资源申请量为任务实例申请到的目标资源的量;当第一资源量与第二资源量的和大于资源申请量时,向任务实例返回表征待运行进程资源申请失败的标识信息;以及当第一资源量与第二资源量的和小于或等于资源申请量时,向待运行进程分配第二资源量的目标资源。
进一步地,待运行进程为发送接口调用请求的进程,判断待运行进程是否需要消费目标资源的步骤具体为:判断接口调用请求所调用的接口是否为申请目标资源的接口;其中,当接口调用请求所调用的接口是申请目标资源的接口时,待运行进程需要消费目标资源。
进一步地,在判断第一资源量与第二资源量的和是否大于资源申请量的步骤之前,资源隔离方法包括:确定待运行进程需要消费的目标资源所属的物理设备,得到第一物理设备,其中,任务实例执行时申请到至少两个物理设备上的目标资源,第一物理设备为至少两个物理设备中的一个;获取任务实例正在占用第一物理设备上目标资源的量,得到第一资源量;获取任务实例在第一物理设备上申请到的目标资源的量,得到资源申请量。
进一步地,任务实例的所有进程共享资源占用变量,在判断第一资源量与第二资源量的和是否大于资源申请量的步骤之前,资源隔离方法还包括:读取资源占用变量的值,以得到第一资源量。
进一步地,任务实例创建申请到N个物理设备上的目标资源,资源占用变量为数组,数组至少包括N个元素,任务实例正在占用的每个物理设备上的目标资源的量通过一个元素记录。
进一步地,目标资源为GPU物理设备的显存资源。
进一步地,资源隔离方法还包括:当待运行进程不需要消费目标资源时,转发接口调用请求;向待运行进程分配第二资源量的目标资源的步骤具体为:转发接口调用请求。
为实现上述目的,本发明提供了一种分布式平台。
该分布式平台包括:管理节点和若干处理节点,处理节点包括目标资源、任务创建装置和资源处理装置,资源处理装置包括资源隔离模块和资源管理模块,其中:管理节点用于根据各个处理节点上目标资源的信息调度任务至处理节点;任务创建装置用于在处理节点上被调度时,创建任务实例;资源管理模块用于将处理节点上目标资源的信息上报至管理节点,还用于为任务实例分配目标资源;以及资源隔离模块用于执行本发明提供的任意一种资源隔离方法。
进一步地,处理节点包括GPU物理设备,目标资源为GPU物理设备上的显存资源,资源隔离模块为so库,资源管理模块还用于:将GPU物理设备和资源隔离模块挂载至任务实例;设置任务实例的环境变量,其中,环境变量包括目标资源的资源申请量和动态库加载变量,动态库加载变量的值为资源隔离模块。
为实现上述目的,本发明还提供一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,该处理器执行计算机程序时实现上述方法的步骤。
为实现上述目的,本发明还提供计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法的步骤。
本发明提供的资源隔离方法、分布式平台、计算机设备和存储介质,向各个任务实例分别分配其所需的目标资源,各个任务实例得到的资源申请量相互隔离,每个任务实例的进程待运行时,先判断该待运行进程是否需要消费目标资源,当其需要消费目标资源时,再判断该任务实例的资源申请量的剩余是否能够满足该待运行进程的需要,如果不能够满足,向任务实例返回表征该待运行进程资源申请失败的标识信息,以使任务实例内部能够根据进程调配机制进行进程调配,最终使得任务实例成功执行;如果能够满足,向该待运行进程资源分配目标资源。不同的任务实例的资源申请量相互隔离,彼此之间互不干扰,避免了任务实例之间资源申请的冲突。
附图说明
图1为本发明实施例提供的资源隔离方法的流程图;
图2为本发明实施例提供的资源隔离的示意图;
图3为本发明实施例提供的资源隔离装置的框图;
图4为本发明实施例提供的分布式平台的框图;
图5和图6为本发明一种实施例提供的分布式平台的业务处理流程示意图;
图7为本发明实施例提供的任务实例申请资源的示意图;以及
图8为本发明实施例提供的计算机设备的硬件结构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前,在分布式平台中,图形处理器(Graphics Processing Unit,GPU)作为设置于集群中物理服务器节点或虚拟机节点中的资源,主要是以块为单位进行调度。
为了提升GPU物理设备的利用率,现有的研究也有对分布式平台的GPU物理设备的调度做了一些改动,实现了GPU物理设备的共享调度。但是,发明人进一步研究发现,对于像机器学习类的任务,一个进程会默认占满GPU物理设备的所有的显存资源,很容易造成其他进程无法申请到GPU物理设备的显存资源而执行失败,也即造成任务实例之间的资源冲突。
为了解决上述技术困境,本发明提出了一种资源隔离方法、分布式平台、计算机设备和存储介质,在该资源隔离方法中,对于包括一个或多个进程的任务实例,为任务实例分配一定量的目标资源,也即每个任务实例均会根据任务实例的需要申请到一定量的目标资源的量,基于此,在任务实例的执行过程中,当任务实例中的某个进程处于待运行的状态时,获取该待运行进程,并判断该待运行进程是否需要消费目标资源,而当待运行进程需要消费目标资源时,判断第一资源量(也即任务实例正在占用的目标资源的量)与第二资源量(也即待运行进程所需的目标资源的量)的和是否大于资源申请量(也即任务实例申请到的目标资源的量),当第一资源量与第二资源量的和大于资源申请量时,向任务实例返回表征资源申请失败的标识信息,此时,任务实例内部可通过控制占用目标资源的进程释放目标资源来进行第一资源量的调节,并将接收到表征资源申请失败的标识信息的进程重新运行,最终使得任务实例成功运行;而当第一资源量与第二资源量的和小于或等于资源申请量时,向该待运行进程分配第二资源量的所述目标资源。从中可以看出,在一个任务实例内部,各个进程共用资源申请量;在各个任务实例之间,每个任务实例中的进程仅消费其所在任务实例的目标资源,相互之间的目标资源隔离,不会造成资源冲突,解决了现有技术中资源共享中资源冲突的技术问题。
在上述资源隔离方法中,当该目标资源为GPU物理设备的显存资源时,即可解决GPU物理设备资源调度中,任务实例之间显存资源的冲突。
以下将通过具体实施例详细描述本发明提供的资源隔离方法、分布式平台、计算机设备和存储介质。需要说明的是,为了描述方便,下述实施例中的细节描述以GPU物理设备的显存资源为例进行说明,但本发明的资源隔离方法并不限定于GPU物理设备的显存资源。
实施例一
本发明实施例一提供了一种资源隔离方法,在一种应用场景下,该资源隔离方法的执行主体可以为分布式平台的处理节点中的资源处理装置,当分布式平台的管理节点将任务调度至某一处理节点时,该处理节点中的任务创建装置创建任务实例,在任务实例执行的过程中,资源处理装置对每个任务实例的各个进程所需的目标资源进行分配,实现任务实例之间的资源隔离。具体地,图1为本发明实施例提供的资源隔离方法的流程图,如图1所示,该实施例提供的资源隔离方法包括如下的步骤S101至步骤S105。
步骤S101:获取任务实例中的待运行进程。
任务实例包括一个或多个进程,每个进程的状态可包括未运行、待运行、正在运行和运行完成。其中,未运行进程是指进程还未启动;待运行进程是指进程已经启动,还未开始执行。在该步骤S101中,对任务实例中的待运行进程进行获取,具体包括拦截接口调用请求等。
步骤S102:判断待运行进程是否需要消费目标资源。
在该步骤中,可根据待运行进程的进程内容来判断是否需要消费目标资源,例如,该待运行进程为接口调用请求,则可判断该接口调用请求所调用的接口是否与目标资源的分配相关。
其中,当待运行进程需要消费目标资源时,执行下述步骤S103;当待运行进程不需要消费目标资源时,不做下述步骤的处理。
步骤S103:当待运行进程需要消费目标资源时,判断第一资源量与第二资源量的和是否大于资源申请量。
其中,第一资源量为任务实例正在占用的目标资源的量,第二资源量为待运行进程所需的目标资源的量,资源申请量为任务实例申请到的目标资源的量。任务实例在创建时,被分配一定的目标资源的量,该处被分配的目标资源的量,即为资源申请量;在任务实例的运行过程中,根据该任务实例中进程对目标资源的消费情况,实时更新任务实例正在占用的目标资源的量,也即实时维护第一资源量。
当待运行进程需要消费目标资源时,先确定该待运行进程所需的目标资源的量,也即第二资源量,然后判断第一资源量与第二资源量的和是否大于资源申请量,也即,判断该任务实例当前剩余的目标资源是否满足该待运行进程所需目标资源。
其中,当第一资源量与第二资源量的和大于资源申请量时,执行下述步骤S104;当第一资源量与第二资源量的和小于或等于资源申请量时,执行下述步骤S105。
步骤S104:向任务实例返回表征该待运行进程资源申请失败的标识信息。
在该任务实例当前剩余的目标资源无法满足该待运行进程所需目标资源,也即无法再向任务实例中的进程提供目标资源,此时将申请失败的标识信息返回给任务实例,任务实例获得表征资源申请失败的标识信息后,内部的进程调配机制,可通过控制占用目标资源的进程释放目标资源,以调节该任务实例当前消费的目标资源情况,最终使得任务实例中的各个进程成功运行。
步骤S105:向待运行进程分配第二资源量的目标资源。
在该任务实例当前剩余的目标资源还可满足该待运行进程所需目标资源,对该待运行进程提供目标资源即可。
采用该实施例提供的资源隔离方法,向各个任务实例分别分配其所需的目标资源,各个任务实例得到的资源申请量相互隔离,每个任务实例的进程待运行时,先判断该待运行进程是否需要消费目标资源,当其需要消费目标资源时,再判断该任务实例的资源申请量的剩余是否能够满足该待运行进程的需要,如果不能够满足,向任务实例返回表征该待运行进程资源申请失败的标识信息,以使任务实例内部能够根据进程调配机制进行进程调配,最终使得任务实例成功执行;如果能够满足,向该待运行进程资源分配目标资源。不同的任务实例的资源申请量相互隔离,彼此之间互不干扰,避免了任务实例之间资源申请的冲突。
可选地,在一种实施例中,待运行进程为发送接口调用请求的进程,步骤S102,也即判断待运行进程是否需要消费目标资源的步骤具体为:判断接口调用请求所调用的接口是否为消费目标资源的接口;其中,当接口调用请求所调用的接口是消费目标资源的接口时,确定待运行进程需要消费目标资源。
具体而言,在现有技术中,任务实例执行的过程中,接口调用请求会直接调用接口,返回结果,而在本发明中,会将发送接口调用请求进行拦截,并在拦截后判断接口调用请求所调用的接口是否为消费目标资源的接口,如果是消费目标资源的接口,说明该待运行进程需要消费目标资源,此时执行上述步骤S103至步骤S105。
采用该实施例提供的资源隔离方法,通过截取接口调用请求,进而判断被调用的接口是否为消费目标资源的接口,来确定待运行进程是否需要消费目标资源。
进一步可选地,当待运行进程不需要消费目标资源时,转发该接口调用请求。在步骤S105中,向待运行进程分配第二资源量的目标资源的步骤具体为:转发接口调用请求。
具体而言,通过判断被调用的接口是否为消费目标资源的接口,来确定待运行进程是否需要消费目标资源时,如果被调用的接口不是消费目标资源的接口,也即待运行进程不需要消费目标资源,那么,直接转发接口调用请求,也即实现了向待运行进程分配第二资源量的目标资源;如果被调用的接口是消费目标资源的接口,也即待运行进程需要消费目标资源,同时第一资源量与第二资源量的和小于或等于资源申请量,那么,直接转发接口调用请求,也即实现了向待运行进程分配第二资源量的目标资源。
可选地,在一种实施例中,在判断第一资源量与第二资源量的和是否大于资源申请量的步骤之前,资源隔离方法还包括:确定待运行进程需要消费的目标资源所属的物理设备,得到第一物理设备,其中,任务实例执行时申请到至少两个物理设备上的目标资源,第一物理设备为至少两个物理设备中的一个;获取任务实例正在占用第一物理设备上目标资源的量,得到第一资源量;获取任务实例在第一物理设备上申请到的目标资源的量,得到资源申请量。
具体而言,在创建任务实例时,可向任务实例分配多个物理设备上的目标资源。并且,同一任务实例在不同物理设备上申请到的目标资源的量相互隔离,同一任务实例正在占用的不同物理设备上的目标资源的量也相互隔离。
在获取任务实例中的待运行进程后,先确定待运行进程需要消费的目标资源所属的物理设备,例如,待运行进程为发送接口调用请求的进程,可通过接口调用请求所请求的物理设备的标识来确定待运行进程需要消费的目标资源所属的物理设备,这里将该物理设备定义为第一物理设备。确定第一物理设备之后,通过获取任务实例正在占用第一物理设备上目标资源的量,得到第一资源量,通过获取任务实例在第一物理设备上申请到的目标资源的量,得到资源申请量,然后再判断第一资源量与第二资源量的和是否大于资源申请量。
当该任务实例在第一物理设备上当前剩余的目标资源无法满足该待运行进程所需目标资源,也即第一物理设备无法再向任务实例中的进程提供目标资源,此时将申请失败的标识信息返回给任务实例,任务实例获得表征该待运行进程在第一物理设备上资源申请失败的标识信息后,内部的进程调配机制,可通过控制该待运行进程去申请第二物理设备上的目标资源,例如调用第二物理设备上的接口,最终使得任务实例中的各个进程成功运行。
采用该实施例提供的资源隔离方法,同一个任务实例可申请不同物理设备上的目标资源,且该任务实例正在占用的不同物理设备上目标资源的量相互隔离,该任务实例在不同物理设备上申请到的目标资源的量相互隔离,能够在向任务实例的进程分配资源时,针对不同的物理设备分别单独控制,使得资源分配方式更加灵活。
可选地,在一种实施例中,任务实例的所有进程共享资源占用变量,在判断第一资源量与第二资源量的和是否大于资源申请量的步骤之前,资源隔离方法还包括:读取资源占用变量的值,以得到第一资源量。
具体而言,在该发明中,通过所有进程共享资源占用变量的方式,记录一个任务实例正在占用的目标资源的量,某个进程被分配到目标资源时,更新该共享资源占用变量,在某个进程执行完毕释放目标资源时,更新该共享资源占用变量,使得该共享资源占用变量能够实时反映出任务实例正在占用的目标资源的量。基于此,通过读取该资源占用变量的值,即可得到第一资源量。不同任务实例中的进程,共享不同的资源占用变量,实现不同任务实例之间的资源隔离。
采用该实施例提供的资源隔离方法,通过共享资源占用变量的方式实现任务实例占用的目标资源的记载,在每次获取第一资源量时,只需读取该资源占用变量的值即可,处理逻辑简单。
可选地,在一种实施例中,任务实例创建时申请到N个物理设备上的目标资源,资源占用变量为数组,数组至少包括N个元素,任务实例正在占用的每个物理设备上的目标资源的量通过一个元素记录。
具体而言,资源占用变量通过数组结构来实现,数组的元素个数至少等于任务实例分配到的物理设备的个数,也即,当任务实例创建时申请到N个物理设备上的目标资源,则数组相应至少包括N个元素,能够存在物理设备与一个不同的元素对应,通过不同的元素记录任务实例正在占用的不同物理设备上的目标资源的量。
采用该实施例提供的资源隔离方法,资源占用变量采用数组的结构实现,每个物理设备能够对应一个元素,方便更新和读取资源占用变量。
可选地,在一种实施例中,目标资源为GPU物理设备的显存资源。
具体而言,GPU物理设备包括计算资源和显存资源等,本发明中的目标资源可以为GPU物理设备的显存资源。此外,NVIDIA推出的Volta架构系列的GPU物理设备支持通过MPS硬件加速单个GPU物理设备下多进程并行执行,来提高资源利用率,同时可以通过环境变量来控制对应进程的threads(也即计算资源)使用百分比。因此,在该实施例中,增加了GPU物理设备细粒度的隔离,包括显存资源和threads,避免了在机器学习场景下多任务显存资源冲突问题,提高分布式平台中GPU物理设备的资源利用率。具体地,图2为本发明实施例提供的资源隔离的示意图,如图2所示,分布式平台的一个处理节点(GPU计算节点)包括两个GPU物理设备,具体为物理GPU0和物理GPU1,并且该处理节点中运行了2个任务实例,分别为任务实例1和任务实例2。资源占用变量的数据结构是一个长度为4的数组,记录了该任务实例对该处理节点每一和GPU物理设备的显存资源的使用情况。
任务实例1在创建时,申请了2个GPU物理设备上的显存资源,并且申请每个GPU物理设备的显存资源为14GB(也即资源申请量,小于或等于单个GPU物理设备的显存资源大小,不同的GPU物理设备的显存资源大小也可以不同),每个GPU物理设备的Threads百分比为80。该任务实例1中同时运行N个进程任务,所有进程任务对GPU0的显存资源已申请量(也即第一资源量)存放于数组mem_used[4]中,例如mem_used[0]=14G,代表该任务实例所有进程对该处理节点的GPU 0号物理设备的显存资源使用量为14GB,已达到最大申请显存量(也即资源申请量)。同理,任务实例1所有进程对该处理节点的GPU1号物理设备的显存资源使用量为mem_used[1]=12G,标识任务实例还可向1号物理设备申请2GB的显存资源。mem_used变量是以共享内存的方式存储的,并科利用现有技术中的信号量等机制解决多进程读写冲突的问题,来提供给任务实例的多个进程共享该任务实例对GPU物理设备显存资源的使用情况。
任务实例2申请了1个GPU物理设备,对应GPU 1号物理设备,且申请该GPU物理设备的显存资源为1GB(也即资源申请量),GPU物理设备的Threads百分比为5。当前任务实例2下的所有进程已用显存为1GB,即mem_used[1]=1。
实施例二
对应于上述实施例一,本发明实施例二提供了一种资源隔离模块,相应的技术特征和技术效果在本实施例中不再详述,相关之处可参考上述实施例一。具体地,图3为本发明实施例提供的资源隔离模块的框图,如图3所示,该模块包括第一获取单元301、第一判断单元302、第二判断单元303和处理单元304。
其中,第一获取单元301用于获取任务实例中的待运行进程;第一判断单元302用于判断待运行进程是否需要消费目标资源,其中,任务实例包括一个或多个进程;第二判断单元303用于当待运行进程需要消费目标资源时,判断第一资源量与第二资源量的和是否大于资源申请量,其中,第一资源量为任务实例正在占用的目标资源的量,第二资源量为待运行进程所需的目标资源的量,资源申请量为任务实例申请到的目标资源的量;处理单元304用于当第一资源量与第二资源量的和大于资源申请量时,向任务实例返回表征待运行进程资源申请失败的标识信息;以及当第一资源量与第二资源量的和小于或等于资源申请量时,向待运行进程分配第二资源量的目标资源。
可选地,在一种实施例中,待运行进程为发送接口调用请求的进程,第一判断单元302在判断待运行进程是否需要消费目标资源时,具体执行的步骤为:判断接口调用请求所调用的接口是否为申请目标资源的接口;其中,当接口调用请求所调用的接口是申请目标资源的接口时,待运行进程需要消费目标资源。
可选地,在一种实施例中,资源隔离装置还包括确定单元和第二获取单元。其中,确定单元用于在第二判断单元303判断第一资源量与第二资源量的和是否大于资源申请量之前,确定待运行进程需要消费的目标资源所属的物理设备,得到第一物理设备,其中,任务实例执行时申请到至少两个物理设备上的目标资源,第一物理设备为至少两个物理设备中的一个;第二获取单元用于获取任务实例正在占用第一物理设备上目标资源的量,得到第一资源量,获取任务实例在第一物理设备上申请到的目标资源的量,得到资源申请量。
可选地,在一种实施例中,任务实例的所有进程共享资源占用变量,资源隔离装置还包括读取单元,该读取单元用于在判断第一资源量与第二资源量的和是否大于资源申请量的步骤之前,读取资源占用变量的值,以得到第一资源量。
可选地,在一种实施例中,任务实例创建申请到N个物理设备上的目标资源,资源占用变量为数组,数组至少包括N个元素,任务实例正在占用的每个物理设备上的目标资源的量均通过一个元素记录。
可选地,在一种实施例中,目标资源为GPU物理设备的显存资源。
可选地,在一种实施例中,处理单元304还用于当待运行进程不需要消费目标资源时,转发接口调用请求,以及在向待运行进程分配第二资源量的目标资源时,具体执行的步骤为:转发接口调用请求。
实施例三
本发明实施例三提供了一种分布式平台,图4为本发明实施例提供的分布式平台的框图,如图4所示,该分布式平台包括:管理节点41和若干处理节点42,处理节点42包括目标资源421、任务创建装置422和资源处理装置423,资源处理装置423包括资源隔离模块4231和资源管理模块4232。
其中,管理节点41用于根据各个处理节点42上目标资源的信息调度任务至处理节点42;任务创建装置422用于在其所在的处理节点42上被调度时,创建任务实例;资源管理模块4232用于将其所在处理节点42上目标资源的信息上报至管理节点41,还用于为任务实例分配目标资源;以及资源隔离模块4231用于执行本发明提供的任意一种资源隔离方法。
可选地,在一种实施例中,处理节点42包括GPU物理设备,目标资源为GPU物理设备上的显存资源,资源隔离模块4231为so库,资源管理模块4232还用于:将GPU物理设备和资源隔离模块4231挂载至任务实例;设置任务实例的环境变量,其中,环境变量包括目标资源的资源申请量和动态库加载变量,动态库加载变量的值为资源隔离模块。
图5和图6为本发明一种实施例提供的分布式平台的业务处理流程示意图,在一种实施例中,如图5和图6所示,在一个分布式平台中,能够对GPU物理设备的显存资源和threads资源进行隔离。
具体地,处理节点中的显存隔离模块GPU Memory Manage也即资源隔离模块,是一个gpu_memory_manage.so库,实现任务实例的显存资源隔离。GPU物理设备的threads资源隔离是由MPS Server(也即MPS服务器)实现。
资源管理模块是将处理节点上的GPU物理设备的资源信息同步到管理节点的模块,并在任务实例调度完成后负责:
(1)挂载GPU物理设备;
(2)将gpu_memory_manage.so库挂载进任务实例内部/tmp/gpu_memory_manage.so;
(3)给任务实例设置一些GPU资源隔离相关的环境变量,包括:
MAX_MEM;
LD_PRELOAD;
CUDA_MPS_ACTIVE_THREAD_PERCENTAGE。
在分布式平台的业务处理之前,先进行模块部署,具体包括:
1)GPU Memory Manage模块(也即资源隔离模块)是一个gpu_memory_manage.so文件库,以文件的形式部署在处理节点的/tmp/目录下。
2)MPS Server以服务的模式部署在每一个处理节点上,实现GPU物理设备多进程任务服务,并对GPU物理设备的Threads资源进行隔离。
3)资源管理模块以服务的模式部署在每一个处理节点上。
分布式平台的业务处理流程的各个步骤描述如下。
步骤S.1:资源管理模块初始化资源信息,同步资源到调度模块。
其中,管理节点包括任务管理模块和调度模块。对于处理节点上GPU物理资源,资源管理模块会将每个处理节点上的GPU物理设备的数量,每个GPU物理设备的显存资源的容量收集起来,同步给分布式平台中管理节点的调度模块。
步骤S.2:调度模块查询待调度任务实例。
其中,用户在分布式平台提交任务后,根据任务的类型,确定请求GPU物理资源的资源请求参数。例如,用户提交的是视频处理类的任务,该任务需要的显存资源和Threads资源及GPU物理设备数量是可以预设的,因此分布式平台可以根据任务类型来设置该任务的资源请求参数。
或者,任务的请求参数包括资源请求参数,例如包括每个GPU物理设备上的显存资源的量、GPU物理设备的数量以及每个GPU物理设备的Threads资源百分比,例如:
……
-name:job n
resources:
limits:
nvidia.com/gpu:4
nvidia.com/gpu_threads:33
nvidia.com/gpu_mem:5461
从上述参数可以看出,GPU物理设备的数量为4,每个GPU物理设备的Threads资源百分比为33,每个GPU物理设备上的显存资源的量为5461。
步骤S.3:任务管理模块发送待调度任务实例给调度模块。
步骤S.4:调度模块进行调度,并绑定调度节点给任务实例。
其中,调度模块拿到用户提交的任务后,将根据请求GPU物理资源的资源请求参数与分布式平台中各处理节点的GPU资源情况,采用节点预选与优选策略等进行任务调度。
步骤S.5:资源管理模块将为任务实例分配资源,并更新分配后的资源到调度模块。
调度完成得到任务被分配的处理节点后,该处理节点上的任务创建装置创建任务实例,资源管理模块将根据任务实例请求GPU物理资源的资源请求参数,分别做如下工作:
1)将处理节点中的/tmp/gpu_memory_manage.so库以只读方式挂载到任务实例内部/tmp/gpu_memory_manage.so;
2)设置任务实例的环境变量MAX_MEM为每个GPU物理设备上的显存资源的量;
3)设置任务实例的环境变量CUDA_MPS_ACTIVE_THREAD_PERCENTA GE为任务实例申请的每个GPU物理设备的Threads资源百分比;
4)设置任务实例的LD_PRELOAD环境变量为/tmp/gpu_memory_manage.so,用于使GPU显存隔离模块生效。
步骤S.6:任务实例申请资源。
其中,任务实例申请资源的过程,也即资源隔离模块的工作流程;图7为本发明实施例提供的任务实例申请资源的示意图,如图7所示,任务实例中的进程在使用GPU物理设备调用CUDA(Compute Unified Device Architecture)API接口时,会被GPU MemoryManage模块实现的gpu_memory_manage.so库所拦截,GPU Memory Manage模块会判断任务实例调用的接口是否是与显存资源分配相关的接口,如果否,则会调用原始的CUDA API并将调用结果返回给任务实例。如果GPU Memory Manage模块判断任务实例调用的接口是与显存分配相关的接口,则首先从共享内存中读取当前任务实例的显存资源分配情况。GPUMemory Manage模块会判断任务实例当前已经使用的显存资源是否达到环境变量MAX_MEM值。如果当前需要的显存资源的量与共享内存中的值之和超过了MAX_MEM最大值,则GPUMemory Manage模块会返回CUDA_ERROR_OUT_OF_MEMORY状态码给任务实例。
步骤S.7:资源隔离模块将资源的申请结果返回给任务实例中的程序。
实施例四
本实施例还提供一种计算机设备,如可以执行程序的智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。如图8所示,本实施例的计算机设备01至少包括但不限于:可通过系统总线相互通信连接的存储器011、处理器012,如图8所示。需要指出的是,图8仅示出了具有组件存储器011和处理器012的计算机设备01,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
本实施例中,存储器011(即可读存储介质)包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器011可以是计算机设备01的内部存储单元,例如该计算机设备01的硬盘或内存。在另一些实施例中,存储器011也可以是计算机设备01的外部存储设备,例如该计算机设备01上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,存储器011还可以既包括计算机设备01的内部存储单元也包括其外部存储设备。本实施例中,存储器011通常用于存储安装于计算机设备01的操作系统和各类应用软件,例如实施例二的资源隔离装置的程序代码等。此外,存储器011还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器012在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器012通常用于控制计算机设备01的总体操作。本实施例中,处理器012用于运行存储器011中存储的程序代码或者处理数据,例如资源隔离方法等。
实施例五
本实施例还提供一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘、服务器、App应用商城等等,其上存储有计算机程序,程序被处理器执行时实现相应功能。本实施例的计算机可读存储介质用于存储资源隔离方法,被处理器执行时实现实施例一的资源隔离方法。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (11)

1.一种资源隔离方法,其特征在于,包括:
获取任务实例中的待运行进程;
判断所述待运行进程是否需要消费目标资源,其中,所述任务实例包括一个或多个进程;
当所述待运行进程需要消费所述目标资源时,判断第一资源量与第二资源量的和是否大于资源申请量,其中,所述第一资源量为所述任务实例正在占用的所述目标资源的量,所述第二资源量为所述待运行进程所需的所述目标资源的量,所述资源申请量为所述任务实例申请到的所述目标资源的量;
当所述第一资源量与所述第二资源量的和大于所述资源申请量时,向所述任务实例返回表征所述待运行进程资源申请失败的标识信息;以及
当所述第一资源量与所述第二资源量的和小于或等于所述资源申请量时,向所述待运行进程分配所述第二资源量的所述目标资源。
2.根据权利要求1所述的资源隔离方法,其特征在于,所述待运行进程为发送接口调用请求的进程,判断所述待运行进程是否需要消费目标资源的步骤具体为:
判断所述接口调用请求所调用的接口是否为申请所述目标资源的接口;
其中,当所述接口调用请求所调用的接口是申请所述目标资源的接口时,所述待运行进程需要消费所述目标资源。
3.根据权利要求1所述的资源隔离方法,其特征在于,在判断第一资源量与第二资源量的和是否大于资源申请量的步骤之前,所述资源隔离方法包括:
确定所述待运行进程需要消费的所述目标资源所属的物理设备,得到所述第一物理设备,其中,所述任务实例执行时申请到至少两个物理设备上的所述目标资源,所述第一物理设备为所述至少两个物理设备中的一个;
获取所述任务实例正在占用所述第一物理设备上所述目标资源的量,得到所述第一资源量;
获取所述任务实例在所述第一物理设备上申请到的所述目标资源的量,得到所述资源申请量。
4.根据权利要求1所述的资源隔离方法,其特征在于,所述任务实例的所有进程共享资源占用变量,在判断第一资源量与第二资源量的和是否大于资源申请量的步骤之前,所述资源隔离方法还包括:
读取所述资源占用变量的值,以得到所述第一资源量。
5.根据权利要求4所述的资源隔离方法,其特征在于,所述任务实例创建申请到N个物理设备上的所述目标资源,所述资源占用变量为数组,所述数组至少包括N个元素,所述任务实例正在占用的每个物理设备上的目标资源的量均通过一个所述元素记录。
6.根据权利要求1所述的资源隔离方法,其特征在于,所述目标资源为GPU物理设备的显存资源。
7.根据权利要求2所述的资源隔离方法,其特征在于,
所述资源隔离方法还包括:当所述待运行进程不需要消费所述目标资源时,转发所述接口调用请求;
向所述待运行进程分配所述第二资源量的所述目标资源的步骤具体为:转发所述接口调用请求。
8.一种分布式平台,其特征在于,
所述分布式平台包括:管理节点和若干处理节点,所述处理节点包括目标资源、任务创建装置和资源处理装置,所述资源处理装置包括资源隔离模块和资源管理模块,其中:
所述管理节点用于根据各个所述处理节点上所述目标资源的信息调度任务至所述处理节点;
所述任务创建装置用于在所述处理节点上被调度时,创建任务实例;
所述资源管理模块用于将所述处理节点上所述目标资源的信息上报至所述管理节点,还用于为所述任务实例分配所述目标资源;以及
所述资源隔离模块用于执行权利要求1至7中任一项所述的资源隔离方法。
9.根据权利要求8所述的分布式平台,其特征在于,所述处理节点包括GPU物理设备,所述目标资源为所述GPU物理设备上的显存资源,所述资源隔离模块为so库,所述资源管理模块还用于:
将所述GPU物理设备和所述资源隔离模块挂载至任务实例;
设置所述任务实例的环境变量,其中,所述环境变量包括所述目标资源的资源申请量和动态库加载变量,所述动态库加载变量的值为所述资源隔离模块。
10.一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7任一项所述方法的步骤。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现权利要求1至7任一项所述方法的步骤。
CN201910541011.3A 2019-06-21 2019-06-21 资源隔离方法、分布式平台、计算机设备和存储介质 Pending CN112114958A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910541011.3A CN112114958A (zh) 2019-06-21 2019-06-21 资源隔离方法、分布式平台、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910541011.3A CN112114958A (zh) 2019-06-21 2019-06-21 资源隔离方法、分布式平台、计算机设备和存储介质

Publications (1)

Publication Number Publication Date
CN112114958A true CN112114958A (zh) 2020-12-22

Family

ID=73796243

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910541011.3A Pending CN112114958A (zh) 2019-06-21 2019-06-21 资源隔离方法、分布式平台、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN112114958A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113032141A (zh) * 2021-02-10 2021-06-25 山东英信计算机技术有限公司 一种ai平台资源切换方法、系统及介质
CN113835887A (zh) * 2021-09-17 2021-12-24 北京百度网讯科技有限公司 显存的分配方法、装置、电子设备及可读存储介质

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102761469A (zh) * 2011-04-27 2012-10-31 阿里巴巴集团控股有限公司 一种资源池的分配方法和装置
CN105589751A (zh) * 2015-11-27 2016-05-18 杭州华三通信技术有限公司 一种物理资源调度方法及装置
CN105988872A (zh) * 2015-02-03 2016-10-05 阿里巴巴集团控股有限公司 一种cpu资源分配的方法、装置及电子设备
CN106445515A (zh) * 2016-09-18 2017-02-22 深圳市华云中盛科技有限公司 一种基于容器的PaaS云的实现方法
CN107040479A (zh) * 2016-02-04 2017-08-11 华为软件技术有限公司 一种云计算资源调节的方法和装置
CN108052384A (zh) * 2017-12-27 2018-05-18 联想(北京)有限公司 一种任务处理方法、服务平台及电子设备
CN108429631A (zh) * 2017-02-15 2018-08-21 华为技术有限公司 一种网络业务实例化的方法及装置
CN108551399A (zh) * 2018-03-29 2018-09-18 深信服科技股份有限公司 一种云环境下服务的部署方法、系统及相关装置
CN108769254A (zh) * 2018-06-25 2018-11-06 星环信息科技(上海)有限公司 基于抢占式调度的资源共享使用方法、系统及设备
CN108845884A (zh) * 2018-06-15 2018-11-20 中国平安人寿保险股份有限公司 物理资源分配方法、装置、计算机设备和存储介质
CN109471727A (zh) * 2018-10-29 2019-03-15 北京金山云网络技术有限公司 一种任务处理方法、装置及系统
CN109471705A (zh) * 2017-09-08 2019-03-15 杭州海康威视数字技术股份有限公司 任务调度的方法、设备及系统、计算机设备
CN109814998A (zh) * 2019-01-22 2019-05-28 中国联合网络通信集团有限公司 一种多进程任务调度的方法及装置

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102761469A (zh) * 2011-04-27 2012-10-31 阿里巴巴集团控股有限公司 一种资源池的分配方法和装置
CN105988872A (zh) * 2015-02-03 2016-10-05 阿里巴巴集团控股有限公司 一种cpu资源分配的方法、装置及电子设备
CN105589751A (zh) * 2015-11-27 2016-05-18 杭州华三通信技术有限公司 一种物理资源调度方法及装置
CN107040479A (zh) * 2016-02-04 2017-08-11 华为软件技术有限公司 一种云计算资源调节的方法和装置
CN106445515A (zh) * 2016-09-18 2017-02-22 深圳市华云中盛科技有限公司 一种基于容器的PaaS云的实现方法
CN108429631A (zh) * 2017-02-15 2018-08-21 华为技术有限公司 一种网络业务实例化的方法及装置
CN109471705A (zh) * 2017-09-08 2019-03-15 杭州海康威视数字技术股份有限公司 任务调度的方法、设备及系统、计算机设备
CN108052384A (zh) * 2017-12-27 2018-05-18 联想(北京)有限公司 一种任务处理方法、服务平台及电子设备
CN108551399A (zh) * 2018-03-29 2018-09-18 深信服科技股份有限公司 一种云环境下服务的部署方法、系统及相关装置
CN108845884A (zh) * 2018-06-15 2018-11-20 中国平安人寿保险股份有限公司 物理资源分配方法、装置、计算机设备和存储介质
CN108769254A (zh) * 2018-06-25 2018-11-06 星环信息科技(上海)有限公司 基于抢占式调度的资源共享使用方法、系统及设备
CN109471727A (zh) * 2018-10-29 2019-03-15 北京金山云网络技术有限公司 一种任务处理方法、装置及系统
CN109814998A (zh) * 2019-01-22 2019-05-28 中国联合网络通信集团有限公司 一种多进程任务调度的方法及装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113032141A (zh) * 2021-02-10 2021-06-25 山东英信计算机技术有限公司 一种ai平台资源切换方法、系统及介质
CN113835887A (zh) * 2021-09-17 2021-12-24 北京百度网讯科技有限公司 显存的分配方法、装置、电子设备及可读存储介质

Similar Documents

Publication Publication Date Title
CN109117260B (zh) 一种任务调度方法、装置、设备和介质
CN108845884B (zh) 物理资源分配方法、装置、计算机设备和存储介质
CN110489213B (zh) 一种任务处理方法及处理装置、计算机系统
CN106293893B (zh) 作业调度方法、装置及分布式系统
CN110888743A (zh) 一种gpu资源使用方法、装置及存储介质
CN102761469A (zh) 一种资源池的分配方法和装置
KR102338849B1 (ko) 실시간 운영 체제에서 스택 메모리 관리를 제공하는 방법 및 시스템
CN109992373B (zh) 资源调度方法、信息管理方法和装置及任务部署系统
CN115048216B (zh) 一种人工智能集群的资源管理调度方法、装置和设备
US20220283846A1 (en) Pod deployment method and apparatus
CN112463375A (zh) 一种数据处理的方法和装置
CN111694658A (zh) Cpu资源分配方法、装置、电子设备和存储介质
US20160371123A1 (en) Data Processing Method and Apparatus
CN111709723B (zh) Rpa业务流程智能处理方法、装置、计算机设备和存储介质
CN111338779A (zh) 资源分配方法、装置、计算机设备和存储介质
CN112114958A (zh) 资源隔离方法、分布式平台、计算机设备和存储介质
CN112866314B (zh) 分布式主从系统中从节点的切换方法、主节点设备和存储介质
CN117632516A (zh) 资源分配方法、装置、和计算机设备
CN113760549B (zh) 一种pod部署方法及装置
CN114546587A (zh) 一种在线图像识别服务的扩缩容方法及相关装置
CN112866321B (zh) 一种资源调度方法、装置和系统
US20150212859A1 (en) Graphics processing unit controller, host system, and methods
CN116578416A (zh) 一种基于gpu虚拟化的信号级仿真加速方法
CN111400032A (zh) 一种资源分配的方法及装置
CN112527490A (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