CN113051066B - 内存管理方法、装置、设备及存储介质 - Google Patents

内存管理方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN113051066B
CN113051066B CN201911378491.2A CN201911378491A CN113051066B CN 113051066 B CN113051066 B CN 113051066B CN 201911378491 A CN201911378491 A CN 201911378491A CN 113051066 B CN113051066 B CN 113051066B
Authority
CN
China
Prior art keywords
memory space
memory
operator
operators
target
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
Application number
CN201911378491.2A
Other languages
English (en)
Other versions
CN113051066A (zh
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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201911378491.2A priority Critical patent/CN113051066B/zh
Publication of CN113051066A publication Critical patent/CN113051066A/zh
Application granted granted Critical
Publication of CN113051066B publication Critical patent/CN113051066B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)

Abstract

本申请实施例提供一种内存管理方法、装置、设备及存储介质。在内存管理方法中,进程中的第一算子申请内存空间时,若内存池中剩余的可用内存空间小于第一算子申请的内存空间,那么可从该进程中找出占用的内存空间大于其运行依赖的内存空间的目标算子。目标算子可释放其占用的内存空间中大于其运行依赖的内存空间的部分,也就是目标算子释放其多占的内存空间,直至内存池中剩余的可用内存空间满足第一算子的申请需求。基于这种实施方式,可有效地提升内存空间的利用率,有利于提升算子执行的任务的处理效率。

Description

