掌桥专利:专业的专利平台
掌桥专利
首页

一种面向服务器无感知计算的分离式内存管理方法

文献发布时间:2024-04-18 20:01:23


一种面向服务器无感知计算的分离式内存管理方法

技术领域

本申请涉及内存管理技术领域,特别是一种面向服务器无感知计算的分离式内存管理方法。

背景技术

服务器无感知计算是云计算领域的新兴技术,实现了函数即服务的云计算范式。在服务器无感知计算场景下,用户为服务器无感知计算平台提供想要执行的任务代码以及执行该任务所需的内存大小,之后服务器无感知计算平台将自动为该任务构建运行环境,包括创建容器以及加载代码与相关库,然后执行该任务。

现有大多服务器无感知计算平台主要基于计算与内存资源耦合在同一台机器上的方案,在对任务进行调度时需要为其匹配一台计算、内存资源均满足要求的机器。然而,上述方案会导致平台出现比较严重的资源浪费问题,例如出现计算资源已经用完而存储资源还有剩余的情况,导致平台整体的资源利用率较低。

因此,有必要开发一种面向服务器无感知计算的分离式内存管理方法,以提高资源利用率。

发明内容

鉴于上述问题,本申请实施例提供了一种面向服务器无感知计算的分离式内存管理方法,以便克服上述问题或者至少部分地解决上述问题。

本申请实施例的第一方面,提供了一种面向服务器无感知计算的分离式内存管理方法,应用于服务器无感知计算平台,所述服务器无感知计算平台包括:任务调度器、工作节点监视器、远端内存池以及多个工作节点,所述方法包括:

平台用户发送请求,将请求放置在任务等待队列中等待调度;

所述任务调度器在所述任务等待队列非空时,根据目前的集群资源信息与所述任务等待队列中的各个任务的特征信息,确定各个任务的执行顺序以及各个任务的可用本地内存大小,并为各个任务分配工作节点,所述任务等待队列用于存放等待调度的任务,所述集群资源信息为所述多个工作节点的本地资源信息;所述特征信息表示任务的执行时间随本地内存变化的函数;

所述工作节点执行被分配的任务,在该任务使用的内存超过对应的所述可用本地内存大小的情况下,访问所述远端内存池以执行任务;所述远端内存池为用于提供内存资源的机器集群;

所述工作节点监视器监控各个工作节点的任务执行情况。

在一种可能的实施方式中,所述方法还包括:

在不同的所述可用本地内存大小下,离线执行每个任务;

记录每个任务在不同的所述可用本地内存大小下的执行时间;

根据所述执行时间,确定每个任务的所述特征信息。

在一种可能的实施方式中,所述任务执行情况至少包括:本次执行完成该任务的执行时间和使用的本地内存大小,所述方法还包括:

所述工作节点监视器根据所述任务执行情况,在每个任务执行完成时,更新所述集群资源信息和任务的所述特征信息。

在一种可能的实施方式中,所述本地资源信息至少包括:本地内存资源信息和计算资源信息,所述为各个任务分配工作节点,包括:

从所述多个工作节点中,选择剩余本地内存资源与剩余本地计算资源比例最接近本任务所需内存资源与所需计算资源比例的工作节点,作为执行本任务的工作节点。

在一种可能的实施方式中,所述确定各个任务的执行顺序以及各个任务的可用本地内存大小,包括:

选择使用的调度目标,以最小化所有任务的平均完成时间为所述调度目标,或,以最大化服务水平目标满足率为所述调度目标;

按照所述调度目标,确定各个任务的所述执行顺序以及各个任务的所述可用本地内存大小;

其中,所述平均完成时间表示所有任务的完成时间的平均值;所述完成时间表示任务从提交至完成所需的时间;所述服务水平目标满足率表示所有任务中满足了服务水平目标的任务数量占比,任务能够在对应的期望最晚完成时间之前完成则表示,该任务满足所述服务水平目标;

在一种可能的实施方式中,在以最小化所有任务的平均完成时间为所述调度目标的情况下,所述按照所述调度目标,确定各个任务的所述执行顺序以及各个任务的所述可用本地内存大小,包括:

根据所述任务等待队列,枚举所有任务组成的集合的子集;

对于每个所述子集,枚举所述子集中第一个执行的任务以及该任务使用的所述可用本地内存大小;

按照所述第一个执行的任务以及该任务使用的所述可用本地内存大小,计算每个所述子集的所述平均完成时间的最小值;

根据所述平均完成时间的最小值最小的子集所对应的所述第一个执行的任务以及该任务使用的所述可用本地内存大小,确定各个任务的所述执行顺序以及各个任务的所述可用本地内存大小。

在一种可能的实施方式中,在以最小化所有任务的平均完成时间为所述调度目标的情况下,所述按照所述调度目标,确定各个任务的所述执行顺序以及各个任务的所述可用本地内存大小,包括:

从所述任务等待队列中确定,出现次数最大的k个候选任务,所述k为小于L的正整数,所述L为所述任务等待队列中的任务总数;

枚举所述k个候选任务组成的集合的子集;

对于每个所述子集,枚举所述子集中第一个执行的任务以及该任务使用的所述可用本地内存大小;

