CN107515785A - 一种内存管理方法及装置 - Google Patents
一种内存管理方法及装置 Download PDFInfo
- Publication number
- CN107515785A CN107515785A CN201610430335.6A CN201610430335A CN107515785A CN 107515785 A CN107515785 A CN 107515785A CN 201610430335 A CN201610430335 A CN 201610430335A CN 107515785 A CN107515785 A CN 107515785A
- Authority
- CN
- China
- Prior art keywords
- task
- memory source
- resource
- memory
- pond
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5016—Allocation 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5022—Mechanisms to release resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
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
技术领域
本发明涉及通信技术领域,尤其涉及一种内存管理方法及装置。
背景技术
随着多核处理器的快速发展,基于对称多处理(Symmetric Multi-Processing,SMP)的软件并行处理架构已经逐步推广应用。在SMP系统中,并发执行性能直接影响系统整体性能,而频繁的内存申请和释放以及基于内存的消息通信是大型软件中影响性能的关键因素,因此,如何有效提升SMP系统下的内存管理效率成为重要问题。
已有的内存资源管理方案中,内存块是以链表方式管理的,如果多个任务同时操作一个链表,则需要进行互斥操作,以避免资源冲突。其中,一个任务可视为一个进程或线程。
对于单CPU,其内存资源需要在该CPU上运行的多任务之间互斥;对于SMP系统,其多CPU之间的共享内存池需要在多CPU上的任务之间互斥。但是,互斥操作会导致得不到内存互斥锁的任务进入阻塞状态,因而会影响系统的并发处理效率。
发明内容
本发明实施例提供一种内存管理方法及装置,用以在内存资源管理时减少内存互斥锁的使用。
本发明实施例提供的内存管理方法,包括:
接收第一任务发送的内存资源分配请求;
判断所述第一任务的私有内存资源池中的空闲内存资源容量是否大于或等于所述内存资源分配请求所请求分配的内存资源大小;
若是,则从所述第一任务的私有内存资源池中获取内存资源进行分配;否则,从共享内存资源池中获取内存资源进行分配。
本发明实施例提供的内存管理装置,包括:
接收单元,用于接收第一任务发送的内存资源分配请求;
判断单元,用于判断所述第一任务的私有内存资源池中的空闲内存资源容量是否大于或等于所述内存资源分配请求所请求分配的内存资源大小;
分配单元,用于在所述判断单元判定为是时,从所述第一任务的私有内存资源池中获取内存资源进行分配;在所述判断单元判定为否时,从共享内存资源池中获取内存资源进行分配。
本发明的上述实施例中,接收第一任务发送的内存资源分配请求后,判断所述第一任务的私有内存资源池中的空闲内存资源容量是否大于或等于所述内存资源分配请求所请求分配的内存资源大小,若是,则从所述第一任务的私有内存资源池中获取内存资源进行分配;否则,从共享内存资源池中获取内存资源进行分配。可以看出,由于针对一个任务创建了该任务的私有内存资源池,在内存资源分配时,优先从私有内存资源池中获取内存资源进行分配,在私有内存资源池中的内存资源容量不能满足内置资源分配请求的情况下,才从共享内存资源池中获取内存资源进行分配。由于不同的任务的私有内存资源池之间以及与共享内存资源池之间不会存在资源冲突,所以在分配的资源来自于私有内存资源池的情况下无需使用内存互斥锁也能避免资源冲突,因此与现有技术相比,减少了内存互斥锁的使用。
附图说明
图1为本发明实施例的内存资源管理的整体方案流程示意图之一
图2为本发明实施例中的空闲资源池示意图;
图3为本发明实施例提供的回收资源池的创建流程示意图;
图4为本发明实施例的内存资源管理的整体方案流程示意图之二;
图5为本发明实施例提供的内存资源释放流程示意图;
图6为本发明实施例提供的内存资源回收整理的流程示意图;
图7为本发明实施例提供的内存资源管理装置的结构示意图。
具体实施方式
本发明实施例可适用于单CPU系统,也可适用于多CPU系统。使用本发明实施例,可以减少内存互斥锁的使用,进而提高SMP系统的并发处理效率。
下面结合附图对本发明实施例进行详细描述。
参见图1,为本发明实施例的内存资源管理的整体方案流程示意图,该流程可由用于实现内存资源管理的装置(以下称为内存资源管理装置)来实现。如图所示,该路程可包括如下步骤:
步骤101:接收第一任务发送的内存资源分配请求。
该内存资源分配请求可用于请求分配第一任务使用的内存资源,比如,该内存资源可以是用于缓存第一任务运行过程中的中间数据的内存块;也可用于请求分配第一任务与第二任务交互时所需的内存资源,比如,该内存资源可以是用于缓存第一任务和第二任务之间交互的控制信息和/或数的内存块。
其中,一个任务可以对应于一个应用程序,更具体地,一个任务可以是一个进程,也可以是一个线程。其中,进程或线程是指运行态的应用程序或应用组件。
这里的“第一任务”和“第二任务”是指不同的任务,此处的第一和第二仅用于对任务进行区分,没有其他限定作用。
步骤102:判断第一任务的私有内存资源池中的空闲内存资源容量是否大于或等于该内存资源分配请求所请求分配的内存资源大小,若是,则执行步骤103,否则执行步骤104。
步骤103:从第一任务的私有内存资源池中获取内存资源进行分配。由于所分配的内存资源来源于第一任务的私有内存资源池,因此不会与其他任务的私有内存资源池以及系统的共享内存资源池发生资源冲突,因此无需使用内存互斥锁。
步骤104:从共享内存资源池中获取内存资源进行分配。由于所分配的内存资源来源于系统的共享内存资源池,因此有可能与使用该共享内存资源池的其他任务的内存资源发生资源冲突,因此需要使用内存互斥锁。
上述流程中,由于针对一个任务创建了该任务的私有内存资源池,在内存资源分配时,优先从私有内存资源池中获取内存资源进行分配,在私有内存资源池中的内存资源容量不能满足内置资源分配请求的情况下,才从共享内存资源池中获取内存资源进行分配。由于不同的任务的私有内存资源池之间以及与系统共享内存资源池之间不会存在资源冲突,所以在分配的资源来自于私有内存资源池的情况下无需使用内存互斥锁也能避免资源冲突,因此与现有技术相比,减少了内存互斥锁的使用,进而与现有技术相比可以降低任务被阻塞的概率,进而提高系统并发处理效率。
优选地,一个任务的私有内存资源池可包括:空闲资源池以及回收资源池。对于一个任务来说,空闲资源池为一个;根据与该任务交互的目标任务(或称接收任务,比如上述第二任务)的数量,回收资源池的数量与此相适应,一个回收资源池对应一个目标任务(或称接收任务),也就是说,一个回收资源池归属于一个目标任务(或称接收任务)。举例来说,对于任务A来说,对应于任务A配置有一个空闲资源池,由于任务A作为发送任务分别与任务B和任务C进行交互,即,任务B和任务C分别为任务A的目标任务(或称接收任务),则对应于任务A配置有2个回收资源池,分别为:任务B的回收资源池以及任务C的回收资源池。
其中,任务A的空闲资源池,用于容纳为任务A分配的空闲内存资源,以及被任务A释放的内存资源;任务B的回收资源池,用于容纳被任务B释放的且在被释放前用于与任务A交互用的内存资源。同理,任务C的回收资源池,用于容纳被任务C释放的且在被释放前用于与任务C交互用的内存资源。
为了基于不同粒度对内存资源进行管理,在一些实施例中,一个空闲资源池中包括一个或多个子资源池,每个子资源池中包含一个或多个大小相同的内存块,每个子资源池中包含的内存块的大小不相同。比如,在进行内存资源管理时,以N种不同大小的内存块作为内存资源颗粒度进行内存资源管理,这种情况下,一个空闲资源池中可包括最多N个子资源池,每个子资源池中包含的内存块的大小相同,不同子资源池包含的内存块的大小互不相同,例如,子资源池1中的内存块大小表示为L,子资源池2中的内存块大小是2倍的L。
在另一些实施例中,一个回收资源池中也可以包括一个或多个子资源池,每个子资源池中包含一个或多个大小相同的内存块,每个子资源池中包含的内存块的大小不相同。
空闲资源池可采用链表形式也可采用队列形式。回收资源池可采用链表形式也可采用队列形式。以采用队列形式为例,图2示例性地示出了一种空闲资源池。如图2所示,一个空闲资源池(也即空闲资源队列)中可包括多个子队列,一个子队列中的内存块的大小均相同(图中的一个小方块表示一个内存块),不同子队列中的内存块的大小不相同。同理,回收资源池也可具有类似的结构,在此不再详述。
一个任务的空闲资源池通常可在该任务启动过程中申请内存资源时被创建,当然也可在其他情况下被创建。以在任务启动时被创建为例,当一个任务启动时,需要首先为该任务分配内存资源,此时尚未为该任务创建私有内存资源池,更具体地来说,此时尚未为该任务创建空闲资源池,因此在资源分配过程中,从共享内存资源池中申请内存资源作为该任务的空闲资源,放入到该任务的空闲资源池中。当该任务需要使用内存资源时,可优先从该任务的空闲资源池中获取内存资源进行分配。
可选地,在一个任务启动时为该任务创建的空闲资源池的大小可预先规定。预先规定的空闲资源池的大小,可根据系统的内存总容量、可并发执行的任务数量来确定。
一个任务的回收资源池通常在该任务作为目标任务(或称接收任务)的情况下,其他任务需要向该目标任务发送基于内存的消息时创建。以上述任务B的回收资源池为例,任务B的回收资源池通常在任务A需要向任务B发送基于内存的消息时,由任务A创建,或者由内存资源管理装置基于任务A的请求来创建。具体地,图3示例性地示出了任务B的回收资源池的创建过程。如图所示,该流程可包括:
步骤301:任务A向任务B发送基于内存的消息之前,判断是否已经有任务B的回收资源池,若没有,则执行步骤302,否则执行步骤303。这里,任务B的回收资源池用于回收任务A和任务B进行交互时使用的内存资源。
步骤302:为任务B创建回收资源池,并进入步骤303。
步骤303:向任务B发送基于内存的消息。
其中,基于内存的消息可根据具体应用场景的不同而不同,比如,可以是任务A调用任务B的请求消息,也可以是任务A向任务B传递控制信息的消息,还可以是任务A向任务B传递数据的消息,在此不再一一列举。
基于上述任务的私有内存资源池的架构,图1所示的资源分配流程可细化为图4所示的流程。
如图4所示,该流程可包括如下步骤:
步骤401:接收第一任务发送的内存资源分配请求;
步骤402:判断第一任务的空闲资源池中的内存资源容量是否大于或等于内存资源分配请求所请求分配的内存资源大小,若是,则转入步骤406,否则,转入步骤403。
步骤403:判断第二任务的回收资源池中的内存资源容量是否大于或等于内存资源分配请求所请求分配的内存资源大小,若是,则转入步骤404,否则,转入步骤405;
如果第一任务与N个(N为大于等于1的整数)第二任务(即目标任务,或称接收任务)之间存在交互,则该N个第二任务各自配置有回收资源池。此种情况下,步骤403中,判断第二任务的回收资源池中的内存资源容量是否大于或等于内存资源分配请求所请求分配的内存资源大小是指:判断这N个回收资源池中的内存资源的总容量是否大于或等于内存资源分配请求所请求分配的内存资源大小。
步骤404:从第二任务的回收资源池中获取内存资源进行分配。
步骤405:从共享内存资源池中获取内存资源进行分配。
步骤406:从第一任务的空闲资源池中获取内存资源进行分配。
进一步地,在进行内存资源分配之后,还可为已分配的内存资源设置使用者信息。例如,若所分配的内存资源用于缓存第一任务运行时产生的中间数据,则设置该内存资源的使用者为第一任务;若所分配的内存资源用于缓存第一任务和第二任务之间交互的控制信息和/或数据,则设置该内存资源的使用者为第二任务。
进一步地,如果所分配的内存资源用于缓存第一任务和第二任务之间交互的控制信息和/或数据,则还可以将分配的内存资源的地址等信息通知给第二任务。
图4所示的流程中,是以优先进行空闲资源池的判断为例进行描述的,在一些其他实施例中,也可以优先进行回收资源池的判断,其流程与图4的流程类似,在此不再详述。
在另外的一些实施例中,空闲资源池的判断和回收资源池的判断也可以没有明显的优先顺序,只要第一任务的空闲资源池中的内存资源容量大于或等于内存资源分配请求所请求分配的内存资源大小,则就可以从第一任务的空闲资源池中获取内存资源进行分配;只要第二队列的回收资源池中的内存资源容量大于或等于内存资源分配请求所请求分配的内存资源大小,则就可以从第二任务的回收资源池中获取内存资源进行分配。进一步地,若第一任务的空闲资源池中的内存资源容量小于内存资源分配请求所请求分配的内存资源大小,且第二任务的回收资源池中的内存资源容量小于内存资源分配请求所请求分配的内存资源大小,则从共享内存资源池中获取内存资源进行分配。
针对内存资源释放场景,本发明实施例还提供了相应解决方案,以将释放的内存资源回收至相应的私有内存资源池。
参见图5,为本发明实施例提供的内存资源释放流程示意图,该流程可由用于实现内存资源管理的装置(以下称内存资源管理装置)实现。
如图所示,该流程可包括如下步骤:
步骤501:接收内存资源释放请求。
步骤502:根据被请求释放的内存资源的所有者,确定目标内存资源池,该目标内存资源池为私有内存资源池。
如前所述,内存资源的使用者可能是第一任务,也可能是与第一任务对应的第二任务(此种情况下,第二任务为第一任务的目标任务或称接收任务),这种情况下,若被请求释放的内存资源的所有者为第一任务对应的第二任务,则将用于容纳被该第二任务释放的且在被释放前用于与该第一任务交互用的内存资源的回收资源池,确定为目标内存资源池;若被请求释放的内存资源的所有者为第一任务,则将该第一任务的空闲资源池确定为目标内存资源池。
举例来说,如果被请求释放的内存资源的使用者为任务A,则将被请求释放的资源回收至任务A的空闲资源池;如果被请求释放的内存资源的使用者为任务B且该内存资源在被释放前用于缓存任务A与任务B之间交互的控制信息和/或数据,则将该内存资源回收至任务B的回收资源池,该回收资源池是对应于任务A设置的,用来容纳被作为任务A的目标任务的任务B释放的资源。
步骤503:将被请求释放的内存资源回收至确定出的目标内存资源池。
通过图5所示的流程可以看出,针对任务级别动态创建空闲资源池,本任务使用过的内存资源可放入该任务的空闲资源池供下次直接使用,避免采用互斥保护。
当系统运行进入稳定状态后,一个任务的空闲资源池和回收资源池中的内存资源总容量相当于该任务所需要的内存资源的最大容量。但系统共享内存资源池的总容量是有一定限制的,因此在运行的任务数量较多的情况下,可能出现共享内存资源池中可用内存资源少,甚至导致无法为新启动的任务分配内存资源的情况。
为了解决上述问题,本发明实施例还提供了相应的解决方案,用于支持内存资源的整理回收。具体地,当共享内存资源池中剩余内存资源的容量低于门限值时,选取回收资源池,将选取的回收资源池中的内存资源回收至所述共享内存资源池。
优选地,选取回收资源池时,可根据预设的规则进行选取,该预设规则可以有多种,一种优选地内存资源回收流程可如图6所示。
参见图6,为本申请实施例提供的内存资源回收整理的流程示意图,该流程可由用于实现内存资源管理的装置(以下称内存资源管理装置)实现。
如图所示,该流程可包括如下步骤:
步骤601:共享内存资源池中剩余内存资源的容量是否低于门限值,若是,则转入步骤602;否则,结束本流程。
步骤602:选取回收资源池。
该步骤中,可针对每个发送任务,确定该发送任务的所有接收任务的回收资源池的总容量;确定最大的总容量所对应的发送任务;选取将该发送任务的所有接收任务的回收资源池。
举例来说,任务A作为发送任务,其接收任务有2个,分别为任务B和任务C,且任务A分别为任务B和任务C创建有回收资源池。在步骤602中,可扫描所有发送任务的回收资源池总容量。本例子中,任务A为任务B和任务C所创建的回收资源池中内存资源的总容量大于其他任务的回收资源池中内存资源的总容量,因此选取任务A分别为任务B和任务C创建的回收资源池,进行下一步的内存资源回收。
步骤603:针对选取的回收资源池,清除这些回收资源池中内存块的所有者信息。
步骤604:将所选取的回收资源池中的内存资源回收至共享内存资源池。
需要说明的是,优选地,上述实施例中涉及到的内存资源池中可仅保存内资源的地址信息,相应地,分配内存资源和回收内存资源时,可仅针对内存资源的地址进行相应分配和回收处理,比如,在分配内存资源时,将分配的内存资源的地址信息发送给接收任务,或者,在回收内存资源时,将回收的内存资源的地址信息放入相应的资源池中。
综上所述,本发明的上述实施例中,只有初始从系统共享内存资源池分配内存资源以及将内存资源回收至共享内存资源池后需要采用内存互斥机制,其他时候(即内存资源来自于私有内存资源池)均无需采用内存互斥锁,从而提高并发效率。
基于相同的技术构思,本发明实施例还提供了一种内存资源管理装置,该装置可实现前述实施例描述的内存资源管理流程。
参见图7,为本发明实施例提供的内存资源管理装置的结构示意图,该装置可包括:接收单元701、判断单元702、分配单元703,其中:
接收单元701,用于接收第一任务发送的内存资源分配请求;
判断单元702,用于判断所述第一任务的私有内存资源池中的空闲内存资源容量是否大于或等于所述内存资源分配请求所请求分配的内存资源大小;
分配单元703,用于在所述判断单元判定为是时,从所述第一任务的私有内存资源池中获取内存资源进行分配;在所述判断单元判定为否时,从共享内存资源池中获取内存资源进行分配。
可选地,所述第一任务的私有内存资源池包括:
所述第一任务的空闲资源池,用于容纳为所述第一任务分配的空闲内存资源,以及容纳被所述第一任务释放的内存资源;
所述第二任务的回收资源池,用于容纳被所述第二任务释放的且在被释放前用于与所述第一任务交互用的内存资源;其中,所述第一任务为发送任务,所述第二任务为与所述第一任务对应的接收任务。
可选地,分配单元703可具体用于:若所述第一任务的空闲资源池中的内存资源容量大于或等于所述内存资源分配请求所请求分配的内存资源大小,则从所述第一任务的空闲资源池中获取内存资源进行分配;或者,若所述第二队列的回收资源池中的内存资源容量大于或等于所述内存资源分配请求所请求分配的内存资源大小,则从所述第二任务的回收资源池中获取内存资源进行分配。
可选地,分配单元703可具体用于:若所述第一任务的空闲资源池中的内存资源容量小于所述内存资源分配请求所请求分配的内存资源大小,且所述第二任务的回收资源池中的内存资源容量小于所述内存资源分配请求所请求分配的内存资源大小,则从共享内存资源池中获取内存资源进行分配。
可选地,分配单元703还可用于:在分配内存资源之后,对所分配的内存资源标记所述内存资源的所有者信息。
可选地,上述装置中还可包括确定单元704和第一回收单元705。接收单元701还可用于:接收内存资源释放请求;确定单元704,用于根据被请求释放的内存资源的所有者,确定目标内存资源池,所述目标内存资源池为私有内存资源池;第一回收单元705,用于将被请求释放的内存资源回收至确定出的目标内存资源池。
可选地,确定单元704可具体用于:若被请求释放的内存资源的所有者为所述第一任务对应的第二任务,则将用于容纳被所述第二任务释放的且在被释放前用于与所述第一任务交互用的内存资源的回收资源池,确定为目标内存资源池;或者,若被请求释放的内存资源的所有者为所述第一任务,则将所述第一任务的空闲资源池确定为目标内存资源池。
可选地,上述装置中还可包括第二回收单元706,用于当共享内存资源池中的内存资源容量低于门限值时,选取回收资源池;以及,将选取的回收资源池中的内存资源回收至所述共享内存资源池。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (18)
1.一种内存管理方法,其特征在于,包括:
接收第一任务发送的内存资源分配请求;
判断所述第一任务的私有内存资源池中的空闲内存资源容量是否大于或等于所述内存资源分配请求所请求分配的内存资源大小;
若是,则从所述第一任务的私有内存资源池中获取内存资源进行分配;否则,从共享内存资源池中获取内存资源进行分配。
2.如权利要求1所述的方法,其特征在于,所述第一任务的私有内存资源池包括:
所述第一任务的空闲资源池,用于容纳为所述第一任务分配的空闲内存资源,以及容纳被所述第一任务释放的内存资源;
所述第二任务的回收资源池,用于容纳被所述第二任务释放的且在被释放前用于与所述第一任务交互用的内存资源;其中,所述第一任务为发送任务,所述第二任务为与所述第一任务对应的接收任务。
3.如权利要求2所述的方法,其特征在于,一个空闲资源池中包括一个或多个子资源池,每个子资源池中包含一个或多个大小相同的内存块,每个子资源池中包含的内存块的大小不相同;和/或,
一个回收资源池中包括一个或多个子资源池,每个子资源池中包含一个或多个大小相同的内存块,每个子资源池中包含的内存块的大小不相同。
4.如权利要求2所述的方法,其特征在于,判断所述第一任务的私有内存资源池中的空闲内存资源容量是否大于或等于所述内存资源分配请求所请求分配的内存资源大小,若是,则从所述第一任务的私有内存资源池中获取内存资源进行分配,包括:
若所述第一任务的空闲资源池中的内存资源容量大于或等于所述内存资源分配请求所请求分配的内存资源大小,则从所述第一任务的空闲资源池中获取内存资源进行分配;或者,
若所述第二队列的回收资源池中的内存资源容量大于或等于所述内存资源分配请求所请求分配的内存资源大小,则从所述第二任务的回收资源池中获取内存资源进行分配。
5.如权利要求4所述的方法,其特征在于,所述从共享内存资源池中获取内存资源进行分配,包括:
若所述第一任务的空闲资源池中的内存资源容量小于所述内存资源分配请求所请求分配的内存资源大小,且所述第二任务的回收资源池中的内存资源容量小于所述内存资源分配请求所请求分配的内存资源大小,则从共享内存资源池中获取内存资源进行分配。
6.如权利要求2所述的方法,其特征在于,分配内存资源之后,还包括:
对所分配的内存资源标记所述内存资源的所有者信息。
7.如权利要求6所述的方法,其特征在于,还包括:
接收内存资源释放请求;
根据被请求释放的内存资源的所有者,确定目标内存资源池,所述目标内存资源池为私有内存资源池;
将被请求释放的内存资源回收至确定出的目标内存资源池。
8.如权利要求7所述的方法,其特征在于,所述根据被请求释放的内存资源的所有者,确定目标内存资源池,包括:
若被请求释放的内存资源的所有者为所述第一任务对应的第二任务,则将用于容纳被所述第二任务释放的且在被释放前用于与所述第一任务交互用的内存资源的回收资源池,确定为目标内存资源池;或者,
若被请求释放的内存资源的所有者为所述第一任务,则将所述第一任务的空闲资源池确定为目标内存资源池。
9.如权利要求2至8中任一项所述的方法,其特征在于,还包括:
当共享内存资源池中的内存资源容量低于门限值时,选取回收资源池;
将选取的回收资源池中的内存资源回收至所述共享内存资源池。
10.如权利要求9所述的方法,其特征在于,所述选取回收资源池,包括:
针对每个发送任务,确定该发送任务的所有接收任务的回收资源池的总容量;
确定最大的总容量所对应的发送任务;
选取将该发送任务的所有接收任务的回收资源池。
11.一种内存管理装置,其特征在于,包括:
接收单元,用于接收第一任务发送的内存资源分配请求;
判断单元,用于判断所述第一任务的私有内存资源池中的空闲内存资源容量是否大于或等于所述内存资源分配请求所请求分配的内存资源大小;
分配单元,用于在所述判断单元判定为是时,从所述第一任务的私有内存资源池中获取内存资源进行分配;在所述判断单元判定为否时,从共享内存资源池中获取内存资源进行分配。
12.如权利要求11所述的装置,其特征在于,所述第一任务的私有内存资源池包括:
所述第一任务的空闲资源池,用于容纳为所述第一任务分配的空闲内存资源,以及容纳被所述第一任务释放的内存资源;
所述第二任务的回收资源池,用于容纳被所述第二任务释放的且在被释放前用于与所述第一任务交互用的内存资源;其中,所述第一任务为发送任务,所述第二任务为与所述第一任务对应的接收任务。
13.如权利要求12所述的装置,其特征在于,所述分配单元具体用于:
若所述第一任务的空闲资源池中的内存资源容量大于或等于所述内存资源分配请求所请求分配的内存资源大小,则从所述第一任务的空闲资源池中获取内存资源进行分配;或者,
若所述第二队列的回收资源池中的内存资源容量大于或等于所述内存资源分配请求所请求分配的内存资源大小,则从所述第二任务的回收资源池中获取内存资源进行分配。
14.如权利要求13所述的装置,其特征在于,所述分配单元具体用于:
若所述第一任务的空闲资源池中的内存资源容量小于所述内存资源分配请求所请求分配的内存资源大小,且所述第二任务的回收资源池中的内存资源容量小于所述内存资源分配请求所请求分配的内存资源大小,则从共享内存资源池中获取内存资源进行分配。
15.如权利要求12所述的装置,其特征在于,所述分配单元还用于:
在分配内存资源之后,对所分配的内存资源标记所述内存资源的所有者信息。
16.如权利要求15所述的装置,其特征在于,还包括:确定单元和第一回收单元;
所述接收单元还用于:接收内存资源释放请求;
所述确定单元,用于根据被请求释放的内存资源的所有者,确定目标内存资源池,所述目标内存资源池为私有内存资源池;
所述第一回收单元,用于将被请求释放的内存资源回收至确定出的目标内存资源池。
17.如权利要求16所述的装置,其特征在于,所述确定单元具体用于:
若被请求释放的内存资源的所有者为所述第一任务对应的第二任务,则将用于容纳被所述第二任务释放的且在被释放前用于与所述第一任务交互用的内存资源的回收资源池,确定为目标内存资源池;或者,
若被请求释放的内存资源的所有者为所述第一任务,则将所述第一任务的空闲资源池确定为目标内存资源池。
18.如权利要求12至17中任一项所述的装置,其特征在于,还包括:
第二回收单元,用于当共享内存资源池中的内存资源容量低于门限值时,选取回收资源池;以及,将选取的回收资源池中的内存资源回收至所述共享内存资源池。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610430335.6A CN107515785A (zh) | 2016-06-16 | 2016-06-16 | 一种内存管理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610430335.6A CN107515785A (zh) | 2016-06-16 | 2016-06-16 | 一种内存管理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107515785A true CN107515785A (zh) | 2017-12-26 |
Family
ID=60720277
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610430335.6A Pending CN107515785A (zh) | 2016-06-16 | 2016-06-16 | 一种内存管理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107515785A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109144902A (zh) * | 2018-07-10 | 2019-01-04 | 北京佳讯飞鸿电气股份有限公司 | 内存的申请使用方法及装置 |
CN109213561A (zh) * | 2018-09-14 | 2019-01-15 | 珠海国芯云科技有限公司 | 基于容器的虚拟桌面的设备调度方法及装置 |
CN109495401A (zh) * | 2018-12-13 | 2019-03-19 | 迈普通信技术股份有限公司 | 缓存的管理方法及装置 |
CN109829064A (zh) * | 2019-01-31 | 2019-05-31 | 腾讯科技(深圳)有限公司 | 媒体资源分享及播放方法和装置、存储介质及电子装置 |
CN110287127A (zh) * | 2019-05-14 | 2019-09-27 | 江苏大学 | 一种多粒度多核可扩展的非易失性内存管理方法及系统 |
CN110795222A (zh) * | 2019-10-25 | 2020-02-14 | 北京浪潮数据技术有限公司 | 一种多线程任务调度方法、装置、设备及可读介质 |
CN111782362A (zh) * | 2020-06-29 | 2020-10-16 | 珠海豹趣科技有限公司 | 一种消息任务调度方法、装置及电子设备 |
CN112019454A (zh) * | 2019-05-29 | 2020-12-01 | 潘仲光 | 资源处理方法、设备及存储介质 |
CN112149964A (zh) * | 2020-09-03 | 2020-12-29 | 长沙市到家悠享网络科技有限公司 | 资源分配方法及装置 |
CN112181637A (zh) * | 2020-09-10 | 2021-01-05 | 苏州浪潮智能科技有限公司 | 一种内存资源分配方法及装置 |
CN112887228A (zh) * | 2019-11-29 | 2021-06-01 | 阿里巴巴集团控股有限公司 | 云资源管理方法、装置、电子设备及计算机可读存储介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5675790A (en) * | 1993-04-23 | 1997-10-07 | Walls; Keith G. | Method for improving the performance of dynamic memory allocation by removing small memory fragments from the memory pool |
US6385658B2 (en) * | 1997-06-27 | 2002-05-07 | Compaq Information Technologies Group, L.P. | Method and apparatus for synchronized message passing using shared resources |
US6418478B1 (en) * | 1997-10-30 | 2002-07-09 | Commvault Systems, Inc. | Pipelined high speed data transfer mechanism |
US6427195B1 (en) * | 2000-06-13 | 2002-07-30 | Hewlett-Packard Company | Thread local cache memory allocator in a multitasking operating system |
CN101493787A (zh) * | 2009-02-18 | 2009-07-29 | 中兴通讯股份有限公司 | 一种内存操作的管理方法及系统 |
CN101702138A (zh) * | 2009-10-30 | 2010-05-05 | 深圳市新飞扬数码技术有限公司 | 一种内存管理方法、系统及服务器 |
CN102253897A (zh) * | 2011-07-26 | 2011-11-23 | 大唐移动通信设备有限公司 | 一种内存池管理方法及装置 |
CN103150257A (zh) * | 2013-02-28 | 2013-06-12 | 天脉聚源(北京)传媒科技有限公司 | 一种内存管理方法和装置 |
CN103399825A (zh) * | 2013-08-05 | 2013-11-20 | 武汉邮电科学研究院 | 一种无锁化内存申请释放方法 |
CN104615492A (zh) * | 2015-03-01 | 2015-05-13 | 中国人民解放军国防科学技术大学 | 一种多核并行离散事件仿真的内存管理方法 |
US20150149514A1 (en) * | 2013-11-22 | 2015-05-28 | Hyeong Seog Kim | Proactive memory allocation |
-
2016
- 2016-06-16 CN CN201610430335.6A patent/CN107515785A/zh active Pending
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5675790A (en) * | 1993-04-23 | 1997-10-07 | Walls; Keith G. | Method for improving the performance of dynamic memory allocation by removing small memory fragments from the memory pool |
US6385658B2 (en) * | 1997-06-27 | 2002-05-07 | Compaq Information Technologies Group, L.P. | Method and apparatus for synchronized message passing using shared resources |
US6418478B1 (en) * | 1997-10-30 | 2002-07-09 | Commvault Systems, Inc. | Pipelined high speed data transfer mechanism |
US6427195B1 (en) * | 2000-06-13 | 2002-07-30 | Hewlett-Packard Company | Thread local cache memory allocator in a multitasking operating system |
CN101493787A (zh) * | 2009-02-18 | 2009-07-29 | 中兴通讯股份有限公司 | 一种内存操作的管理方法及系统 |
CN101702138A (zh) * | 2009-10-30 | 2010-05-05 | 深圳市新飞扬数码技术有限公司 | 一种内存管理方法、系统及服务器 |
CN102253897A (zh) * | 2011-07-26 | 2011-11-23 | 大唐移动通信设备有限公司 | 一种内存池管理方法及装置 |
CN103150257A (zh) * | 2013-02-28 | 2013-06-12 | 天脉聚源(北京)传媒科技有限公司 | 一种内存管理方法和装置 |
CN103399825A (zh) * | 2013-08-05 | 2013-11-20 | 武汉邮电科学研究院 | 一种无锁化内存申请释放方法 |
US20150149514A1 (en) * | 2013-11-22 | 2015-05-28 | Hyeong Seog Kim | Proactive memory allocation |
CN104615492A (zh) * | 2015-03-01 | 2015-05-13 | 中国人民解放军国防科学技术大学 | 一种多核并行离散事件仿真的内存管理方法 |
Non-Patent Citations (2)
Title |
---|
MARTIN STREICHER: "通过共享内存进行进程间通信", 《HTTPS://WWW.IBM.COM/DEVELOPERWORKS/CN/AIX/LIBRARY/AU-SPUNIX_SHAREDMEMORY/INDEX.HTML》 * |
冯宏华,徐莹,程远: "《C++应用程序性能优化(第2版)》", 30 June 2010, 电子工业出版社 * |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109144902A (zh) * | 2018-07-10 | 2019-01-04 | 北京佳讯飞鸿电气股份有限公司 | 内存的申请使用方法及装置 |
CN109213561A (zh) * | 2018-09-14 | 2019-01-15 | 珠海国芯云科技有限公司 | 基于容器的虚拟桌面的设备调度方法及装置 |
CN109495401B (zh) * | 2018-12-13 | 2022-06-24 | 迈普通信技术股份有限公司 | 缓存的管理方法及装置 |
CN109495401A (zh) * | 2018-12-13 | 2019-03-19 | 迈普通信技术股份有限公司 | 缓存的管理方法及装置 |
CN109829064A (zh) * | 2019-01-31 | 2019-05-31 | 腾讯科技(深圳)有限公司 | 媒体资源分享及播放方法和装置、存储介质及电子装置 |
CN109829064B (zh) * | 2019-01-31 | 2023-08-25 | 腾讯科技(深圳)有限公司 | 媒体资源分享及播放方法和装置、存储介质及电子装置 |
CN110287127A (zh) * | 2019-05-14 | 2019-09-27 | 江苏大学 | 一种多粒度多核可扩展的非易失性内存管理方法及系统 |
CN112019454A (zh) * | 2019-05-29 | 2020-12-01 | 潘仲光 | 资源处理方法、设备及存储介质 |
CN110795222B (zh) * | 2019-10-25 | 2022-03-22 | 北京浪潮数据技术有限公司 | 一种多线程任务调度方法、装置、设备及可读介质 |
CN110795222A (zh) * | 2019-10-25 | 2020-02-14 | 北京浪潮数据技术有限公司 | 一种多线程任务调度方法、装置、设备及可读介质 |
CN112887228A (zh) * | 2019-11-29 | 2021-06-01 | 阿里巴巴集团控股有限公司 | 云资源管理方法、装置、电子设备及计算机可读存储介质 |
CN112887228B (zh) * | 2019-11-29 | 2024-02-02 | 阿里巴巴集团控股有限公司 | 云资源管理方法、装置、电子设备及计算机可读存储介质 |
CN111782362A (zh) * | 2020-06-29 | 2020-10-16 | 珠海豹趣科技有限公司 | 一种消息任务调度方法、装置及电子设备 |
CN112149964A (zh) * | 2020-09-03 | 2020-12-29 | 长沙市到家悠享网络科技有限公司 | 资源分配方法及装置 |
CN112181637A (zh) * | 2020-09-10 | 2021-01-05 | 苏州浪潮智能科技有限公司 | 一种内存资源分配方法及装置 |
CN112181637B (zh) * | 2020-09-10 | 2022-11-11 | 苏州浪潮智能科技有限公司 | 一种内存资源分配方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107515785A (zh) | 一种内存管理方法及装置 | |
US10545789B2 (en) | Task scheduling for highly concurrent analytical and transaction workloads | |
US9875139B2 (en) | Graphics processing unit controller, host system, and methods | |
Abad et al. | Package-aware scheduling of faas functions | |
US20140373020A1 (en) | Methods for managing threads within an application and devices thereof | |
KR102163402B1 (ko) | 멀티 노드와 멀티 gpu를 이용한 분산 학습 시스템 및 방법 | |
CN106528288A (zh) | 一种资源管理方法、装置和系统 | |
CN104468638B (zh) | 一种分布式数据处理方法及系统 | |
CN110297661B (zh) | 基于amp构架dsp操作系统的并行计算方法、系统及介质 | |
CN106959891A (zh) | 一种实现gpu调度的集群管理方法和系统 | |
CN109564528A (zh) | 分布式计算中计算资源分配的系统和方法 | |
US20210373928A1 (en) | Method, system and apparatus for sharing of fpga board by multiple virtual machines | |
CN108170417B (zh) | 一种在mesos集群中集成高性能的作业调度框架的方法和装置 | |
CN104090826B (zh) | 基于相关性的任务优化部署方法 | |
CN116401055B (zh) | 面向资源效率优化的服务器无感知计算工作流编排方法 | |
CN116684420A (zh) | 集群资源调度方法、装置、集群系统和可读存储介质 | |
CN112286688A (zh) | 一种内存管理和使用方法、装置、设备和介质 | |
Yang et al. | PK-OMLP: An OMLP based k-exclusion real-time locking protocol for multi-GPU sharing under partitioned scheduling | |
US20150212859A1 (en) | Graphics processing unit controller, host system, and methods | |
US11392388B2 (en) | System and method for dynamic determination of a number of parallel threads for a request | |
Chen et al. | Task Scheduling for Multi-core and Parallel architectures | |
CN106598726A (zh) | 一种多任务管理系统及其分布式部署方法 | |
US9367326B2 (en) | Multiprocessor system and task allocation method | |
Lusk et al. | Asynchronous dynamic load balancing | |
CN106815061B (zh) | 一种业务处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20171226 |