内存管理方法、装置、设备及存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种内存管理方法、装置、设备及存储介质。
背景技术
通常,数据库接收到查询任务时,会生成查询任务对应的执行计划。执行计划包括多个算子,每个算子可向数据库申请一定的内存,以执行对应的查询任务。
现有技术提供的为算子分配内存的方法,对内存的利用率较低,不利于提升查询效率。因此,一种解决方案亟待提出。
发明内容
本申请的多个方面提供一种内存管理方法、装置、设备及存储介质,用以有效地提升内存的利用率。
本申请实施例还提供一种内存管理方法,包括:接收进程中的第一算子申请第一内存空间的请求消息;若内存池中剩余可用的内存空间小于所述第一内存空间,则从所述进程中筛选出目标算子,所述目标算子占用的内存空间大于其运行依赖的内存空间;将所述目标算子占用的内存空间中大于其运行依赖的内存空间的部分进行释放,直至所述内存池中剩余的可用内存空间大于或者等于所述第一内存空间;从所述内存池中为所述第一算子分配所述第一内存空间。
本申请实施例还提供一种内存管理装置,包括:消息接收模块,用于接收进程中的第一算子申请第一内存空间的请求消息;算子筛选模块,用于若内存池中剩余可用的内存空间小于所述第一内存空间,则从所述进程中筛选出目标算子,所述目标算子占用的内存空间大于其运行依赖的内存空间;内存释放模块,用于将所述目标算子占用的内存空间中大于其运行依赖的内存空间的部分进行释放,直至所述内存池中剩余的可用内存空间大于或者等于所述第一内存空间;内存分配模块,用于从所述内存池中为所述第一算子分配所述第一内存空间。
本申请实施例还提供一种内存管理设备,包括:存储器和处理器;所述存储器用于存储一条或多条计算机指令;所述处理器用于执行所述一条或多条计算机指令以用于执行本申请实施例提供的内存管理方法中的步骤。
本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被执行时能够实现本申请实施例提供的内存管理方法。
本申请实施例中,向目标算子索取内存空间时,保留了目标算子运行依赖的内存空间,不影响目标算子的处理效率,同时,内存池中增加的可用内存空间可供申请内存空间的其他算子使用,进而有效地提升了内存空间的利用率,有利于提升算子执行的任务的处理效率。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请一示例性实施例提供的内存管理方法的流程示意图;
图2a是本申请一示例性实施例提供的内存空间划分的示意图;
图2b为本申请另一示例性实施例提供的内存管理方法的流程示意图;
图3为本申请一示例性实施例提供的内存管理装置的结构示意图;
图4为本申请一示例性实施例提供的内存管理设备的流程示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种,但是不排除包含至少一种的情况。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。
针对现有技术中,为算子分配内存时,无法合理利用内存空间,进而不利于提升查询效率的技术问题,在本申请一些实施例中,提供了一种解决方案,以下结合附图,详细说明本申请各实施例提供的技术方案。
图1为本申请一示例性实施例提供的内存管理方法的流程示意图,如图1所示,该方法包括:
步骤101、接收进程中的第一算子申请第一内存空间的请求消息。
步骤102、若内存池中剩余可用的内存空间小于该第一内存空间,则从该进程中筛选出目标算子,该目标算子占用的内存空间大于其运行依赖的内存空间。
步骤103、将该目标算子占用的内存空间中大于其运行依赖的内存空间的部分进行释放,直至该内存池中剩余的可用内存空间大于或者等于该第一内存空间。
步骤104、从该内存池中为该第一算子分配该第一内存空间。
在本实施例中,第一算子,指的是进程中任意一个申请内存空间的算子,本实施例为描述方便,采用“第一”对其进行限定,但该“第一”仅用于将申请内存空间的算子和其他算子进行区分,并不用于限制该算子的排列顺序或者内存申请顺序。第一算子可以在已经分配到一定的内存空间但是当前仍需要申请更多内存空间的情况下申请第一内存空间,也可以在还未被分配到内存空间时申请第一内存空间,本实施例不做限制。
其中,算子(Operator)是一个处理单元,用于按照指定的数据处理逻辑进行数据处理,在数学上可以解释为将一个函数空间映射到另一个函数空间。算子有输入和输出,算子的输入通常是待处理的数据,算子的输出为处理完成的数据。
算子可应用在多种数据处理领域中,例如,在数据库查询领域中,多种不同的算子可构成查询语句对应的执行计划。执行计划被执行时,待查询的数据输入算子,算子做相应的数据处理后返回处理结果,根据算子返回的数据处理结果可得到查询语句的查询结果。
一些算子进行数据处理时,需要申请一定的内存空间以缓存数据。在本实施例中,为便于描述,采用第一内存空间来描述第一算子申请的内存空间的大小。不同类型的算子申请的内存空间的大小不同,本实施例不对该第一内存空间进行限制。
其中,内存池,是在真正使用内存之前预先为算子预备的一定数量的内存空间,进程中的算子申请使用内存时,可从该内存池中为算子分配内存空间。在该内存池中,算子可共享内存空间。内存池中剩余可用的内存空间,指的是内存池中,除已经分配给算子使用的内存空间之外可供分配给其他算子的内存空间。若内存池中剩余可用的内存空间不足以供第一算子使用,则可判断已分配出的内存空间是否被合理利用。
在本实施例中,为判断已分配出的内存空间是否被合理利用,可识别已分配内存空间的算子实际占用的内存空间和其运行依赖的内存空间的大小。其中,算子运行依赖的内存空间,指的是算子运行时必需的内存空间。针对某一算子而言,若该算子实际占用的内存空间大于其运行依赖的内存空间,则可认为该算子的内存分配不合理,降低了内存空间的利用率。
在本实施例中,为便于描述,将进程中占用的内存空间大于其运行依赖的内存空间的的算子描述为目标算子。在筛选出目标算子后,可释放目标算子占用的多余的内存空间供其他算子使用。随着目标算子释放一部分多余的内存空间,内存池中剩余可用的内存空间逐渐增多。当剩余可用的内存空间等于或者大于第一算子申请的内存空间后,可从内存池中为第一算子分配内存空间。
在本实施例中,从目标算子上索取内存空间时,保留了目标算子运行依赖的内存空间,不影响目标算子的处理效率,同时,内存池中增加的可用内存空间可供第一算子使用,进而有效地提升了内存空间的利用率,有利于提升算子执行的任务的处理效率。
为便于内存管理,在一些可选的实施例中,可将存储器提供的内存空间划分为三个部分:第一内存池、第二内存池以及第三内存池如,图2a所示。
其中,第一内存池为系统内存池(System Memory Pool),主要用于分配任务初始化所需的内存。在HTAP(Hybrid Transaction and Analytical Process,混合事务和分析处理)计算引擎的应用场景中,第一内存池可由Java虚拟机(Java Virtual Machine,JVM)进行管理。
第二内存池,为静态管理的固定内存池(Fixed Memory Pool)。第二内存池中的内存被申请者申请之后,不允许被内存申请者主动释放。在内存申请者主动退出时,内存申请者可释放内存。
第三内存池,为动态管理的共享内存池(Shared Memory Pool)。在动态管理第三内存池的过程中,允许内存申请者相互抢占第三内存池中的内存资源,以满足内存申请者多样化的内存需求。在本申请的上述或者下述各实施例中,为算子分配内存空间的内存池,为上述动态管理的共享内存池,后续不再赘述。
图2b为本申请另一示例性实施例提供的内存管理方法的流程示意图,如图2b所示,该方法包括:
步骤201、接收进程中的第一算子申请第一内存空间的请求消息。
步骤202、判断内存池中剩余可用的内存空间是否小于该第一内存空间;若为是,则执行步骤203,若为否,则执行步骤208。
步骤203、根据该进程中的多个算子各自对内存空间的依赖特征以及内存池的总内存空间,计算该多个算子各自运行依赖的内存空间。
步骤204、判断该多个算子中,是否存在占用的内存空间大于运行依赖的内存空间的算子;若为是,则执行步骤205;若为否,则返回内存空间申请失败消息。
步骤205、从该多个算子中,筛选出占用的内存空间大于其运行依赖的内存空间的算子,作为目标算子。
步骤206、判断目标算子占用的内存空间中大于其运行依赖的内存空间的部分与内存池中剩余可用的内存空间的总量是否大于第一内存空间;若为是,则执行步骤207;若为否,则返回内存空间申请失败消息。
步骤207、将该目标算子占用的内存空间中大于其运行依赖的内存空间的部分进行释放,直至该内存池中剩余的可用内存空间大于或者等于该第一内存空间。
步骤208、从该内存池中为该第一算子分配该第一内存空间。
在步骤201和步骤202中,内存池是为预先为进程中的算子预备的内存空间,进程中的算子可共享内存池提供的内存空间。第一算子向申请内存时,若内存池中剩余可用的内存空间小于第一算子申请的内存空间,可从其他已分配内存空间的算子中索取部分多余的内存空间以分享给第一算子使用。
为避免对已分配内存的算子的运行过程造成影响,本实施例中,可在保证已分配内存空间的算子仍旧拥有其运行所需的内存空间的前提下,实现内存池中的内存空间可动态共享,以下将进行具体说明。
在步骤203中,可选地,进程中的多个算子,指的是进程中需要使用内存空间的所有算子,包括第一算子。多个算子中,部分算子已经被分配到一定的内存空间,部分算子位于进程中还未被分配到内存空间。可选地,内存池的总内存空间,指的是为算子申请的内存空间总量,即包括:内存池中剩余的可用空间以及已分配给其他算子的内存空间。
当进程中第一算子申请使用第一内存空间时,可根据第一算子的内存空间需求、每个算子对内存空间的依赖特征和内存空间总量,动态地调整算子间的内存空间分配情况。
其中,算子对内存空间的依赖特征,反映了算子运行时对内存空间的需求程度,不同算子对内存空间的需求程度不同。在新增第一算子对第一内存空间的需求时,可根据每个算子对内存空间的依赖特征和内存池的总内存空间,重新计算出每个算子运行依赖的内存空间,以合理分配有限的内存空间。该运行依赖的内存空间可确保算子处于正常工作状态。
可选地,算子的类型不同时,表征算子对内存空间的依赖特征的方式也不同。例如,在一些实施例中,若算子执行时需全量缓存输入的数据,例如sort算子和join算子,则可采用算子执行时输入数据的行数以及每行数据的数据量来表征算子对内存空间的依赖特征。
在另一些实施例中,若算子执行时无需全量缓存输入的数据,例如agg算子,则可采用算子执行时输入数据的行数、每行数据的数据量以及输入数据的聚合度来表征算子对内存空间的依赖特征。
可选地,基于每个算子对内存空间的依赖特征,可计算每个算子的内存代价。内存代价用于量化算子对内存空间的依赖特征,算子的内存代价越大,则该算子计算时希望获取更多的内存空间。
可选地,针对需全量缓存输入数据的算子,例如sort算子和join算子,则可根据该算子执行时输入数据的行数以及每行数据的数据量计算该算子的内存代价。例如,内存代价=输入数据的行数*每行数据的数据量。
可选地,针对无需全量缓存输入数据的算子,例如agg算子,则可根据该算子执行时输入数据的行数、每行数据的数据量以及输入数据的聚合度计算该算子的内存代价。例如,内存代价=输入数据的行数*每行数据的数据量*聚合度。
在得到每个算子的内存代价后,可根据每个算子的内存代价,计算该多个算子的总的内存代价。接着,基于每个算子的内存代价和总的内存代价,计算每个算子各自的内存权重。例如,以Ci表示第i个算子的内存代价,那么当进程中包含N个算子时,第j个算子的内存权重其中,i、j、N为正整数。
在获取到每个算子的内存权重后,可根据每个算子的内存权重和该内存池的总内存空间,计算每个算子运行依赖的内存空间。例如,第j个算子运行依赖的内存空间为其中,P为内存池总的内存空间。
在步骤204中,可获取进程中已分配内存空间的算子实际占用的内存空间,并将其实际占用的内存空间和其运行依赖的内存空间进行对比。若该多个算子中,存在一个或者多个算子,其实际占用的内存空间大于运行依赖的内存空间,那么可认为这部分算子可释放多余的内存空间供其他算子使用。若不存在这样的算子,那么可认为没有算子可释放多余的内存空间,此时可向第一算子返回内存空间申请失败消息。
在步骤205中,可根据每个算子实际占用的内存空间和运行依赖的内存空间,从该多个算子中筛选出目标算子,目标算子占用的内存空间大于其运行依赖的内存空间的算子。
在步骤206中,可选地,筛选出目标算子后,可进一步计算目标算子多余的内存空间和内存池中剩余可用的内存空间的总量是否满足第一内存空间的要求。基于这个步骤,可对目标算子释放多余内存空间后内存池剩余可用的内存空间的大小进行预判。若该总量大于或者等于第一内存空间,则可执行步骤207进行内存释放,若小于第一内存空间,则可认为即使目标算子即使释放多余内存空间也无法满足第一算子的需求,因此目标算子无需执行内存释放操作。
在步骤207中,若该目标算子包括多个算子,则可在释放内存前,分别根据该多个算子各自占用的内存空间和各自运行依赖的内存空间,计算该多个算子各自的内存空间余量。
在一些实施例中,可优先释放目标算子中占用较多的多余内存空间的算子。也就是说,可根据该多个算子各自的内存空间余量由大至小的排列顺序,依次释放该多个算子的内存空间余量。
例如,第一算子申请的内存空间的大小为M,目标算子A、B、C实际占用的内存空间均大于其运行依赖的内存空间。若目标算子A、B、C按照各自的内存空间余量的排列顺序为B、C、A,则可首先释放目标算子B的内存空间余量、接着释放目标算子C的内存空间余量、最后释放目标算子A的内存空间余量,直至内存池中剩余可用的内存空间满足第一算子的需求。
在另一些实施例中,若目标算子中,存在一算子的内存空间余量大于第一算子所需的内存空间,则可直接释放该该算子的内存空间余量。
在又一些实施例中,可按照设定比例,分别释放每个目标算子的一部分内存空间余量。例如,可按照多个目标算子之间的内存空间余量的比例,计算每个目标算子需要释放出的内存空间余量的多少,再根据计算得到的结果进行内存释放。
以下将结合实际的例子对上述记载的内存空间释放方式进行进一步示例性说明。
假设,进程中有算子A、B,根据算子A、B对内存空间依赖的特征和内存池的总内存空间计算得到算子A运行依赖的内存空间是100M,算子B运行依赖的内存空间是50M。在算子运行过程中,算子A的实际占用的内存空间是130M,算子B实际占用的内存空间是70M。基于上述可计算得到算子A的内存空间余量为30M,算子B的内存空间余量为20M,二者内存空间余量的比例为3:2。
若算子C发出了申请40M内存空间的请求,但是内存池中已经没有足够的内存空间时,可优先释放算子A多占用的30M内存空间;若算子A释放后仍不够,再释放算子B多占用的20M内存空间,以供算子C使用。
若算子D发出了申请20M内存空间的请求,但是内存池中已经没有可用内存时,可释放算子A或者算子B多占用的20M内存空间,以供算子C使用。
若算子E发出了申请5M内存空间的请求,但是内存池中已经没有足够的内存空间时,可从释放算子A多占用3M内存空间并释放算子B占用的2M内存空间,以供算子C使用。
在本实施例中,根据算子对内存空间的依赖特征计算每个算子的内存代价,再基于内存代价计算每个算子运行依赖的内存空间,基于此,可有效判断出分配给算子的内存空间是否合理,并且可在需要算子释放内存空间时,优先保证算子拥有其运行依赖的内存空间,以避免对算子的运行造成影响。进而,可在有效提升内存空间利用率的同时,保证了原有算子处理过程的正常进行。
需要说明的是,上述实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤201至步骤204的执行主体可以为设备A;又比如,步骤201和202的执行主体可以为设备A,步骤203的执行主体可以为设备B;等等。
另外,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如201、202等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
图3是本申请一示例性实施例提供的内存管理装置的结构示意图,如图3所示,该装置包括:
消息接收模块301,用于接收进程中的第一算子申请第一内存空间的请求消息;算子筛选模块302,用于若内存池中剩余可用的内存空间小于该第一内存空间,则从该进程中筛选出目标算子,该目标算子占用的内存空间大于其运行依赖的内存空间;内存释放模块303,用于将该目标算子占用的内存空间中大于其运行依赖的内存空间的部分进行释放,直至该内存池中剩余的可用内存空间大于或者等于该第一内存空间;内存分配模块304,用于从该内存池中为该第一算子分配该第一内存空间。
进一步可选地,算子筛选模块302在从该进程中筛选出目标算子时,具体用于:根据该进程中的多个算子各自对内存空间的依赖特征以及该内存池的总内存空间,计算该多个算子各自运行依赖的内存空间;从该多个算子中,筛选出占用的内存空间大于其运行依赖的内存空间的算子,作为该目标算子。
进一步可选地,算子筛选模块302在根据该进程中的多个算子各自对内存空间的依赖特征以及该内存池的总内存空间,计算该多个算子各自运行依赖的内存空间时,具体用于:根据该多个算子各自对内存空间的依赖特征,计算该多个算子各自的内存代价;根据该多个算子各自的内存代价以及该多个算子的总内存代价,计算该多个算子各自的内存权重;根据该多个算子各自的内存权重和该该内存池的总内存空间,计算该多个算子各自运行依赖的内存空间。
进一步可选地,算子筛选模块302在根据该多个算子各自对内存空间的依赖特征,计算该多个算子各自的内存代价时,具体用于:针对该多个算子中的任一算子,若该算子执行时需全量缓存输入数据,则根据该算子执行时输入数据的行数以及每行数据的数据量计算该算子的内存代价。
进一步可选地,算子筛选模块302在根据该多个算子各自对内存空间的依赖特征,计算该多个算子各自的内存代价时,具体用于:针对该多个算子中的任一算子,若该算子执行时无需全量缓存输入数据,则根据该算子执行时输入数据的行数、每行数据的数据量以及输入数据的聚合度(cardinality)计算该算子的内存代价。
进一步可选地,内存释放模块303在将该目标算子占用的内存空间中大于其运行依赖的内存空间的部分进行释放时,具体用于:计算该目标算子占用的内存空间中大于其运行依赖的内存空间的部分与该内存池剩余可用的内存空间的总量;若计算得到的该总量大于该第一内存空间,则将该目标算子占用的内存空间中大于其运行依赖的内存空间的部分进行释放。
进一步可选地,内存释放模块303在将该目标算子占用的内存空间中大于其运行依赖的内存空间的部分进行释放时,具体用于:若该目标算子包括多个算子,则分别根据该多个算子各自占用的内存空间和各自运行依赖的内存空间,计算该多个算子各自的内存空间余量;根据该多个算子各自的内存空间余量由大至小的排列顺序,依次释放该多个算子的内存空间余量。
在本实施例中,保留了目标算子运行依赖的内存空间,不影响目标算子的处理效率,同时,内存池中增加的可用内存空间可供第一算子使用,进而有效地提升了内存空间的利用率,有利于提升算子执行的任务的处理效率。
图4是本申请一示例性实施例提供的内存管理设备的结构示意图,如图4所示,该内存管理设备包括:存储器401、处理器402以及通信组件403。
存储器401,用于存储计算机程序,并可被配置为存储其它各种数据以支持在内存管理设备上的操作。这些数据的示例包括用于在内存管理设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。
存储器可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
处理器402,与存储器401耦合,用于执行存储器401中的计算机程序,以用于:接收进程中的第一算子申请第一内存空间的请求消息;若内存池中剩余可用的内存空间小于该第一内存空间,则从该进程中筛选出目标算子,该目标算子占用的内存空间大于其运行依赖的内存空间;将该目标算子占用的内存空间中大于其运行依赖的内存空间的部分进行释放,直至该内存池中剩余的可用内存空间大于或者等于该第一内存空间;从该内存池中为该第一算子分配该第一内存空间。
进一步可选地,处理402在从该进程中筛选出目标算子时,具体用于:根据该进程中的多个算子各自对内存空间的依赖特征以及该内存池的总内存空间,计算该多个算子各自运行依赖的内存空间;从该多个算子中,筛选出占用的内存空间大于其运行依赖的内存空间的算子,作为该目标算子。
进一步可选地,处理402在根据该进程中的多个算子各自对内存空间的依赖特征以及该内存池的总内存空间,计算该多个算子各自运行依赖的内存空间时,具体用于:根据该多个算子各自对内存空间的依赖特征,计算该多个算子各自的内存代价;根据该多个算子各自的内存代价以及该多个算子的总内存代价,计算该多个算子各自的内存权重;根据该多个算子各自的内存权重和该该内存池的总内存空间,计算该多个算子各自运行依赖的内存空间。
进一步可选地,处理402在根据该多个算子各自对内存空间的依赖特征,计算该多个算子各自的内存代价时,具体用于:针对该多个算子中的任一算子,若该算子执行时需全量缓存输入数据,则根据该算子执行时输入数据的行数以及每行数据的数据量计算该算子的内存代价。
进一步可选地,处理402在根据该多个算子各自对内存空间的依赖特征,计算该多个算子各自的内存代价时,具体用于:针对该多个算子中的任一算子,若该算子执行时无需全量缓存输入数据,则根据该算子执行时输入数据的行数、每行数据的数据量以及输入数据的聚合度计算该算子的内存代价。
进一步可选地,处理402在将该目标算子占用的内存空间中大于其运行依赖的内存空间的部分进行释放时,具体用于:计算该目标算子占用的内存空间中大于其运行依赖的内存空间的部分与该内存池剩余可用的内存空间的总量;若计算得到的该总量大于该第一内存空间,则将该目标算子占用的内存空间中大于其运行依赖的内存空间的部分进行释放。
进一步可选地,处理402在将该目标算子占用的内存空间中大于其运行依赖的内存空间的部分进行释放时,具体用于:若该目标算子包括多个算子,则分别根据该多个算子各自占用的内存空间和各自运行依赖的内存空间,计算该多个算子各自的内存空间余量;根据该多个算子各自的内存空间余量由大至小的排列顺序,依次释放该多个算子的内存空间余量。
进一步,如图4所示,该内存管理设备还包括:显示器404、电源组件405、音频组件406等其它组件。图4中仅示意性给出部分组件,并不意味着内存管理设备只包括图4所示组件。
通信组件被配置为便于通信组件所在设备和其他设备之间有线或无线方式的通信。通信组件所在设备可以接入基于通信标准的无线网络,如WiFi,2G、3G、4G或5G,或它们的组合。在一个示例性实施例中,通信组件经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件可基于近场通信(NFC)技术、射频识别(RFID)技术、红外数据协会(IrDA)技术、超宽带(UWB)技术、蓝牙(BT)技术和其他技术来实现。
显示器包括屏幕,其屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。该触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与该触摸或滑动操作相关的持续时间和压力。
电源组件,为电源组件所在设备的各种组件提供电力。电源组件可以包括电源管理系统,一个或多个电源,及其他与为电源组件所在设备生成、管理和分配电力相关联的组件。
在本实施例中,保留了目标算子运行依赖的内存空间,不影响目标算子的处理效率,同时,内存池中增加的可用内存空间可供第一算子使用,进而有效地提升了内存空间的利用率,有利于提升算子执行的任务的处理效率。
相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被执行时能够实现上述方法实施例中可由内存管理设备执行的各步骤。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (8)