按照所述第一个执行的任务以及该任务使用的所述可用本地内存大小,计算每个所述子集的所述平均完成时间的最小值;

根据所述平均完成时间的最小值最小的子集所对应的所述第一个执行的任务以及该任务使用的所述可用本地内存大小,确定各个任务的所述执行顺序以及各个任务的所述可用本地内存大小。

在一种可能的实施方式中,按照如下公式计算所述平均完成时间:

其中,L表示所述任务等待队列中的任务总数,

在一种可能的实施方式中,在以最大化服务水平目标满足率为所述调度目标的情况下,所述按照所述调度目标,确定各个任务的所述执行顺序以及各个任务的所述可用本地内存大小,包括:

将所述任务等待队列中的各个任务分为:紧急任务、优先任务和非优先任务;

对于所述紧急任务,按照距离所述期望最晚完成时间的距离从近到远的顺序,确定所述紧急任务的执行顺序,为每个所述紧急任务分配第一可用本地内存大小;所述第一可用本地内存大小表示该任务运行时的峰值内存大小;

对于所述优先任务,按照执行所需资源从小到大的顺序,确定所述优先任务的执行顺序,为每个所述优先任务分配第二可用本地内存大小;所述第二可用本地内存大小表示占用的本地资源最少的内存大小;

对于所述非优先任务,按照执行所需资源从小到大的顺序,确定所述非优先任务的执行顺序,为每个所述非优先任务分配所述第二可用本地内存大小;

按照所述紧急任务先于所述优先任务,所述优先任务先于所述非优先任务的顺序,确定各个任务的所述执行顺序。

在一种可能的实施方式中,所述服务器无感知计算平台还包括分离式内存子系统,所述分离式内存子系统由远程直接内存访问网络构建得到;所述在该任务使用的内存超过对应的所述可用本地内存大小的情况下,访问所述远端内存池以执行任务,包括:

在任务使用的内存超过对应的所述可用本地内存大小的情况下,所述分离式内存子系统替换操作系统中的换页处理模块,在执行该任务的工作节点与指定的所述远端内存池之间建立网络连接,访问所述远端内存池以执行任务。

本申请实施例第二方面还提供了一种服务器无感知计算平台,所述服务器无感知计算平台包括:任务调度器、工作节点监视器、远端内存池以及多个工作节点;

所述平台用于接收用户发送的请求,将所述请求放置在任务等待队列中等待调度;

所述任务调度器,用于在所述任务等待队列非空时,根据目前的集群资源信息与所述任务等待队列中的各个任务的特征信息,确定各个任务的执行顺序以及各个任务的可用本地内存大小,并为各个任务分配工作节点,所述任务等待队列用于存放等待调度的任务,所述集群资源信息为所述多个工作节点的本地资源信息;所述特征信息表示任务的执行时间随本地内存变化的函数;

所述工作节点,用于执行被分配的任务,在该任务使用的内存超过对应的所述可用本地内存大小的情况下,访问所述远端内存池以执行任务;所述远端内存池为用于提供内存资源的机器集群;

所述工作节点监视器,用于监控各个工作节点的任务执行情况。

本申请实施例第三方面还提供了一种电子设备,包括存储器、处理器及存储在所述存储器上的计算机程序,所述处理器执行所述计算机程序以实现本申请实施例第一方面所述的面向服务器无感知计算的分离式内存管理方法中的步骤。

本申请实施例第四方面还提供了一种计算机可读存储介质,其上存储有计算机程序/指令,该计算机程序/指令被处理器执行时实现本申请实施例第一方面所述的面向服务器无感知计算的分离式内存管理方法中的步骤。

本申请实施例第五方面还提供了一种计算机程序产品,所述计算机程序产品在电子设备上运行时,使处理器执行时实现如本申请实施例第一方面所述的面向服务器无感知计算的分离式内存管理方法中的步骤。

本申请实施例提供的一种面向服务器无感知计算的分离式内存管理方法,该方法应用于服务器无感知计算平台,服务器无感知计算平台包括:任务调度器、工作节点监视器、远端内存池以及多个工作节点,方法包括:平台用户发送请求,将请求放置在任务等待队列中等待调度;所述任务调度器在所述任务等待队列非空时,根据目前的集群资源信息与所述任务等待队列中的各个任务的特征信息,确定各个任务的执行顺序以及各个任务的可用本地内存大小,并为各个任务分配工作节点,所述任务等待队列用于存放等待调度的任务,所述集群资源信息为所述多个工作节点的本地资源信息;所述特征信息表示任务的执行时间随本地内存变化的函数;所述工作节点执行被分配的任务,在该任务使用的内存超过对应的所述可用本地内存大小的情况下,访问所述远端内存池以执行任务;所述远端内存池为用于提供内存资源的机器集群;所述工作节点监视器监控各个工作节点的任务执行情况。

