CN103150259A - 一种内存回收方法和装置 - Google Patents

一种内存回收方法和装置 Download PDF

Info

Publication number
CN103150259A
CN103150259A CN2013100948813A CN201310094881A CN103150259A CN 103150259 A CN103150259 A CN 103150259A CN 2013100948813 A CN2013100948813 A CN 2013100948813A CN 201310094881 A CN201310094881 A CN 201310094881A CN 103150259 A CN103150259 A CN 103150259A
Authority
CN
China
Prior art keywords
chained list
recovery
weight
subregion
memory
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.)
Granted
Application number
CN2013100948813A
Other languages
English (en)
Other versions
CN103150259B (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201310094881.3A priority Critical patent/CN103150259B/zh
Publication of CN103150259A publication Critical patent/CN103150259A/zh
Application granted granted Critical
Publication of CN103150259B publication Critical patent/CN103150259B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System (AREA)

Abstract

本发明涉及计算机技术领域,特别是涉及一种内存回收方法和装置,所述方法包括:当需要进行内存回收时,确定需要进行内存回收的内存节点的一个未处理分区;获取所述分区中具有最高回收权重的链表,对所述链表进行内存回收,并更新所述链表的回收权重;判断当前分区中具有最高回收权重的链表对应的回收权重是否小于基准回收权重,获取第一判断结果;当所述回收权重不小于基准回收权重时,进入所述获取所述分区中具有最高回收权重的链表,对所述链表进行内存回收的步骤;当所述回收权重小于基准回收权重时,进入所述确定需要回收的内存节点的一个未处理分区的步骤,直到遍历所述需要进行内存回收的内存节点的每一个分区。本发明提高了内存回收效率。

Description

一种内存回收方法和装置
技术领域
本发明涉及计算机技术领域,特别是涉及一种内存回收方法和装置。
背景技术
在操作系统中,为了加快对磁盘进行读写操作的速度,将大量的数据缓存在内存中。业务进程在使用内存前需要提出申请并开始占用内存,当使用完内存后再及时释放内存。当内存被大量占用而得不到释放时,则会因为内存分配不足导致操作系统运行出现异常。
为了避免因内存分配不足导致的系统异常的出现,操作系统引入了对内存的分配管理与回收机制。例如,在Linux操作系统中,由内存控制子系统Memcg(Memory Control Group,内存控制子系统)进行进程使用内存的控制,例如限制一组进程的内存使用量,统计一组进程的内存使用情况等。在使用了Memcg的系统中,内核对内存的管理都基于Memcg来实现。下面以Linux操作系统为例,对Memcg进行介绍。在常见的非一致内存访问架构下,操作系统中存在多个内存节点(Node),每个内存节点又包括多个分区(Zone),每个分区上有多组LRU链表(Least Recently Used,最近最少使用链表,是Linux内核用于内存管理和回收控制的重要链表),每个LRU链表可能属于不同的Memcg。因此,对于同一个Memcg而言,其管理的进程所使用的内存可能分布在不同内存节点的不同分区上。而内存回收的对象即为Memcg在不同内存节点的不同分区上的LRU链表。当进行内存回收时,会通过对LRU链表回收一定数量的页来实现。
在现有技术中,内存的回收主要可以分为三类:第一种是紧缺回收,即在内存分配时发现没有可用内存时,则会触发内存紧缺回收,回收的对象为触发内存紧缺回收的进程所在的Memcg;第二种是睡眠回收,即在系统休眠时回收不需要的内存;第三种是周期回收,内核线程周期性地进行内存回收。在第三种回收方式中,内核线程会遍历内存的每一个节点,回收每个节点上的每个分区。当对每个分区进行回收时,会获取此分区中所有使用了其内存的Memcg,找到该Memcg在该分区上的LRU链表,进行内存回收。具体实现时,采用轮询(Round Robin)的方式,对每一个分区,取一个Memcg,回收该Memcg在该分区上的内存,并判断是否遍历了每一个Memcg,直到回收完该分区的每一个Memcg对应的LRU链表。
在实现本发明的过程中,发明人发现现有技术中至少存在如下问题:现有技术提供的针对所有Memcg进行轮询遍历回收内存的方式,由于针对分区中的所有LRU链表都进行回收,会使得对可能不需要回收的LRU链表也进行了回收。例如回收的LRU链表所在的Memcg实际可能很空闲,或者该LRU链表的命中率很高,如果对这样的LRU链表进行回收可能导致资源浪费甚至会对内存的访问效率造成影响,不能达到很好的内存回收效果。
发明内容
为解决上述技术问题,本发明实施例提供了一种内存回收方法和装置,可以提高内存回收效率,以解决现有技术中内存回收不合理导致的资源浪费以及系统性能下降问题。
技术方案如下:
根据本发明实施例的第一方面,公开了一种内存回收方法,所述方法包括:
当需要进行内存回收时,确定需要进行内存回收的内存节点的一个未处理分区作为当前分区;
获取所述当前分区中具有最高回收权重的链表,对所述链表进行内存回收,并更新所述链表的回收权重;
判断当前分区中具有最高回收权重的链表对应的回收权重是否小于基准回收权重,获取第一判断结果;
当所述第一判断结果表明当前分区中具有最高回收权重的链表对应的回收权重不小于基准回收权重时,进入所述获取所述当前分区中具有最高回收权重的链表,对所述链表进行内存回收的步骤;
当所述第一判断结果表明当前分区中具有最高回收权重的链表对应的回收权重小于基准回收权重时,判断是否还有未处理分区,获取第二判断结果;当所述第二判断结果表明还有未处理分区时,进入所述确定需要回收的内存节点的一个未处理分区作为当前分区的步骤,当所述第二判断结果表明没有未处理分区时,结束对当前内存节点的回收。
结合本发明的第一方面,本发明还具有第一种可能,即所述回收权重与页高速缓存命中率、链表的总长度、非活跃链表的长度、链表所属的内存控制子系统超出软限制阈值的数值中的一种或多种因素相关联。
结合本发明的第一方面,本发明还具有第二种可能,即所述对所述链表进行内存回收包括:
获取与所述链表对应的回收权重相对应的回收页数量,对所述链表回收与所述回收页数量对应的内存页。
结合本发明的第一方面,本发明还具有第三种可能,即在获取所述当前分区中具有最高回收权重的链表之后,在对所述链表进行内存回收之前,所述方法还包括:
判断所述链表对应的回收权重是否小于基准回收权重,获取第三判断结果;
当所述第三判断结果表明所述链表对应的回收权重不小于基准回收权重时,触发对所述链表进行内存回收的步骤;
当所述第三判断结果表明所述链表对应的回收权重小于基准回收权重时,进入确定需要进行内存回收的内存节点的一个未处理分区作为当前分区的步骤。
结合本发明的第一方面,本发明还具有第四种可能,即在获取所述当前分区中具有最高回收权重的链表之前,所述方法还包括:
获取当前分区在软限制树softlimit tree上具有最高回收权重的链表,对所述链表进行内存回收,并更新所述链表的回收权重;其中,所述软限制树softlimit tree根据链表的回收权重大小进行排序。
结合本发明的第一方面和本发明的第四种可能,本发明还具有第五种可能,即所述软限制树softlimit tree包含回收权重大于基准回收权重的链表。
根据本发明实施例的第二方面,公开了一种内存回收装置,所述装置包括:
分区确定单元,用于当需要进行内存回收时,确定需要进行内存回收的内存节点的一个未处理分区作为当前分区;
第一链表回收单元,用于获取所述当前分区中具有最高回收权重的链表,对所述链表进行内存回收,并更新所述链表的回收权重;
第一判断单元,用于判断当前分区中具有最高回收权重的链表对应的回收权重是否小于基准回收权重,获取第一判断结果;当所述第一判断结果表明当前分区中具有最高回收权重的链表对应的回收权重不小于基准回收权重时,进入第一链表回收单元;当所述第一判断结果表明当前分区中具有最高回收权重的链表对应的回收权重小于基准回收权重时,进入第二判断单元;
第二判断单元,用于判断当前节点是否还有未处理分区,获取第二判断结果;当所述第二判断结果表明还有未处理分区时,进入分区确定单元,当所述第二判断结果表明没有未处理分区时,结束对当前内存节点的回收。
结合本发明的第二方面,本发明还具有第六种可能,即所述回收权重与页高速缓存命中率、链表的总长度、非活跃链表的长度、链表所属的内存控制子系统超出软限制阈值的数值中的一种或多种因素相关联。
结合本发明的第二方面,本发明还具有第七种可能,即所述第一链表回收单元具体用于:
获取与所述链表对应的回收权重相对应的回收页数量,对所述链表回收与所述回收页数量对应的内存页。
结合本发明的第二方面,本发明还具有第八种可能,即所述第一链表回收单元包括:
回收单元,用于获取所述当前分区中具有最高回收权重的链表,对所述链表进行内存回收;
更新单元,用于更新所述链表的回收权重;
所述第一链表回收单元还包括:
第三判断单元,用于判断所述链表对应的回收权重是否小于基准回收权重,获取第三判断结果;当所述第三判断结果表明所述链表对应的回收权重不小于基准回收权重时,进入所述回收单元触发对所述链表进行内存回收;当所述第三判断结果表明所述链表对应的回收权重小于基准回收权重时,进入分区确定单元。
结合本发明的第二方面,本发明还具有第九种可能,即所述装置还包括:
第二链表回收单元,用于获取当前分区在软限制树softlimit tree上具有最高回收权重的链表,对所述链表进行内存回收,并更新所述链表的回收权重;其中,所述软限制树softlimit tree根据链表的回收权重大小进行排序。
结合本发明的第二方面和本发明的第九种可能,本发明还具有第十种可能,即所述软限制树softlimit tree包含回收权重大于基准回收权重的链表。
本发明实施例的一个方面能够达到的有益效果为:在本发明实施例提供的内存回收方法和装置中,为每一个链表均赋予了回收权重,当需要进行内存回收时,确定需要进行内存回收的内存节点的一个未处理分区作为当前分区;获取所述当前分区中具有最高回收权重的链表,对所述链表进行内存回收,并更新所述链表的回收权重;判断当前分区中具有最高回收权重的链表对应的回收权重是否小于基准回收权重,如果否,则对具有最高回收权重的链表进行回收;如果是,则结束当前分区的链表回收,选取下一个未处理分区进行内存回收处理,直到遍历所述需要进行内存回收的内存节点的每一个分区。应用本发明提供的方法,只对回收权重大于或等于基准回收权重的链表进行回收,以确保对最需要进行回收的链表进行回收,提高了内存回收的效率,克服了现有技术对所有分区的所有链表进行回收带来的资源浪费和系统性能下降的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的内存回收方法第一实施例示意图;
图2为本发明实施例提供的内存回收方法第二实施例示意图;
图3为本发明实施例提供的内存回收装置示意图。
具体实施方式
本发明实施例提供了一种内存回收方法和装置,可以提高内存回收效率,以解决现有技术中内存回收不合理导致的资源浪费以及系统性能下降问题。
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
参见图1,为本发明提供的内存回收方法第一实施例流程图。
S101,当需要进行内存回收时,确定需要进行内存回收的内存节点的一个未处理分区作为当前分区。
确定何时进行内存回收,可以有灵活的设置。例如可以设置定时周期性地进行内存回收,这时进行的内存回收针对的对象可以是系统中所有的内存节点,也可以是部分内存节点。或者,为了尽可能地减少对内存分配的影响,满足内存分配实时性的需求,可以在内存剩余容量满足第一条件时进行内存回收。例如,可以在无法从自由链和空闲区分配内存时启动一次内存回收。又如,可以在内存控制子系统控制的进程使用的内存量超过软限制参数softlimit时进行一次内存回收。这里,内存控制子系统引入了软限制参数softlimit和硬限制参数hardlimit的概念。其中,hardlimit用来表征控制一组进程可以使用内存量的硬限制,如果进程使用的内存量超过此限制则不能再分配内存,只能先进行回收再继续分配。为了避免因为超过hardlimit而在分配内存时引起的内存强制回收而导致的较大内存分配延迟的问题,引入了软限制参数softlimit。软限制参数softlimit提供了进行内存回收的参考依据,当进程使用的内存量超过了softlimit时,则表明进程所在的内存控制子系统Memcg需要进行内存回收了,但并不会引起强制回收。内存控制子系统Memcg所占用的内存量超过softlimit越多,则表明对该Memcg进行内存回收的需求越迫切。
当需要进行内存回收时,获取需要进行内存回收的节点的一个未处理分区作为当前分区。选取分区可以是随机的,也可以是按照分区排序依次进行。
S102,获取所述当前分区中具有最高回收权重的链表,对所述链表进行内存回收,并更新所述链表的回收权重。
在本发明实施例中,为每一个链表均赋予了回收权重,回收权重用于表征当前链表需要进行内存回收的迫切程度。链表需要内存回收的程度越迫切,回收权重越高。回收权重可以与多种因素相关,本发明列举了几种可能的因素,不视为对本发明的限制。本领域技术人员可以理解的是,还可以根据实际需要,通过其他因素来设置回收权重,本领域技术人员在不付出创造性劳动下获取的其他实现方式,均属于本发明的保护范围。
其中,回收权重可以与以下一种或多种因素相关联:
(1)页高速缓存Cache的命中率;
(2)LRU链表所在的内存控制子系统超出软限制阈值softlimit的数值;
(3)LRU链表的总长度;
(4)非活跃链表(Inactive链表)的长度。
下面以回收权重与以上四种因素相关联说明回收权重的计算方式。以下仅为示例性描述,不视为对本发明的限制。
reclaim _ weight = recent _ scanned recent _ rotated * total _ size weight 1 * inactive _ size weight 2 + usage _ in _ excess * weight 3 - - - ( 1 )
其中,公式(1)中,reclaim_weight为回收权重,recent_scanned为最近扫描量,recent_rotated为最近旋转量,total_size为LRU链表的总长度,inactive_size为非活跃链表的长度,usage_in_excess为链表所属的内存控制子系统超出软限制阈值的数值,weight1为第一回收权重因子,weight2为第二回收权重因子,weight3为第三回收权重因子。
下面进行详细地说明。
其中的recent_scanned和recent_rotated是由内核对每一个LRU链表维护的两个元素,它们分别在遍历链表和查找链表命中时更新,所以某种程度上来说,recent_scanned与recent_rotated的比值可以反映该LRU链表作为缓存的缓存命中率,公式中将比值反过来,则说明命中率越高,回收权重越小,反之亦然。
total_size和inactive_size分别表示LRU链表的总长度和Inactive链表的长度。其中,LRU链表分为active链表和inactive链表,内存回收的页都从inactive链表中得到。它们都除以一个权重因子,权重因子的选取可能影响回收权重对实际回收迫切程度衡量的准确性,权重因子可以是经验值,需要在不断的实践和测试中得出一个较优的值。
usage_in_excess表示LRU所在的memcg超过softlimit的大小,它同样也需要一个权重因子来修正。
需要说明的是,在上面提到的四种因素中,缓存命中率以及链表所属的内存控制子系统超出软限制阈值的大小是影响回收权重的重要影响因素,链表的总长度、非活跃链表的长度为次要的影响因素。在这四种因素中,缓存命中率与回收权重成反比,其他因素与回收权重成正比。本领域技术人员可以理解的是,可以对公式(1)进行变形,以得到其他计算回收权重的方式。
以下举例进行说明,计算回收权重还可以应用以下公式:
reclaim _ weight = recent _ scanned recent _ rotated * weight + total _ size weight 1 * inactive _ size weight 2 + usage _ in _ excess * weight 3 - - - ( 2 )
reclaim _ weight = recent _ scanned recent _ rotated * weight + total _ size weight 1 + inactive _ size weight 2 + usage _ in _ excess * weight 3 - - - ( 3 )
reclaim _ weight = recent _ scanned recent _ rotated * weight * total _ size weight 1 * inactive _ size weight 2 * usage _ in _ excess * weight 3 - - - ( 4 )
需要说明的是,上述公式(2)、(3)、(4)中参数的含义与公式(1)类似,其中,weight为缓存命中率对应的权重因子。
对于本发明实施例一中介绍的回收权重的计算方式,并不局限于其中提到的公式,甚至不局限于其中提到的这些因素。实施例一中提到的四个因素中,cache命中率和Memcg超过softlimit的大小是重要的影响因素,另外两个是次要的影响因素,如果未来内核中加入了其他的机制可能影响到内存回收的迫切程度,它们也都可能成为计算回收权重的因素之一。
需要说明的是,以Linux为例,系统内核维护了memcg结构树。步骤S102具体实现时,则是从内核维护的memcg结构树中获取当前处理分区中回收权重最大的LRU链表,对LRU链表进行回收。对LRU链表进行回收时,为了达到更好的回收效果,针对不同回收权重的LRU链表,设置不同的回收页数量。具体实现时,获取与所述LRU链表对应的回收权重对应的回收页数量,对所述LRU链表回收与所述回收页数量对应的内存页。一般而言,回收权重越高,回收页的数量越高。需要说明的是,考虑到一次内存回收所需要的时间问题,回收权重与回收页数量的比值不会是线性的,而是会在一定可取的范围内,回收权重与回收页数量成正比关系。
S103,判断当前分区中具有最高回收权重的链表对应的回收权重是否小于基准回收权重,获取第一判断结果。
当所述第一判断结果表明当前分区中具有最高回收权重的链表对应的回收权重不小于基准回收权重时,进入所述步骤S102获取所述分区中具有最高回收权重的链表,对所述链表进行内存回收的步骤;
当所述第一判断结果表明当前分区中具有最高回收权重的链表对应的回收权重小于基准回收权重时,进入步骤S104。
在本发明第一实施例中,对回收权重大于基准回收权重的链表进行回收。其中,基准回收权重用于衡量回收权重所对应的回收迫切程度,大于基准回收权重的回收权重对应的LRU链表是需要进行回收的链表。下面以一种实现方式为例说明如何获取基准回收权重。
base _ weight = 3 1 * reasonable _ size weight 1 * reasonable _ inactive _ size weight 2 - - - ( 5 )
其中,base_weight为基准回收权重,3/1是系统假设的一个正常的缓存命中率1/3的倒数,reasonable_size和reasonable_inactive_size分别表示合理情况下LRU链表的长度和inactive链表的长度,weight1为第一基准权重因子,weight2为第二基准权重因子。如果回收权重小于或者等于基准权重下,则认为不需要对当前LRU链表进行回收,因此当前如LRU链表所在的memcg必然是不会超过softlimit的,所以权重计算公式后面的usage_in_excess在基准权重的计算中置为0。
需要说明的是,可以对公式(5)进行变形,获取其他计算基准回收权重的方式。其中,合理的缓存命中率可以是其他值,只要能够达到较好的回收效果即可。
以下举例进行说明,计算基准回收权重还可以应用以下公式:
base _ weight = 1 reasonable _ cache _ hit _ ratio * reasonable _ size weight 1 * reasonable _ inactive _ size weight 2 - - - ( 6 )
base _ weight = 1 reasonable _ cache _ hit _ ratio + reasonable _ size weight 1 * reasonable _ inactive _ size weight 2 - - - ( 7 )
base _ weight = 1 reasonable _ cache _ hit _ ratio + reasonable _ size weight 1 + reasonable _ inactive _ size weight 2 - - - ( 8 )
其中,reasonable_cache_hit_ratio表示合理的缓存命中率,可以根据需要进行设置。
在本发明实施例中,在为每一个LRU链表设置回收权重后,进行内存回收时不再需要遍历所有的memcg,找到其在zone上的LRU链表再进行内存回收,而是直接找到该zone上回收权重最高的LRU链表,对其进行内存回收后再更新其回收权重,然后选择回收权重第二高的LRU链表,依次进行,直到所选择的回收权重已经低于基准回收权重,则对该分区(zone的)内存回收结束,继续进行下一个未处理分区的内存回收。
具体实现时,在进行步骤S102后,获取当前分区中具有最高回收权重的链表对应的回收权重(此链表为未进行步骤S102前具有第二高回收权重的链表),判断该回收权重是否小于基准回收权重。如果该回收权重小于基准回收权重,则结束对当前分区的内存回收,获取下一个未处理分区。如果该回收权重不小于基准回收权重,则继续对该链表进行内存回收,并更新回收权重。循环执行上述步骤,直到具有当前最高回收权重的链表的回收权重小于基准回收权重,则进入步骤S104。
此外,需要说明的是,对于一个分区中依次选取回收权重最高的LRU链表的方式,本发明不做任何限制,只确保这样的结果。在具体实现时,可能考虑执行效率和代码复杂度和平衡,采用不同的实现方式。比如依然遍历所有系统维护的memcg,找到其在该zone上有LRU链表且权重最高的LRU链表;或者重新组织数据结构,对每一个zone单独维护其上所有的LRU链表等。本发明对此不进行限定。
S104,判断是否还有未处理分区,获取第二判断结果;当所述第二判断结果表明还有未处理分区时,进入步骤S101;当所述第二判断结果表明没有未处理分区时,进入步骤S105。
S105,结束对当前内存节点的回收。
在本发明第一实施例中,为每一个链表均赋予了回收权重,当需要进行内存回收时,确定需要进行内存回收的内存节点的一个未处理分区作为当前分区;获取所述当前分区中具有最高回收权重的链表,对所述链表进行内存回收,并更新所述链表的回收权重;判断当前分区中具有最高回收权重的链表对应的回收权重是否小于基准回收权重,如果否,则对具有最高回收权重的链表进行回收;如果是,则结束当前分区的链表回收,选取下一个未处理分区进行内存回收处理,直到遍历所述需要进行内存回收的内存节点的每一个分区。应用本发明提供的方法,只对回收权重大于或等于基准回收权重的链表进行回收,以确保对最需要进行回收的链表进行回收,提高了内存回收的效率,克服了现有技术对所有分区的所有链表进行回收带来的资源浪费和系统性能下降的问题。
参见图2,为本发明提供的内存回收方法第二实施例流程图。
在本发明第二实施例中,与第一实施例不同的是,在对分区中具有最高回收权重的链表进行内存回收前,进一步包括对内核维护的软限制树softlimit tree进行链表回收的步骤。
S201,当需要进行内存回收时,确定需要进行内存回收的内存节点的一个未处理分区作为当前分区。
S202,获取当前分区在软限制树softlimit tree上具有最高回收权重的链表,对所述链表进行内存回收,并更新所述链表的回收权重。
在现有技术中,内核维护了一整棵softlimit tree,树的顶端是内存控制子单元节点mem_cgroup_tree,其下又分为多个内存节点,每个内存节点又包括多个分区zone,每个分区又对应一个softlimit tree,具体为一棵红黑树(一种平衡查找二叉树),树上的每一个节点包含了一个Memcg在这个分区所用内存的LRU链表。只有内存使用超过了softlimit的Memcg在该分区的LRU链表才会存在于这棵红黑树上,且这棵红黑树的排序依据就是该LRU链表所属的Memcg超过了softlimit限制的大小。一种可能的内存回收方式为,对每一个分区进行一次软限制回收(softlimit回收),即对最需要进行回收的Memcg(即超过softlimit限制的Memcg),依据所述softlimit tree找到该Memcg在该分区上的LRU链表,对该LRU链表进行回收。这里,对分区进行softlimit回收时选取的LRU链表的选取依据是该LRU链表所属的memcg超过softlimit的大小。然而,一个Memcg中的进程所使用的内存可能分布在不同的内存节点的不同分区上,所以对于任意一个进行内存回收的分区来说,它进行内存回收时所述选择的LRU链表所属的Memcg,不一定在当前分区上使用了较多的内存,可能只使用了很少的内存。而内存回收策略为了确保回收到指定数量的内存,如果选择的LRU链表上没有多少可被回收的内存,这就可能导致内核就会浪费很多时间在遍历LRU链表和尝试内存回收上,导致效率的降低。简单的说,就是进行内存回收所选择的LRU链表并不是一个合适的LRU链表。
在本发明第二实施例中,改变了现有技术中对softlimit tree的构建依据,将构建依据从现有技术中的LRU链表所属Memcg超过了softlimit限制的大小改变为LRU链表的回收权重。也就是说,软限制树softlimit tree根据LRU链表的回收权重大小进行排序。较佳地,软限制树softlimit tree由回收权重大于基准回收权重的LRU链表组成。这样,在进行步骤S202时,选择的回收的LRU链表将是当前分区的softlimit tree中回收权重最高的LRU链表也就是最应该被回收的LRU链表,而不是整个系统中最应该被回收的Memcg在该分区zone上的LRU链表,这样进一步提高了内存回收的效率。
需要说明的是,当在软限制树种确定了需要进行回收的LRU链表后,即对其进行内存回收。具体实现时,可以每次从LRU链表中获取一定数量的内存页,然后调用shrink_list接口来回收所述内页。终止对该LRU链表的回收的判定依据可以包括:回收的页面大于第一阈值,或者该LRU链表已无可回收内存,或者回收后LRU链表所属Memcg的内存低于softlimit的限制,或者内存回收循环的次数大于第二阈值等,本发明对此不进行限定。
S203,获取所述分区中具有最高回收权重的链表,对所述链表进行内存回收,并更新所述链表的回收权重。
在步骤S203中,与第一实施例相同,是从内存维护的memcg结构树中获取当前分区中具有最高回收权重的链表的。这与步骤S202从softlimit tree上获取LRU链表有所不同。
步骤S203与步骤S202对LRU链表回收终止的依据也有所不同。在步骤S203中,终止对该LRU链表的回收的判定依据可以包括:回收的页面大于第一阈值,或者该LRU链表已无可回收内存。这里第一阈值为设定的内存页数量。与第一实施例相同,对LRU链表进行回收时,为了达到更好的回收效果,针对不同回收权重的LRU链表,设置不同的回收页数量。具体实现时,获取与所述LRU链表的回收权重对应的回收页数量,对所述LRU链表回收与所述回收页数量对应的内存页。
进一步的,在获取所述分区中具有最高回收权重的链表之后,在对所述链表进行内存回收之前,所述方法还包括:判断所述链表对应的回收权重是否小于基准回收权重,获取第三判断结果;当所述第三判断结果表明所述链表对应的回收权重不小于基准回收权重时,对所述链表进行内存回收;当所述第三判断结果表明所述链表对应的回收权重小于基准回收权重时,进入确定需要进行内存回收的内存节点的一个未处理分区的步骤。这样,如果当前分区中的具有最高回收权重的LRU链表对应回收权重小于基准回收权重时,则说明不需要对当前分区的LRU链表进行回收,则跳过对当前分区进行回收的步骤,选取下一个未处理分区进行内存回收处理,这样可以提高回收效率。
S204,判断当前分区中具有最高回收权重的链表对应的回收权重是否小于基准回收权重,如果是,进入步骤S205;如果否,进入步骤S203。
S205,判断是否遍历当前节点的所有分区,如果是,进入步骤S206;如果否,进入步骤S201,获取下一个未处理分区。
S206,结束当前节点的内存回收。
在本发明第二实施例中,改变了现有技术对软限制树的构建依据,改进了进行软限制回收时选取的LRU链表不合理导致的回收效率低的问题,根据回收权重构建软限制树,使得进行软限制回收时选取的LRU链表为具有最高回收权重且最需要进行回收的链表,提高了内存回收的效率。
此外,改变了现有技术遍历回收分区的所有LRU链表可能导致的资源浪费和系统性能下降的问题,仅对回收权重大于基准回收权重的LRU链表进行内存回收,减少了全局内存回收时对不必要的LRU链表的回收导致的资源浪费和系统性能下降的问题,提高了内存回收效率并减少了缓存命中率降低的出现。
另一方面,本发明针对不同回收权重的LRU链表设置不同的回收策略,即回收不同数量的内存页,改进了现有技术对所有LRU链表执行相同的回收策略导致的回收效果不佳的问题。
下面以Linux操作系统为例,对本发明一个具体实施方式进行介绍。
假设一台部署了Linux操作系统的服务器,开启了CONFIG_MEMCG编译选项,并运行着各种应用程序。
S301,计算当前系统中各个LRU链表上的回收权重,设置基准回收权重。
S302,内核的守护进程触发了一次全局内存回收,PFRA(The Page FrameReclaim Algorithm,即页框回收算法,是Linux内核的页框回收算法的统称)开始生效。
S303,PFRA开始回收内存节点1上的内存,并选择第一个分区进行回收。
S304,PFRA选择当前分区的softlimit tree上回收权重最高的链表进行softlimit回收。
S305,PFRA依次选择当前分区上回收权重最高的LRU链表,并针对其回收权重设置不同的回收页框数,进行内存回收,回收后更新该链表的回收权重。
S306,依次执行步骤S304,直到所选择的LRU链表的回收权重已经低于回收权重基线,则跳出循环,继续对下一个分区进行内存回收。
S307,对该内存节点上所有分区执行完内存回收后,进行下一个内存节点的回收,重复执行步骤S303至步骤S306,直到执行完所有内存节点的回收。
S308,一次全局内存回收结束,守护进程等待触发下一次全局内存回收。
参见图3,为本发明实施例提供的内存回收装置示意图。
一种内存回收装置,所述装置包括:
分区确定单元401,用于当需要进行内存回收时,确定需要进行内存回收的内存节点的一个未处理分区作为当前分区;
第一链表回收单元402,用于获取所述当前分区中具有最高回收权重的链表,对所述链表进行内存回收,并更新所述链表的回收权重;
第一判断单元403,用于判断当前分区中具有最高回收权重的链表对应的回收权重是否小于基准回收权重,获取第一判断结果;当所述第一判断结果表明当前分区中具有最高回收权重的链表对应的回收权重不小于基准回收权重时,进入第一链表回收单元;当所述第一判断结果表明当前分区中具有最高回收权重的链表对应的回收权重小于基准回收权重时,进入第二判断单元。
第二判断单元404,用于判断当前节点是否还有未处理分区,获取第二判断结果;当所述第二判断结果表明还有未处理分区时,进入分区确定单元,当所述第二判断结果表明没有未处理分区时,结束对当前内存节点的回收。
优选地,所述回收权重与页高速缓存命中率、链表的总长度、非活跃链表的长度、链表所属的内存控制子系统超出软限制阈值的数值中的一种或多种因素相关联。
优选地,所述第一链表回收单元具体用于:
获取与所述链表对应的回收权重相对应的回收页数量,对所述链表回收与所述回收页数量对应的内存页。
优选地,所述第一链表回收单元包括:
回收单元,用于获取所述当前分区中具有最高回收权重的链表,对所述链表进行内存回收;
更新单元,用于更新所述链表的回收权重;
则所述第一链表回收单元还包括:
第三判断单元,用于判断所述链表对应的回收权重是否小于基准回收权重,获取第三判断结果;当所述第三判断结果表明所述链表对应的回收权重不小于基准回收权重时,进入所述回收单元触发对所述链表进行内存回收;当所述第三判断结果表明所述链表对应的回收权重小于基准回收权重时,进入分区确定单元。
优选地,所述装置还包括:
第二链表回收单元,用于获取当前分区在软限制树softlimit tree上具有最高回收权重的链表,对所述链表进行内存回收,并更新所述链表的回收权重;其中,所述软限制树softlimit tree根据链表的回收权重大小进行排序。
优选地,所述软限制树softlimit tre e包含回收权重大于基准回收权重的链表。
需要说明的是,由于对方法实施例进行详细的阐述,对装置实施例的描述较为简单,本领域技术人员可以理解的是,可以参照方法实施例构造本发明的装置实施例。本领域技术人员在不付出创造性劳动下获取的其他实现方式均属于本发明的保护范围。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (12)

1.一种内存回收方法,其特征在于,所述方法包括:
当需要进行内存回收时,确定需要进行内存回收的内存节点的一个未处理分区作为当前分区;
获取所述当前分区中具有最高回收权重的链表,对所述链表进行内存回收,并更新所述链表的回收权重;
判断当前分区中具有最高回收权重的链表对应的回收权重是否小于基准回收权重,获取第一判断结果;
当所述第一判断结果表明当前分区中具有最高回收权重的链表对应的回收权重不小于基准回收权重时,进入所述获取所述当前分区中具有最高回收权重的链表,对所述链表进行内存回收的步骤;
当所述第一判断结果表明当前分区中具有最高回收权重的链表对应的回收权重小于基准回收权重时,判断是否还有未处理分区,获取第二判断结果;当所述第二判断结果表明还有未处理分区时,进入所述确定需要回收的内存节点的一个未处理分区作为当前分区的步骤,当所述第二判断结果表明没有未处理分区时,结束对当前内存节点的回收。
2.根据权利要求1所述的方法,其特征在于,所述回收权重与页高速缓存命中率、链表的总长度、非活跃链表的长度、链表所属的内存控制子系统超出软限制阈值的数值中的一种或多种因素相关联。
3.根据权利要求1所述的方法,其特征在于,所述对所述链表进行内存回收包括:
获取与所述链表对应的回收权重相对应的回收页数量,对所述链表回收与所述回收页数量对应的内存页。
4.根据权利要求1所述的方法,其特征在于,在获取所述当前分区中具有最高回收权重的链表之后,在对所述链表进行内存回收之前,所述方法还包括:
判断所述链表对应的回收权重是否小于基准回收权重,获取第三判断结果;
当所述第三判断结果表明所述链表对应的回收权重不小于基准回收权重时,触发对所述链表进行内存回收的步骤;
当所述第三判断结果表明所述链表对应的回收权重小于基准回收权重时,进入确定需要进行内存回收的内存节点的一个未处理分区作为当前分区的步骤。
5.根据权利要求1所述的方法,其特征在于,在获取所述当前分区中具有最高回收权重的链表之前,所述方法还包括:
获取当前分区在软限制树softlimit tree上具有最高回收权重的链表,对所述链表进行内存回收,并更新所述链表的回收权重;其中,所述软限制树softlimit tree根据链表的回收权重大小进行排序。
6.根据权利要求5所述的方法,其特征在于,所述软限制树softlimittree包含回收权重大于基准回收权重的链表。
7.一种内存回收装置,其特征在于,所述装置包括:
分区确定单元,用于当需要进行内存回收时,确定需要进行内存回收的内存节点的一个未处理分区作为当前分区;
第一链表回收单元,用于获取所述当前分区中具有最高回收权重的链表,对所述链表进行内存回收,并更新所述链表的回收权重;
第一判断单元,用于判断当前分区中具有最高回收权重的链表对应的回收权重是否小于基准回收权重,获取第一判断结果;当所述第一判断结果表明当前分区中具有最高回收权重的链表对应的回收权重不小于基准回收权重时,进入第一链表回收单元;当所述第一判断结果表明当前分区中具有最高回收权重的链表对应的回收权重小于基准回收权重时,进入第二判断单元;
第二判断单元,用于判断当前节点是否还有未处理分区,获取第二判断结果;当所述第二判断结果表明还有未处理分区时,进入分区确定单元,当所述第二判断结果表明没有未处理分区时,结束对当前内存节点的回收。
8.根据权利要求7所述的装置,其特征在于,所述回收权重与页高速缓存命中率、链表的总长度、非活跃链表的长度、链表所属的内存控制子系统超出软限制阈值的数值中的一种或多种因素相关联。
9.根据权利要求7所述的装置,其特征在于,所述第一链表回收单元具体用于:
获取与所述链表对应的回收权重相对应的回收页数量,对所述链表回收与所述回收页数量对应的内存页。
10.根据权利要求7所述的装置,其特征在于,所述第一链表回收单元包括:
回收单元,用于获取所述当前分区中具有最高回收权重的链表,对所述链表进行内存回收;
更新单元,用于更新所述链表的回收权重;
所述第一链表回收单元还包括:
第三判断单元,用于判断所述链表对应的回收权重是否小于基准回收权重,获取第三判断结果;当所述第三判断结果表明所述链表对应的回收权重不小于基准回收权重时,进入所述回收单元触发对所述链表进行内存回收;当所述第三判断结果表明所述链表对应的回收权重小于基准回收权重时,进入分区确定单元。
11.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第二链表回收单元,用于获取当前分区在软限制树softlimit tree上具有最高回收权重的链表,对所述链表进行内存回收,并更新所述链表的回收权重;其中,所述软限制树softlimit tree根据链表的回收权重大小进行排序。
12.根据权利要求11所述的装置,其特征在于,所述软限制树softlimittree包含回收权重大于基准回收权重的链表。
CN201310094881.3A 2013-03-22 2013-03-22 一种内存回收方法和装置 Expired - Fee Related CN103150259B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310094881.3A CN103150259B (zh) 2013-03-22 2013-03-22 一种内存回收方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310094881.3A CN103150259B (zh) 2013-03-22 2013-03-22 一种内存回收方法和装置

Publications (2)

Publication Number Publication Date
CN103150259A true CN103150259A (zh) 2013-06-12
CN103150259B CN103150259B (zh) 2016-03-30

Family

ID=48548353

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310094881.3A Expired - Fee Related CN103150259B (zh) 2013-03-22 2013-03-22 一种内存回收方法和装置

Country Status (1)

Country Link
CN (1) CN103150259B (zh)

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104516828A (zh) * 2013-09-27 2015-04-15 伊姆西公司 用于移除缓存数据的方法和设备
CN105354079A (zh) * 2015-09-29 2016-02-24 上海斐讯数据通信技术有限公司 提高系统内存利用率的方法
WO2016078388A1 (zh) * 2014-11-21 2016-05-26 中兴通讯股份有限公司 一种数据老化方法及装置
CN107885666A (zh) * 2016-09-28 2018-04-06 华为技术有限公司 一种内存管理方法和装置
CN108121605A (zh) * 2017-12-31 2018-06-05 武汉烽火云创软件技术有限公司 一种基于yarn的cgroup内存控制优化方法及系统
CN108228342A (zh) * 2017-08-10 2018-06-29 珠海市魅族科技有限公司 终端设备控制方法及装置、终端设备及计算机可读存储介质
CN108228343A (zh) * 2017-08-21 2018-06-29 珠海市魅族科技有限公司 内存回收方法及装置、计算机装置及计算机可读存储介质
CN108664411A (zh) * 2018-05-03 2018-10-16 晶晨半导体(上海)股份有限公司 一种内存链表及内存管理的优化方法
WO2019000644A1 (zh) * 2017-06-26 2019-01-03 珠海市魅族科技有限公司 内存回收方法及装置、计算机装置及计算机可读存储介质
WO2019137252A1 (zh) * 2018-01-10 2019-07-18 Oppo广东移动通信有限公司 内存处理方法、电子设备、计算机可读存储介质
CN110096357A (zh) * 2019-03-29 2019-08-06 北京奇安信科技有限公司 一种分布式系统的内存资源清理方法及装置
CN110209489A (zh) * 2018-02-28 2019-09-06 贵州白山云科技股份有限公司 一种适用于内存页结构的内存管理方法及装置
CN110287160A (zh) * 2019-05-31 2019-09-27 广东睿江云计算股份有限公司 一种缓存空间清理方法及装置
CN110532198A (zh) * 2019-09-09 2019-12-03 成都西山居互动娱乐科技有限公司 一种存储空间分配的方法及装置
CN111090389A (zh) * 2019-10-31 2020-05-01 苏州浪潮智能科技有限公司 一种缓存空间的释放方法、设备以及存储介质
CN111490906A (zh) * 2020-06-29 2020-08-04 武汉思普崚技术有限公司 一种网关设备策略的分析方法、装置及可读存储介质
CN113296937A (zh) * 2021-02-10 2021-08-24 阿里巴巴集团控股有限公司 分布式系统内存回收的方法、装置及分布式系统
CN115757193A (zh) * 2019-11-15 2023-03-07 荣耀终端有限公司 一种内存的管理方法及电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6282605B1 (en) * 1999-04-26 2001-08-28 Moore Computer Consultants, Inc. File system for non-volatile computer memory
US20030188120A1 (en) * 2002-03-28 2003-10-02 Fujitsu Limited Memory allocation method and program thereof
CN101833512A (zh) * 2010-04-22 2010-09-15 中兴通讯股份有限公司 一种内存回收方法及其装置
CN102968378A (zh) * 2012-10-23 2013-03-13 深圳市融创天下科技股份有限公司 一种内存分配和释放的方法、装置及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6282605B1 (en) * 1999-04-26 2001-08-28 Moore Computer Consultants, Inc. File system for non-volatile computer memory
US20030188120A1 (en) * 2002-03-28 2003-10-02 Fujitsu Limited Memory allocation method and program thereof
CN101833512A (zh) * 2010-04-22 2010-09-15 中兴通讯股份有限公司 一种内存回收方法及其装置
CN102968378A (zh) * 2012-10-23 2013-03-13 深圳市融创天下科技股份有限公司 一种内存分配和释放的方法、装置及系统

Cited By (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104516828B (zh) * 2013-09-27 2018-01-09 伊姆西公司 用于移除缓存数据的方法和设备
CN104516828A (zh) * 2013-09-27 2015-04-15 伊姆西公司 用于移除缓存数据的方法和设备
WO2016078388A1 (zh) * 2014-11-21 2016-05-26 中兴通讯股份有限公司 一种数据老化方法及装置
CN105354079B (zh) * 2015-09-29 2019-06-07 上海斐讯数据通信技术有限公司 提高系统内存利用率的方法
CN105354079A (zh) * 2015-09-29 2016-02-24 上海斐讯数据通信技术有限公司 提高系统内存利用率的方法
US10990540B2 (en) 2016-09-28 2021-04-27 Huawei Technologies Co., Ltd. Memory management method and apparatus
US11531625B2 (en) 2016-09-28 2022-12-20 Huawei Technologies Co., Ltd. Memory management method and apparatus
CN107885666A (zh) * 2016-09-28 2018-04-06 华为技术有限公司 一种内存管理方法和装置
EP3514689A4 (en) * 2016-09-28 2019-09-11 Huawei Technologies Co., Ltd. METHOD AND APPARATUS FOR MEMORY MANAGEMENT
WO2019000644A1 (zh) * 2017-06-26 2019-01-03 珠海市魅族科技有限公司 内存回收方法及装置、计算机装置及计算机可读存储介质
CN108228342A (zh) * 2017-08-10 2018-06-29 珠海市魅族科技有限公司 终端设备控制方法及装置、终端设备及计算机可读存储介质
CN108228342B (zh) * 2017-08-10 2021-02-09 珠海市魅族科技有限公司 终端设备控制方法及装置、终端设备及计算机可读存储介质
CN108228343B (zh) * 2017-08-21 2020-11-17 珠海市魅族科技有限公司 内存回收方法及装置、计算机装置及计算机可读存储介质
CN108228343A (zh) * 2017-08-21 2018-06-29 珠海市魅族科技有限公司 内存回收方法及装置、计算机装置及计算机可读存储介质
CN108121605A (zh) * 2017-12-31 2018-06-05 武汉烽火云创软件技术有限公司 一种基于yarn的cgroup内存控制优化方法及系统
WO2019137252A1 (zh) * 2018-01-10 2019-07-18 Oppo广东移动通信有限公司 内存处理方法、电子设备、计算机可读存储介质
CN110209489A (zh) * 2018-02-28 2019-09-06 贵州白山云科技股份有限公司 一种适用于内存页结构的内存管理方法及装置
CN108664411A (zh) * 2018-05-03 2018-10-16 晶晨半导体(上海)股份有限公司 一种内存链表及内存管理的优化方法
CN110096357A (zh) * 2019-03-29 2019-08-06 北京奇安信科技有限公司 一种分布式系统的内存资源清理方法及装置
CN110287160B (zh) * 2019-05-31 2023-09-12 广东睿江云计算股份有限公司 一种缓存空间清理方法及装置
CN110287160A (zh) * 2019-05-31 2019-09-27 广东睿江云计算股份有限公司 一种缓存空间清理方法及装置
CN110532198B (zh) * 2019-09-09 2023-08-08 成都西山居互动娱乐科技有限公司 一种存储空间分配的方法及装置
CN110532198A (zh) * 2019-09-09 2019-12-03 成都西山居互动娱乐科技有限公司 一种存储空间分配的方法及装置
CN111090389B (zh) * 2019-10-31 2021-06-29 苏州浪潮智能科技有限公司 一种缓存空间的释放方法、设备以及存储介质
CN111090389A (zh) * 2019-10-31 2020-05-01 苏州浪潮智能科技有限公司 一种缓存空间的释放方法、设备以及存储介质
CN115757193A (zh) * 2019-11-15 2023-03-07 荣耀终端有限公司 一种内存的管理方法及电子设备
CN115757193B (zh) * 2019-11-15 2023-11-03 荣耀终端有限公司 一种内存的管理方法及电子设备
CN111490906A (zh) * 2020-06-29 2020-08-04 武汉思普崚技术有限公司 一种网关设备策略的分析方法、装置及可读存储介质
CN113296937A (zh) * 2021-02-10 2021-08-24 阿里巴巴集团控股有限公司 分布式系统内存回收的方法、装置及分布式系统

Also Published As

Publication number Publication date
CN103150259B (zh) 2016-03-30

Similar Documents

Publication Publication Date Title
CN103150259B (zh) 一种内存回收方法和装置
Lau et al. Transition phase classification and prediction
Xu et al. Software bloat analysis: Finding, removing, and preventing performance problems in modern large-scale object-oriented applications
CN102722417B (zh) 一种扫描任务的分配方法和装置
Zheng et al. Hierarchical load balancing for charm++ applications on large supercomputers
Zhang et al. FinePar: Irregularity-aware fine-grained workload partitioning on integrated architectures
Rintanen Engineering efficient planners with SAT
CN103425536B (zh) 一种面向分布式系统性能测试的测试资源管理方法
CN105930186B (zh) 多cpu的软件加载方法及基于多cpu的软件加载装置
Cong et al. Optimizing large-scale graph analysis on multithreaded, multicore platforms
CN113807046B (zh) 一种测试激励优化回归验证方法、系统及介质
Su et al. Critical path-based thread placement for numa systems
Campoy et al. Cache contents selection for statically-locked instruction caches: An algorithm comparison
Henzinger et al. Scheduling large jobs by abstraction refinement
CN103699435A (zh) 负载均衡方法及装置
Pan et al. Hypervisor support for efficient memory de-duplication
Aouad et al. A tabu search heuristic for scratch-pad memory management
WO2020248512A1 (zh) 一种构造终端应用行为的运行时模型的方法
Caselli et al. Experiences on SIMD massively parallel GSPN analysis
St. John et al. Massively parallel breadth first search using a tree-structured memory model
CN100530139C (zh) 增量压缩堆时用于更新引用的系统和方法
Marconi et al. A novel fast online placement algorithm on 2D partially reconfigurable devices
Park et al. Automating {Context-Based} Access Pattern Hint Injection for System Performance and Swap Storage Durability
Adinew et al. Spark performance optimization analysis in memory tuning on gc overhead for big data analytics
CN106293878B (zh) 一种在jvm中动态计算对象重用价值的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160330

Termination date: 20180322

CF01 Termination of patent right due to non-payment of annual fee