1.一种内存管理方法,其特征在于,包括:
接收进程中的第一算子申请第一内存空间的请求消息;
若内存池中剩余可用的内存空间小于所述第一内存空间,则从所述进程中筛选出目标算子,所述目标算子占用的内存空间大于其运行依赖的内存空间;
将所述目标算子占用的内存空间中大于其运行依赖的内存空间的部分进行释放,直至所述内存池中剩余的可用内存空间大于或者等于所述第一内存空间;
从所述内存池中为所述第一算子分配所述第一内存空间;
从所述进程中筛选出目标算子,包括:根据所述进程中的多个算子各自对内存空间的依赖特征,计算所述多个算子各自的内存代价;根据所述多个算子各自的内存代价以及所述多个算子的总内存代价,计算所述多个算子各自的内存权重;根据所述多个算子各自的内存权重和所述内存池的总内存空间,计算所述多个算子各自运行依赖的内存空间;从所述多个算子中,筛选出占用的内存空间大于其运行依赖的内存空间的算子,作为所述目标算子;
其中,算子是一个处理单元,用于按照指定的数据处理逻辑进行数据处理,具有输入和输出。
2.根据权利要求1所述的方法,其特征在于,根据所述多个算子各自对内存空间的依赖特征,计算所述多个算子各自的内存代价,包括:
针对所述多个算子中的任一算子,若所述算子执行时需全量缓存输入数据,则根据所述算子执行时输入数据的行数以及每行数据的数据量计算所述算子的内存代价。
3.根据权利要求1所述的方法,其特征在于,根据所述多个算子各自对内存空间的依赖特征,计算所述多个算子各自的内存代价,包括:
针对所述多个算子中的任一算子,若所述算子执行时无需全量缓存输入数据,则根据所述算子执行时输入数据的行数、每行数据的数据量以及输入数据的聚合度计算所述算子的内存代价。
4.根据权利要求1-3任一项所述的方法,其特征在于,将所述目标算子占用的内存空间中大于其运行依赖的内存空间的部分进行释放,包括:
计算所述目标算子占用的内存空间中大于其运行依赖的内存空间的部分与所述内存池剩余可用的内存空间的总量;
若计算得到的所述总量大于所述第一算子申请的所述第一内存空间,则将所述目标算子占用的内存空间中大于其运行依赖的内存空间的部分进行释放。
5.根据权利要求4所述的方法,其特征在于,将所述目标算子占用的内存空间中大于其运行依赖的内存空间的部分进行释放,包括:
若所述目标算子包括多个算子,则分别根据所述多个算子各自占用的内存空间和各自运行依赖的内存空间,计算所述多个算子各自的内存空间余量;
根据所述多个算子各自的内存空间余量由大至小的排列顺序,依次释放所述多个算子的内存空间余量。
6.一种内存管理装置,其特征在于,包括:
消息接收模块,用于接收进程中的第一算子申请第一内存空间的请求消息;
算子筛选模块,用于若内存池中剩余可用的内存空间小于所述第一内存空间,则从所述进程中筛选出目标算子,所述目标算子占用的内存空间大于其运行依赖的内存空间;
内存释放模块,用于将所述目标算子占用的内存空间中大于其运行依赖的内存空间的部分进行释放,直至所述内存池中剩余的可用内存空间大于或者等于所述第一内存空间;
内存分配模块,用于从所述内存池中为所述第一算子分配所述第一内存空间;
其中,所述算子筛选模块具体用于:从所述进程中筛选出目标算子,包括:根据所述进程中的多个算子各自对内存空间的依赖特征,计算所述多个算子各自的内存代价;根据所述多个算子各自的内存代价以及所述多个算子的总内存代价,计算所述多个算子各自的内存权重;根据所述多个算子各自的内存权重和所述内存池的总内存空间,计算所述多个算子各自运行依赖的内存空间;从所述多个算子中,筛选出占用的内存空间大于其运行依赖的内存空间的算子,作为所述目标算子;
其中,算子是一个处理单元,用于按照指定的数据处理逻辑进行数据处理,具有输入和输出。
7.一种内存管理设备,其特征在于,包括:
存储器,用于存储一条或多条计算机指令;
处理器,用于执行所述一条或多条计算机指令以执行权利要求1-5任一项所述的内存管理方法。
8.一种存储有计算机程序的计算机可读存储介质,其特征在于,计算机程序被执行时能够实现权利要求1-5任一项所述的内存管理方法。
CN201911378491.2A 2019-12-27 2019-12-27 内存管理方法、装置、设备及存储介质 Active CN113051066B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911378491.2A CN113051066B (zh) 2019-12-27 2019-12-27 内存管理方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911378491.2A CN113051066B (zh) 2019-12-27 2019-12-27 内存管理方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN113051066A CN113051066A (zh) 2021-06-29
CN113051066B true CN113051066B (zh) 2024-05-28