本申请所提出的方法根据目前的集群资源信息与各个任务的特征信息,为任务等待队列中的各个任务确定执行顺序并分配工作节点,还确定了每个任务在工作节点上执行时可使用的可用本地内存大小。一方面,实现了分离式内存管理,解决了单个任务使用的内存不能超过单机内存(工作节点的本地内存)的上限的问题。本申请在任务使用的内存超出可用本地内存大小的情况下,访问远端内存池以执行任务,实现对单机内存的扩展,计算资源与内存资源的解耦,避免出现因本地内存不足无法执行任务的情况。另一方面,提高了平台资源利用率。本申请根据集群资源信息和各个任务的特征信息(任务的执行时间随本地内存变化的函数),为每个任务分配最佳工作节点,通过计算资源与内存资源解耦,解决了资源浪费问题,在保证了任务的执行时间的前提下,提高了对工作节点的内存资源和计算资源的利用率。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例提供的一种面向服务器无感知计算的分离式内存管理方法的步骤流程图;

图2是本申请实施例提供的一种服务器无感知计算平台的任务执行流程示意图;

图3是本申请实施例提供的一种电子设备的示意图。

具体实施方式

下面将结合本申请实施例中的附图更详细地描述本申请的示例性实施例。虽然附图中显示了本申请的示例性实施例,然而应当理解,可以以各种形式实现本申请而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本申请,并且能够将本申请的范围完整的传达给本领域的技术人员。

服务器无感知计算是云计算领域的新兴技术,实现了函数即服务的云计算范式。在服务器无感知计算场景下,用户为服务器无感知计算平台提供想要执行的任务代码以及执行该任务所需的内存大小,之后服务器无感知计算平台将自动为该任务构建运行环境,包括创建容器以及加载代码与相关库,然后执行该任务。

现有大多服务器无感知计算平台主要基于计算与内存资源耦合在同一台机器上的方案,认为在一台机器上执行的计算任务只能访问该机器上的内存,因此,在对任务进行调度时需要为其匹配一台计算、内存资源均满足要求的机器。这一方案具有以下两个方面的局限性。

一方面,该方案要求单个任务使用的内存不能超过单机内存的上限。当任务使用的内存超过机器内存上限时,需要将任务的部分内存下放至磁盘以进行内存扩展,但由于磁盘读写性能差,所以此时任务的启动时间和性能会受到影响。目前,处理器的计算速度不断提升,导致各类现实应用需要的内存大小逐渐增长,并且速度远超单机内存的增长速度。因此,如果要求单个任务使用的内存不能超过单机内存上限,许多大型任务将无法在服务器无感知计算平台上进行部署,影响平台的可用性。

另一方面,计算与内存耦合的设计将导致较低的平台资源利用率。由于单机内存有限,所以一台机器的任务部署密度会受到限制,此时就可能出现一台机器仍然拥有计算资源,但由于内存资源不足,这部分计算资源无法被利用的情况,造成计算资源浪费。对于另一种可能的情况,一台机器的内存资源充足,然而计算资源紧缺,此时机器的内存无法得到充分利用,造成内存资源的浪费。因此,目前的计算内存耦合设计会导致平台出现比较严重的资源浪费问题,导致较低的资源利用率。

分离式内存技术可以利用数据中心内高带宽、低延时的网络来允许一台机器访问其它机器的内存,实现对单机内存的扩展。具体的,在一台机器上运行的任务可以同时使用本机的计算资源与其它机器的内存资源,从而对计算与内存进行解耦合。然而,目前在服务器无感知计算场景下如何对分离式内存进行管理并没有一个很好的解决方案。

鉴于上述问题,本申请实施例提出一种面向服务器无感知计算的分离式内存管理方法,以解决上述资源利用率较低等问题。下面结合附图,通过一些实施例及其应用场景对本申请实施例提供的面向服务器无感知计算的分离式内存管理方法进行详细地说明。

本申请实施例第一方面提供了一种面向服务器无感知计算的分离式内存管理方法,应用于服务器无感知计算平台,服务器无感知计算平台包括:任务调度器、工作节点监视器、远端内存池以及多个工作节点,参照图1,图1为本申请实施例提供的一种面向服务器无感知计算的分离式内存管理方法的步骤流程图,如图1所示,所述方法包括:

步骤S101,平台用户发送请求,将请求放置在任务等待队列中等待调度。

在实际应用过程中,往往由平台用户向服务器无感知计算平台发送请求,以请求执行用户指定的任务,该任务可以为文件压缩、视频处理、缩略图生成、文件上传等。在服务器无感知计算平台接收到用户发送的请求后,调度相关资源(例如计算资源和存储资源)执行请求对应的任务,将最终得到的执行结果返回给用户,结束该请求。其中,所述任务等待队列用于存放等待调度的任务,每个平台用户发送的请求可以作为一个待执行的任务。

服务器无感知计算是云计算领域的新兴技术,实现了函数即服务(任务)的云计算范式。在服务器无感知计算场景下,用户在服务器无感知计算平台发送请求的同时,为服务器无感知计算平台提供想要执行的任务代码以及执行该任务所需的内存大小等信息,在此基础上,不需要用户专门为请求执行的任务分配特定的计算资源、存储资源,不需要用户指定执行任务的工作节点,服务器无感知计算平台将自动为该任务构建运行环境,包括创建容器以及加载代码与相关库,然后执行该任务。

步骤S102,所述任务调度器在所述任务等待队列非空时,根据目前的集群资源信息与所述任务等待队列中的各个任务的特征信息,确定各个任务的执行顺序以及各个任务的可用本地内存大小,并为各个任务分配工作节点,所述任务等待队列用于存放等待调度的任务,所述集群资源信息为所述多个工作节点的本地资源信息;所述特征信息表示任务的执行时间随本地内存变化的函数。

在本实施例中,当任务等待队列非空时,表示当前存在待执行的任务。当等待队列非空时,任务调度器将根据目前的集群资源信息与任务等待队列中每个任务的特征信息来选择合适的任务,并为其分配合适的机器(工作节点)与可用本地内存大小。可用本地内存大小,即分离式内存大小,表示该任务在分配的工作节点上可使用的本地内存大小。分离式内存技术可以利用数据中心内高带宽、低延时的网络来允许一台机器访问远端内存池的内存,以实现对单机内存的扩展。具体的,在一个工作节点上运行的任务可以同时使用本机的计算资源、内存资源,以及,远端内存池的内存资源,从而对计算与内存进行解耦合。需要知道的是,本申请实施例中的计算资源和存储资源可以为传统的计算资源和存储资源,例如CPU等,也可以是异构服务器(如GPU)的异构计算集群的计算资源和存储资源。在本实施例中,当任务所需要使用的内存超出可用本地内存大小时,通过访问远端内存池来使用远端内存池的内存资源。由此,允许提交至服务器无感知计算平台的任务使用任意大小的内存,同时获得较高的资源利用率。

其中,任务的特征信息表示该任务的执行时间随本地内存(即分配的可用本地内存大小)变化的函数,具体的,使用工作节点的本地内存时的处理性能往往优于借用其他机器的内存资源时的任务处理性能,所以,在借助分离式内存技术使用远端内存池的内存资源时,任务的启动时间和性能会受到影响,导致每个任务使用的本地内存大小不同时,实际的执行时间也会随之发生变化。在本实施例中,执行时间是指工作节点开始执行该任务至得到执行结果的时间。

每个任务的特征信息可以预先通过测试获取。在一种可能的实施方式中,所述方法还包括:

在不同的所述可用本地内存大小下,离线执行每个任务。

记录每个任务在不同的所述可用本地内存大小下的执行时间。

根据所述执行时间,确定每个任务的所述特征信息。

在本实施例中,首先针对多个特定的本地内存大小对任务进行离线执行,获得任务在不同本地内存大小下的执行时间,然后拟合出任务的执行时间随本地内存大小变化的函数作为任务的特征信息。示例性的,对于任务A,使其分别在本地内存大小为1个单位(小于任务A所需要使用的内存总量)、5个单位(小于任务A所需要使用的内存总量)、10个单位(大于任务A所需要使用的内存总量)的情况下,在工作节点上执行该任务A,记录各自的执行时间:T1、T2和T3,从而根据[1单位,T1]、[5单位,T2]和[10单位,T3]生成函数关系式,并将其作为该任务A的特征信息。

在一种可能的实施方式中,所述步骤S102,确定各个任务的执行顺序以及各个任务的可用本地内存大小,包括:

步骤S1021,选择使用的调度目标,以最小化所有任务的平均完成时间为所述调度目标,或,以最大化服务水平目标满足率为所述调度目标。

步骤S1022,按照所述调度目标,确定各个任务的所述执行顺序以及各个任务的所述可用本地内存大小。

其中,所述平均完成时间表示所有任务的完成时间的平均值;所述完成时间表示任务从提交至完成所需的时间;所述服务水平目标满足率表示所有任务中满足了服务水平目标的任务数量占比,任务能够在对应的期望最晚完成时间之前完成则表示,该任务满足所述服务水平目标。

在本实施例中,任务调度器的输入是当前的任务等待队列情况、任务等待队列中每个任务的特征信息以及当前集群的集群资源信息。任务调度器需要根据调度目标与输入的上述信息决定优先执行哪个任务(得到任务执行顺序),以及为该任务分配的可用本地内存大小、将该任务放置到哪个工作节点上执行。在本实施例中,任务调度器针对两种不同的调度目标分别设计了不同的调度规则(调度算法),调度目标分别为最小化所有任务的平均完成时间与最大化服务水平目标满足率。在实际运行时,平台可以自行设置需要使用的调度目标,从而可以适应不同需求。

在本实施例中,以最小化所有任务的平均完成时间为调度目标时,可以得到找到任务平均完成时间最小的调度方案,提高对任务的处理效率。具体的,平均完成时间表示所有任务的完成时间的平均值;完成时间表示任务从提交至完成所需的时间,该完成时间包括:等待时间与执行时间,等待时间表示用户提交该任务至该任务被分配到工作节点上开始执行的时间,执行时间表示该任务在工作节点上开始执行至执行结束得到执行结果的时间。等待时间的长短主要受其它任务执行时所消耗的资源量影响,其它任务使用的资源越多,本任务就会等待越久;执行时间主要受本任务执行时使用的本地内存比例(可用本地内存大小在该任务所使用的内存总量中的比例)影响,本地内存比例越低,任务的执行时间就越长。因此,当一个任务的可用本地内存大小越大,该任务的执行时间变短,占用的本地资源就有可能增加,从而导致其它任务的等待时间变长。当一个任务的可用本地内存大小越小,该任务的执行时间变长,它占用的本地资源就有可能减少,从而缩短其它任务的等待时间。