Family

ID=76506835

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911378491.2A Active CN113051066B (zh) 2019-12-27 2019-12-27 内存管理方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN113051066B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107153618A (zh) * 2016-03-02 2017-09-12 阿里巴巴集团控股有限公司 一种内存分配的处理方法及装置
WO2017181853A1 (zh) * 2016-04-20 2017-10-26 阿里巴巴集团控股有限公司 动态分配内存的方法、装置及系统
CN110162396A (zh) * 2018-02-14 2019-08-23 阿里巴巴集团控股有限公司 内存回收方法、装置、系统和存储介质
CN110209548A (zh) * 2018-04-19 2019-09-06 深圳市腾讯计算机系统有限公司 服务控制方法、系统、电子设备及计算机可读存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107153618A (zh) * 2016-03-02 2017-09-12 阿里巴巴集团控股有限公司 一种内存分配的处理方法及装置
WO2017181853A1 (zh) * 2016-04-20 2017-10-26 阿里巴巴集团控股有限公司 动态分配内存的方法、装置及系统
CN110162396A (zh) * 2018-02-14 2019-08-23 阿里巴巴集团控股有限公司 内存回收方法、装置、系统和存储介质
CN110209548A (zh) * 2018-04-19 2019-09-06 深圳市腾讯计算机系统有限公司 服务控制方法、系统、电子设备及计算机可读存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于TLSF算法改进的动态内存管理算法研究;陈君;樊皓;吴京洪;;网络新媒体技术;20160515(03);全文 *