在一种可选的实施方式中,在以最小化所有任务的平均完成时间为所述调度目标的情况下,所述按照所述调度目标,确定各个任务的所述执行顺序以及各个任务的所述可用本地内存大小,包括:

步骤S201,根据所述任务等待队列,枚举所有任务组成的集合的子集。

步骤S202,对于每个所述子集,枚举所述子集中第一个执行的任务以及该任务使用的所述可用本地内存大小。

步骤S203,按照所述第一个执行的任务以及该任务使用的所述可用本地内存大小,计算每个所述子集的所述平均完成时间的最小值。

在一种可能的实施方式中,按照如下公式计算所述平均完成时间:

其中,L表示所述任务等待队列中的任务总数,

步骤S204,根据所述平均完成时间的最小值最小的子集所对应的所述第一个执行的任务以及该任务使用的所述可用本地内存大小,确定各个任务的所述执行顺序以及各个任务的所述可用本地内存大小。

在本实施例中,任务调度器使用动态规划算法以找到最小的平均完成时间,具体的,任务调度器将从小到大枚举所有任务组成的集合的子集,然后求出针对子集中所有任务,将它们全部执行完的最小平均完成时间。在计算一个任务子集所对应的最小平均完成时间时,调度器枚举这个集合中第一个执行的任务以及该任务的可用本地内存大小,从而将问题转化为求一个更小集合对应的最小平均完成时间。设任务等待队列中的任务数量为L,在经过2

按照上述方案,需要遍历所有子集才能实现最小化平均完成时间,然而,当任务等待队列中任务数量过多时,枚举所得到的子集数量较多,计算量较大。在一种可能的实施方式中,在以最小化所有任务的平均完成时间为所述调度目标的情况下,所述按照所述调度目标,确定各个任务的所述执行顺序以及各个任务的所述可用本地内存大小,包括:

步骤S301,从所述任务等待队列中确定,出现次数最大的k个候选任务,所述k为小于L的正整数,所述L为所述任务等待队列中的任务总数。

步骤S302,枚举所述k个候选任务组成的集合的子集。

步骤S303,对于每个所述子集,枚举所述子集中第一个执行的任务以及该任务使用的所述可用本地内存大小。

步骤S304,按照所述第一个执行的任务以及该任务使用的所述可用本地内存大小,计算每个所述子集的所述平均完成时间的最小值。进一步的,可以按照上述步骤S203所使用的公式计算每个任务的可用本地内存大小。

步骤S305,根据所述平均完成时间的最小值最小的子集所对应的所述第一个执行的任务以及该任务使用的所述可用本地内存大小,确定各个任务的所述执行顺序以及各个任务的所述可用本地内存大小。

由于在实际应用过程中,任务等待队列中往往存在一些占主导地位的任务,这些任务的执行次数远高于其它任务。所以,本实施例中将出现次数最大的k个候选任务确定为占据主导地位的任务,由于同一个任务在任务等待队列中的两次出现可以同时处理,因此只需处理这些候选任务的执行,就可以完成对等待队列中绝大部分任务的处理。所以,本申请实施例经过2

在本实施例中,以最大化服务水平目标满足率为调度目标时,可以得到找到达到服务水平目标的任务数量最多的调度方案,提高对任务服务水平。具体的,服务水平目标满足率表示所有任务中满足了服务水平目标的任务数量占比,具体的,服务水平目标可以被视作一个任务的期望最晚完成时间,如果任务能够在对应的期望最晚完成时间之前完成则表示,该任务满足服务水平目标。

在一种可能的实施方式中,在以最大化服务水平目标满足率为所述调度目标的情况下,所述按照所述调度目标,确定各个任务的所述执行顺序以及各个任务的所述可用本地内存大小,包括:

步骤S401,将所述任务等待队列中的各个任务分为:紧急任务、优先任务和非优先任务。

在本实施例中,所述紧急任务表示,与所述期望最晚完成时间的距离在预设时间阈值之内的任务,代表即将超出最晚完成时间的任务。该预设时间阈值可以根据实际应用情况设置,在本实施例中不对其进行限制。

所述优先任务表示,与期望最晚完成时间的距离超出所述预设时间阈值,并且,利用最优本地内存配置执行则会在所述期望最晚完成时间之后完成的任务。优先任务表示的是,距离期望最晚完成时间仍有一段距离,但是如要使任务选择使用资源最少的本地内存配置(即最优本地内存配置),那么该任务需要在最晚完成时间之后才能完成。所述最优本地内存配置表示任务使用的本地内存与执行时间的乘积的最小值。在任务的执行时间内,分配给该任务本地内存将一直被占有,因此可将任务使用的本地内存与执行时间的乘积作为任务使用的本地资源大小。由于使用的本地内存越多,执行时间越少,本地内存越少,执行时间越长,根据该任务的特征信息(可用本地内存大小与执行时间的函数),确定出两者的乘积的最小值,作为最优本地内存配置,确定该任务的可用本地内存大小。

所述非优先任务表示,所述期望最晚完成时间的距离超出所述预设时间阈值,并且,利用所述最优本地内存配置执行则不会在所述期望最晚完成时间之后完成的任务。非优先任务是指,任务距离期望最晚完成时间仍有一段距离,并且,假如要使任务选择使用资源最少的本地内存配置(最优本地内存配置),该任务仍然可以在期望最晚完成时间之前完成。

步骤S402,对于所述紧急任务,按照距离所述期望最晚完成时间的距离从近到远的顺序,确定所述紧急任务的执行顺序,为每个所述紧急任务分配第一可用本地内存大小;所述第一可用本地内存大小表示该任务运行时的峰值内存大小。在本实施例中,对于同属于紧急任务的不同任务,任务调度器将优先执行距离期望最晚完成时间最近的任务,并且尽可能为其分配历史运行记录中的峰值内存相等的本地内存,以保证只利用本地内存执行该紧急任务,尽可能地提高紧急任务的处理效率。

步骤S403,对于所述优先任务,按照执行所需资源从小到大的顺序,确定所述优先任务的执行顺序,为每个所述优先任务分配第二可用本地内存大小;所述第二可用本地内存大小表示占用的本地资源最少的内存大小。在本实施例中,对于同属于优先任务的不同任务,任务调度器将优先执行任务占用的资源最小的优先任务,例如所使用的计算资源和内存资源最小的优先任务。并为每个优先任务分配使其占用的本地资源最少的本地内存大小,即最优本地内存配置(任务使用的本地内存与执行时间的乘积的最小值)。

步骤S404,对于所述非优先任务,按照执行所需资源从小到大的顺序,确定所述非优先任务的执行顺序,为每个所述非优先任务分配所述第二可用本地内存大小。在本实施例中,对于同属于非优先任务的不同任务,任务调度器将优先执行任务占用的资源最小的非优先任务。并为每个非优先任务分配使其占用的本地资源最少的本地内存大小。

步骤S405,按照所述紧急任务先于所述优先任务,所述优先任务先于所述非优先任务的顺序,确定各个任务的所述执行顺序。

根据上述步骤S401-S405所述策略,任务调度器最终决定不同任务的执行顺序以及每个任务的可用本地内存大小,以最大化满足服务水平目标的任务数量。

在确定每个任务的执行顺序以及每个任务的可用本地内存大小之后,还需要为每个任务分配执行该任务的工作节点。在一种可能的实施方式中,所述本地资源信息至少包括:本地内存资源信息和计算资源信息,所述为各个任务分配工作节点,包括:

从所述多个工作节点中,选择剩余本地内存资源与剩余本地计算资源比例最接近本任务所需内存资源与所需计算资源比例的工作节点,作为执行本任务的工作节点。

在本实施例中,在为每个任务选择执行的工作节点时,任务调度器主要根据本地资源信息(本地内存资源信息和计算资源信息),即根据每个工作节点的内存资源信息确定该工作节点的剩余本地内存资源大小,根据工作节点的计算资源信息确定该工作节点的剩余本地计算资源大小,从而确定两者的比例:剩余本地内存资源/剩余本地计算资源。然后,从多个工作节点中选择比例与该任务的所需内存资源与所需计算资源比例最为接近的工作节点,作为执行该任务的工作节点,以最大化资源的利用率。示例性的,对于任务A,所需内存资源为5个单位,所需计算资源为2个单位,所以任务A对应的所需内存资源与所需计算资源比例为2.5。对于多个工作节点(工作节点1、工作节点2和工作节点3),根据本地资源信息,计算剩余本地内存资源与剩余本地计算资源比例,得到工作节点1的比例为2.1,工作节点2的比例为2.3,工作节点3的比例为2.5,从而选择工作节点3作为任务A的执行节点。

步骤S103,所述工作节点执行被分配的任务,在该任务使用的内存超过对应的所述可用本地内存大小的情况下,访问所述远端内存池以执行任务;所述远端内存池为用于提供内存资源的机器集群。

在本实施例中,远端内存池是一个用于提供内存资源的机器集群,此集群中的机器可以使用计算速度较慢的处理器,因为处理器只会在与工作节点建立网络连接时用到。在任务调度器确定执行顺序,输出下一个需要执行的任务后,将该任务放置到工作节点上执行,在该任务使用的内存超过对应的可用本地内存大小的情况下(例如,为该任务A分配了5个单位的内存资源,而该任务A实际需要的内存总量为10个单位的内存资源,超出了可用本地内存大小),触发分离式内存的使用,对远端内存池进行访问,以使用指定的远端内存池的内存资源,实现了面向服务器无感知计算的分离式内存管理方法,无需用户针对远端内存对代码进行任何修改。

在一种可能的实施方式中,所述系统还包括分离式内存子系统,所述分离式内存子系统由远程直接内存访问网络构建得到;所述在该任务使用的内存超过对应的所述可用本地内存大小的情况下,访问所述远端内存池以执行任务,包括:

在任务使用的内存超过对应的所述可用本地内存大小的情况下,所述分离式内存子系统替换操作系统中的换页处理模块,在执行该任务的工作节点与指定的所述远端内存池之间建立网络连接,访问所述远端内存池以执行任务。