Also Published As

Publication number Publication date
CN113051066A (zh) 2021-06-29

Similar Documents

Publication Publication Date Title
US11146502B2 (en) Method and apparatus for allocating resource
EP3483730B1 (en) Resource allocation method and resource manager
KR101994021B1 (ko) 파일 조작 방법 및 장치
CA2918091C (en) System and method for memory channel interleaving with selective power or performance optimization
CN108052615B (zh) 访问请求的处理方法、装置、介质及电子设备
US8443373B2 (en) Efficient utilization of idle resources in a resource manager
US9639459B2 (en) I/O latency and IOPs performance in thin provisioned volumes
KR20130055515A (ko) 데이터 프로세싱 시스템의 메모리 사용을 추적하는 방법
CN112463375A (zh) 一种数据处理的方法和装置
CN112565317B (zh) 混合云系统及其数据处理方法、设备及存储介质
GB2584980A (en) Workload management with data access awareness in a computing cluster
US8458719B2 (en) Storage management in a data processing system
CN113300982B (zh) 资源分配方法、设备、系统及存储介质
CN113419846A (zh) 资源配置方法和装置、电子设备及计算机可读存储介质
CN109582649A (zh) 一种元数据存储方法、装置、设备及可读存储介质
CN104518897A (zh) 虚拟防火墙的资源管理优化处理方法和装置
CN113051066B (zh) 内存管理方法、装置、设备及存储介质
CN105677481A (zh) 一种数据处理方法、系统及电子设备
US20150220442A1 (en) Prioritizing shared memory based on quality of service
CN115934002B (zh) 固态硬盘的访问方法、固态硬盘、存储系统及云服务器
CN112114959B (zh) 资源调度方法、分布式系统、计算机设备和存储介质
CN115878309A (zh) 资源分配方法、装置、处理核、设备和计算机可读介质
CN106844036A (zh) 物理设备的访问方法及装置
CN109753340B (zh) 虚拟机快照处理方法、装置及系统
CN112149964A (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