具体的,本实施例采用分离式内存管理方法,使用基于换页机制实现的分离式内存技术,在每个任务开始执行之前,任务调度器为每个任务分配给定的本地内存上限(可用本地内存大小),当任务申请的内存超过给定上限时,通过分离式内存子系统触发操作系统的换页机制,访问分离式内存子系统指定的远端内存池,以此实现远端内存访问。在平台启动时,首先启动分离式内存子系统,该分离式内存子系统将替换操作系统中有关换页处理的模块,并且在工作节点与远端内存池之间建立网络连接、实现内存映射。在本实施例中,使用基于远程直接内存访问(Remote Direct Memory Access,RDMA)的网络来构建分离式内存子系统,利用高速的网络来保证任务性能不受较大影响,实现低延迟地在任务使用内存变化时动态分配与释放远端内存,改善平台对远端内存资源的利用率。

步骤S104,所述工作节点监视器监控各个工作节点的任务执行情况。

在本实施例中,工作节点监视器通过远程服务调用(Remote Procedure CallProtocol,RPC)的方式与多个工作节点进行通信。当需要执行某个任务时,工作节点监视器使用RPC来将任务信息传递给指定的工作节点,该工作节点随机开始执行任务。当一个任务执行完毕的时候,工作节点同样使用RPC来通知工作节点监视器,传递的任务执行情况至少包括该任务的编号、执行所用时间等。

参照图2,图2示出了一种服务器无感知计算平台的任务执行流程示意图,如图2所示,平台接收用户请求,将请求放置在任务等待队列中;然后由任务调度器根据集群资源信息和各个任务的特征信息,生成调度策略(确定各个任务的执行顺序以及各个任务的可用本地内存大小),为各个额任务分配工作节点;由工作节点执行对应的任务,在任务使用的内存超过分配的可用本地内存大小的情况下,访问远端内存池以执行任务,将得到的执行结果返回给用户。工作节点监视器监控各个工作节点的任务执行情况,在每个任务执行完成时,更新集群资源信息和任务的特征信息,并提供给任务调度器。本申请所提出的方法根据目前的集群资源信息与各个任务的特征信息,为任务等待队列中的各个任务确定执行顺序并分配工作节点,还确定了每个任务在工作节点上执行时可使用的可用本地内存大小。一方面,实现了分离式内存管理,解决了单个任务使用的内存不能超过单机内存(工作节点的本地内存)的上限的问题。在任务使用的内存超出可用本地内存大小的情况下,访问远端内存池以执行任务,实现对单机内存的扩展,计算资源与内存资源的解耦,避免出现因本地内存不足无法执行任务的情况。另一方面,提高了平台资源利用率。本申请实施例根据集群资源信息和各个任务的特征信息(任务的执行时间随本地内存变化的函数),为每个任务分配最佳工作节点,通过计算资源与内存资源解耦,解决了资源浪费问题,在保证了任务的执行时间的前提下,提高了对工作节点的内存资源和计算资源的利用率。

在一种可能的实施方式中,所述任务执行情况至少包括:本次执行完成该任务的执行时间和使用的本地内存大小,所述方法还包括:

所述工作节点监视器根据所述任务执行情况,在每个任务执行完成时,更新所述集群资源信息和任务的所述特征信息。

在本实施例中,在每个任务执行结束后,工作节点监视器会及时获取任务执行情况(该任务使用的本地内存大小和执行时间),并依此对该任务的特征信息进行更新。同时,在任务执行完毕后释放对应工作节点的计算资源和内存资源,更新当前的集群资源信息(对应工作节点的计算资源信息和本地内存资源信息)。

本申请实施例第二方面还提供了一种服务器无感知计算平台,如图2所示,所述服务器无感知计算平台包括:任务调度器、工作节点监视器、远端内存池以及多个工作节点;

所述平台用于接收用户发送的请求,将所述请求放置在任务等待队列中等待调度;

所述任务调度器,用于在所述任务等待队列非空时,根据目前的集群资源信息与所述任务等待队列中的各个任务的特征信息,确定各个任务的执行顺序以及各个任务的可用本地内存大小,并为各个任务分配工作节点,所述任务等待队列用于存放等待调度的任务,所述集群资源信息为所述多个工作节点的本地资源信息;所述特征信息表示任务的执行时间随本地内存变化的函数;

所述工作节点,用于执行被分配的任务,在该任务使用的内存超过对应的所述可用本地内存大小的情况下,访问所述远端内存池以执行任务;所述远端内存池为用于提供内存资源的机器集群;

所述工作节点监视器,用于监控各个工作节点的任务执行情况。

在一种可能的实施方式中,所述平台还包括特征信息生成模块,所述特征信息生成模块,用于在不同的所述可用本地内存大小下,离线执行每个任务;记录每个任务在不同的所述可用本地内存大小下的执行时间;根据所述执行时间,确定每个任务的所述特征信息。

在一种可能的实施方式中,所述任务执行情况至少包括:本次执行完成该任务的执行时间和使用的本地内存大小;

所述工作节点监视器用于根据所述任务执行情况,在每个任务执行完成时,更新所述集群资源信息和任务的所述特征信息。

在一种可能的实施方式中,所述本地资源信息至少包括:本地内存资源信息和计算资源信息,所述任务调度器包括工作节点确定模块,所述工作节点确定模块,用于从所述多个工作节点中,选择剩余本地内存资源与剩余本地计算资源比例最接近本任务所需内存资源与所需计算资源比例的工作节点,作为执行本任务的工作节点。

在一种可能的实施方式中,所述任务调度器包括:

调度目标选择模块,用于选择使用的调度目标,以最小化所有任务的平均完成时间为所述调度目标,或,以最大化服务水平目标满足率为所述调度目标;

本地内存确定模块,用于按照所述调度目标,确定各个任务的所述执行顺序以及各个任务的所述可用本地内存大小;

其中,所述平均完成时间表示所有任务的完成时间的平均值;所述完成时间表示任务从提交至完成所需的时间;所述服务水平目标满足率表示所有任务中满足了服务水平目标的任务数量占比,任务能够在对应的期望最晚完成时间之前完成则表示,该任务满足所述服务水平目标;

在一种可能的实施方式中,所述本地内存确定模块包括:第一本地内存确定子模块,所述第一本地内存确定子模块,用于在以最小化所有任务的平均完成时间为所述调度目标的情况下,按照所述调度目标,确定各个任务的所述执行顺序以及各个任务的所述可用本地内存大小;包括:

根据所述任务等待队列,枚举所有任务组成的集合的子集;

对于每个所述子集,枚举所述子集中第一个执行的任务以及该任务使用的所述可用本地内存大小;

按照所述第一个执行的任务以及该任务使用的所述可用本地内存大小,计算每个所述子集的所述平均完成时间的最小值;

根据所述平均完成时间的最小值最小的子集所对应的所述第一个执行的任务以及该任务使用的所述可用本地内存大小,确定各个任务的所述执行顺序以及各个任务的所述可用本地内存大小。

在一种可能的实施方式中,所述本地内存确定模块包括:第二本地内存确定子模块,所述第二本地内存确定子模块,用于在以最小化所有任务的平均完成时间为所述调度目标的情况下,按照所述调度目标,确定各个任务的所述执行顺序以及各个任务的所述可用本地内存大小,包括:

从所述任务等待队列中确定,出现次数最大的k个候选任务,所述k为小于L的正整数,所述L为所述任务等待队列中的任务总数;

枚举所述k个候选任务组成的集合的子集;

对于每个所述子集,枚举所述子集中第一个执行的任务以及该任务使用的所述可用本地内存大小;

按照所述第一个执行的任务以及该任务使用的所述可用本地内存大小,计算每个所述子集的所述平均完成时间的最小值;

根据所述平均完成时间的最小值最小的子集所对应的所述第一个执行的任务以及该任务使用的所述可用本地内存大小,确定各个任务的所述执行顺序以及各个任务的所述可用本地内存大小。

在一种可能的实施方式中,按照如下公式计算所述平均完成时间:

其中,L表示所述任务等待队列中的任务总数,

在一种可能的实施方式中,所述本地内存确定模块包括:第三本地内存确定子模块,所述第三本地内存确定子模块,用于在以最大化服务水平目标满足率为所述调度目标的情况下,所述按照所述调度目标,确定各个任务的所述执行顺序以及各个任务的所述可用本地内存大小,包括:

将所述任务等待队列中的各个任务分为:紧急任务、优先任务和非优先任务;

对于所述紧急任务,按照距离所述期望最晚完成时间的距离从近到远的顺序,确定所述紧急任务的执行顺序,为每个所述紧急任务分配第一可用本地内存大小;所述第一可用本地内存大小表示该任务运行时的峰值内存大小;

对于所述优先任务,按照执行所需资源从小到大的顺序,确定所述优先任务的执行顺序,为每个所述优先任务分配第二可用本地内存大小;所述第二可用本地内存大小表示占用的本地资源最少的内存大小;

对于所述非优先任务,按照执行所需资源从小到大的顺序,确定所述非优先任务的执行顺序,为每个所述非优先任务分配所述第二可用本地内存大小;

按照所述紧急任务先于所述优先任务,所述优先任务先于所述非优先任务的顺序,确定各个任务的所述执行顺序。

在一种可能的实施方式中,所述服务器无感知计算平台还包括分离式内存子系统,所述分离式内存子系统由远程直接内存访问网络构建得到;

在任务使用的内存超过对应的所述可用本地内存大小的情况下,所述分离式内存子系统替换操作系统中的换页处理模块,在执行该任务的工作节点与指定的所述远端内存池之间建立网络连接,访问所述远端内存池以执行任务。

本申请实施例还提供了一种电子设备,参照图3,图3是本申请实施例提出的电子设备的示意图。如图3所示,电子设备100包括:存储器110和处理器120,存储器110与处理器120之间通过总线通信连接,存储器110中存储有计算机程序,该计算机程序可在处理器120上运行,进而实现本申请实施例公开的面向服务器无感知计算的分离式内存管理方法中的步骤。

本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序/指令,该计算机程序/指令被处理器执行时实现如本申请实施例公开的面向服务器无感知计算的分离式内存管理方法中的步骤。

本申请实施例还提供了一种计算机程序产品,所述计算机程序产品在电子设备上运行时,使处理器执行时实现如本申请实施例所公开的面向服务器无感知计算的分离式内存管理方法的步骤。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

本申请实施例是参照根据本申请实施例的方法、装置、电子设备和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。

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

以上对本申请所提供的一种面向服务器无感知计算的分离式内存管理方法,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

相关技术
  • 一种用于IGBT模块的非浸入式超声扫描工装
  • 一种用于IGBT模块的非浸入式超声扫描工装
技术分类

06120116552475