CN103559137B - 一种内存分配方法及装置 - Google Patents
一种内存分配方法及装置 Download PDFInfo
- Publication number
- CN103559137B CN103559137B CN201310292099.2A CN201310292099A CN103559137B CN 103559137 B CN103559137 B CN 103559137B CN 201310292099 A CN201310292099 A CN 201310292099A CN 103559137 B CN103559137 B CN 103559137B
- Authority
- CN
- China
- Prior art keywords
- rank
- memory block
- block group
- memory
- allocated
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 56
- 230000008569 process Effects 0.000 claims abstract description 8
- 238000001514 detection method Methods 0.000 claims description 7
- 238000012360 testing method Methods 0.000 claims description 3
- 102000010498 Receptor Activator of Nuclear Factor-kappa B Human genes 0.000 abstract description 26
- 108010038036 Receptor Activator of Nuclear Factor-kappa B Proteins 0.000 abstract description 26
- 238000010586 diagram Methods 0.000 description 6
- 238000013467 fragmentation Methods 0.000 description 4
- 238000006062 fragmentation reaction Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 239000012141 concentrate Substances 0.000 description 3
- 230000006872 improvement Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Memory System (AREA)
Abstract
本发明提出一种内存分配方法及装置,其中方法包括:记录每个内存块组所属的内存模组(RANK);按照最小空闲率优先(Min Free)方式或近期最少使用(LRU)方式排列系统中的RANK;确定需要分配的内存大小,针对排列后的每个RANK依次执行步骤A:A、采用伙伴系统(BUDDY)算法在属于所述RANK的内存块组中查找可以分配的内存块组,如果存在可以分配的内存块组,则进行分配,并记录分配之后产生的新的内存块组所属的RANK,结束当前流程;如果不存在可以分配的内存块组,则针对下一RANK重复执行步骤A,直至内存块组分配成功。本发明能够使被分配的内存块组尽可能地属于较少的RANK,从而便于内存系统的功耗控制。
Description
技术领域
本发明涉及计算机内存管理技术领域,尤其涉及一种内存分配方法及装置。
背景技术
伙伴(BUDDY)系统算法,由于其优秀的分配效率和反碎片特性,成为当前linux内存管理系统的经典算法。它把内存单元划分成了多个块组(PageBlock),即free_area[0…max_oder],各个块组的大小以页面(Page)为单位分别为2的0次幂到2的max_order次幂。例如:假使max_order=10,则各个块组的大小分别为:1,2,4,8,…,1024。
每个大小相同的块组,用链表链接起来进行管理。当需要分配内存的时候,系统会从最接近且不小于所要分配内存的那个块组中进行分配,并将能够剩余的部分拆分成更小的块组进行管理。如图1为现有技术中伙伴系统算法的结构示意图。
例如:若需分配的内存大小为6个页面,则伙伴系统算法则会从大小为2的3次幂(大小为8)的块组中获取相应内存。
当系统中的邻近的块组中没有空闲的页面可供进行分配的时候,就会从更大一级的块组中查找,把余下的内存划分成更小的块组进行管理。
例如:当需分配的内存大小为6个页面,如果与其最接近的2的3次幂(大小为8)的块组中没有相应的页面可供分配,而若2的4次幂(大小为16)的块组中有适合分配的页面,则将优先从该块组进行分配,并将剩余的页面(大小为10)划分为:8和2两个块组,分别插入2的3次幂,2的1次幂的块组链表中进行管理。
在内存系统中经常包括多个内存模组(RANK),系统中的内存块组分别属于不同的RANK。现有的伙伴系统算法并不考虑这一特点,在分配内存块组时没有加以区分,使得各个RANK中内存块组在统计学上被分配到的概率相等,这种内存分配方式不便于内存系统的功耗控制。
发明内容
本发明提供了一种内存分配方法,能够在分配内存块组时,使被分配的内存块组尽可能地集中于较少的RANK,从而便于内存系统的功耗控制。
本发明还提供了一种内存分配装置,能够在分配内存块组时,使被分配的内存块组尽可能地集中于较少的RANK,从而便于内存系统的功耗控制。
本发明的技术方案是这样实现的:
一种内存分配方法,包括:
记录每个内存块组所属的RANK;
按照最小空闲率优先(Min Free)方式或近期最少使用(LRU)方式排列系统中的RANK;
确定需要分配的内存大小,针对排列后的每个RANK依次执行步骤A:
A、采用BUDDY算法在属于所述RANK的内存块组中查找可以分配的内存块组,如果存在可以分配的内存块组,则进行分配,并记录分配之后产生的新的内存块组所属的RANK,结束当前流程;如果不存在可以分配的内存块组,则针对下一RANK重复执行步骤A,直至内存块组分配成功。
上述方法可以进一步包括:
检测各个RANK所包含的内存块组的分配情况,如果RANK所包括的所有内存块组均为空闲,则将所述RANK的状态设置为节能模式;否则,将该RANK的状态设置为正常工作模式。
上述方法中,BUDDY算法为:查找与需要分配的内存大小最接近并且不小于需要分配的内存大小的内存块组,如果查找到,则采用该内存块组进行分配,并将分配后剩余的部分划分为新的内存块组。
上述方法中,按照Min free方式排列系统中的RANK可以为:按照利用率由大到小的顺序排列RANK。
上述方法中,按照LRU方式排列系统中的RANK可以为:按照访问时间由近到远的顺序排列RANK。
一种内存分配装置,包括:
内存分配模块,用于记录每个内存块组所属的RANK;按照Min Free方式或LRU方式排列系统中的RANK;确定需要分配的内存大小,针对排列后的每个RANK依次执行步骤A:A、采用伙伴系统BUDDY算法在属于所述RANK的内存块组中查找可以分配的内存块组,如果存在可以分配的内存块组,则进行分配,并记录分配之后产生的新的内存块组所属的RANK,结束当前流程;如果不存在可以分配的内存块组,则针对下一RANK重复执行步骤A,直至内存块组分配成功。
上述装置可以进一步包括:
内存使用检测模块,用于检测各个RANK所包含的内存块组的分配情况,并将检测结果通知内存功耗调节模块;
内存功耗调节模块,用于根据所述检测结果,判断RANK所包括的内存块组是否均为空闲,如果是,则将所述RANK的状态设置为节能模式;否则,将该RANK的状态设置为正常工作模式。
上述装置中,伙伴系统算法为:查找与需要分配的内存大小最接近并且不小于需要分配的内存大小的内存块组,如果查找到,则采用该内存块组进行分配,并将分配后剩余的部分划分为新的内存块组。
上述装置中,按照Min Free方式排列系统中的RANK可以为:按照利用率由大到小的顺序排列RANK。
上述装置中,按照LRU方式排列系统中的RANK可以为:按照访问时间由近到远的顺序排列RANK。
可见,本发明提出内存分配方法和装置,将系统中的各个RANK按照一定的顺序排列,在分配内存块组时,优先分配顺序靠前的RANK中的内存块组,从而使被分配的内存块组尽可能地集中于较少的RANK,便于内存系统的功耗控制。
附图说明
图1为现有技术中伙伴系统算法的结构示意图;
图2为本发明提出的内存分配算法的结构示意图;
图3为本发明提出的内存分配装置结构示意图;
图4为采用本发明分配内存的RANK空闲度对比结果示意图。
具体实施方式
本发明提出一种内存分配方法,使被分配的内存块组尽可能地属于较少的RANK。本发明是对现有的伙伴系统算法的改进,称为RANK敏感的伙伴系统算法(RS-BUDDY)。
如图2为本发明提出的内存分配算法的结构示意图。
本发明添加了一个记录内存块组归属的空间,该空间存储了内存块组所属RANK信息。
按照最小空闲率优先(Min Free)方式或者近期最少使用(LRU)方式排列系统中的RANK;
其中,Min Free方式为:按照RANK利用率从大到小排列,其目的在于促使利用率最大的RANK优先分配,从而使更多的RANK处于空闲状态。
LRU方式为:按照最近使用的RANK排列,其目的在于充分挖掘访存行为的局部性,在一段时间内促使分配相对集中在固定的RANK内。
按照上述排列的顺序优先从位置靠前的RANK中分配内存块组。首先查找第一个RANK中是否存在可以分配的内存块组,如果存在,则采用该内存块组进行分配,并将分配剩余的部分划分为新的内存块组,记录新的内存块组所属的RANK;如果不存在,则继续查找第二个RANK,如果仍不存在则继续查找第三个RANK,……,直至内存块组分配成功。
针对每一个RANK,分配内存块组的方式采用伙伴系统算法。
具体地,本发明提出的内存分配方法可以包括:
记录每个内存块组所属的RANK;
按照Min Free方式或LRU方式排列系统中的RANK;
确定需要分配的内存大小,针对排列后的每个RANK依次执行步骤A:
A、采用伙伴系统算法在属于所述RANK的内存块组中查找可以分配的内存块组,如果存在可以分配的内存块组,则进行分配,并记录分配之后产生的新的内存块组所属的RANK,结束当前流程;如果不存在可以分配的内存块组,则针对下一RANK重复执行步骤A,直至内存块组分配成功。
上述方法中,所述伙伴系统算法为:查找与需要分配的内存大小最接近并且不小于需要分配的内存大小的内存块组,如果查找到,则采用该内存块组进行分配,并将分配后剩余的部分划分为新的内存块组。
按照Min Free方式排列系统中的RANK为:按照利用率由大到小的顺序排列RANK。
按照LRU方式排列系统中的RANK为:按照访问时间由近到远的顺序排列RANK。
另外,在内存块组被分配成功之后,或者内存块组使用完毕被释放之后,由于其所属RANK的使用情况发生变化,因此需要按照Min Free方式或LRU方式重新排列系统中的RANK;下次分配内存块组时按照新的顺序进行分配。
通过上述过程,可以保证被分配的内存块组集中于相对较少的RANK中。这样,可以将未使用的RANK的状态设置为节能模式,将使用的RANK的状态设置为正常工作模式,从而节约内存功耗。
具体地,上述方法可以进一步包括:
检测各个RANK所包含的内存块组的分配情况,如果RANK所包括的所有内存块组均为空闲,则将所述RANK的状态设置为节能模式;否则,将该RANK的状态设置为正常工作模式。
在具体实现时,可以在内存块组被分配成功之后、或者内存块组使用完毕被释放之后,检测该内存块组所属RANK的使用情况,如果该RANK由部分或全部内存块组被分配转变为全部内存块组空闲,则将该RANK的状态由正常工作模式改变为节能模式;如果该RANK由全部内存块组空闲转变为部分或全部内存块组被分配,则将该RANK的状态由节能模式改变为正常工作模式。
本发明还提出一种内存分配装置,如图3为该装置结构示意图,包括:
内存分配模块301,用于记录每个内存块组所属的RANK;按照Min Free方式或LRU方式排列系统中的RANK;确定需要分配的内存大小,针对排列后的每个RANK依次执行步骤A:A、采用伙伴系统BUDDY算法在属于所述RANK的内存块组中查找可以分配的内存块组,如果存在可以分配的内存块组,则进行分配,并记录分配之后产生的新的内存块组所属的RANK,结束当前流程;如果不存在可以分配的内存块组,则针对下一RANK重复执行步骤A,直至内存块组分配成功。
上述装置可以进一步包括:
内存使用检测模块302,用于检测各个RANK所包含的内存块组的分配情况,并将检测结果通知内存功耗调节模块303;
内存功耗调节模块303,用于根据所述检测结果,判断RANK所包括的内存块组是否均为空闲,如果是,则将所述RANK的状态设置为节能模式;否则,将该RANK的状态设置为正常工作模式。
上述装置中,伙伴系统算法为:查找与需要分配的内存大小最接近并且不小于需要分配的内存大小的内存块组,如果查找到,则采用该内存块组进行分配,并将分配后剩余的部分划分为新的内存块组。
上述装置中,按照Min free方式排列系统中的RANK可以为:按照利用率由大到小的顺序排列RANK。
上述装置中,按照LRU方式排列系统中的RANK可以为:按照访问时间由近到远的顺序排列RANK。
以上即为本发明提出的内存分配的方法及装置。以下使用多种benchmark本发明提出的方法进行测试。包括:mibench中的automotive领域的bitcount、qsort;consumer领域的lame、tiffmedian;office领域的rsynth;telecom领域的adpcm、fft;以及security领域的sha;与spec2000中的gzip与gcc,共计10种。
测试方法是使用本发明提出的RS-BUDDY算法运行一段程序,在程序运行一段时间后计算出当前系统空闲RANK的数量,并对比使用RS-BUDDY算法相对普通的伙伴系统算法时,空闲内存RANK增加的比率。对实验数据进行归一化后,对比结果如图4所示。
通过实验数据表明,RS-BUDDY算法对于大部分应用,能够有效提升RANK空闲度20%以上,有些应用甚至能达到30%。
对于反碎片特性:
选取当前比较通用的衡量碎片的标准:
实验统计表明,本发明提出的RS-BUDDY算法相对现有的BUDDY算法而言,外部碎片相对变化率仅为0.1%。
对于功耗控制效果:
通过实验跟踪内存芯片的功耗表明:在使用本发明后,在S5PV310处理器平台,1G DDR内存(4个RANK)的Linux系统进行了开机启动后运行同样的测试程序,经测试发现系统的功耗节省可达18%。
综上可见,本发明提出的内存分配方法及装置,将系统中的各个RANK按照Min Free或LRU的方式排列,在分配内存块组时,优先分配顺序靠前的RANK中的内存块组,从而使被分配的内存块组尽可能地属于较少的RANK,便于内存系统的功耗控制。当RANK所包括的所有内存块组均空闲时,可以将该RANK的状态设置为节能模式,从而节约内存功耗。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (10)
1.一种内存分配方法,其特征在于,所述方法包括:
记录每个内存块组所属的内存模组RANK;
按照最小空闲率优先Min Free方式或近期最少使用LRU方式排列系统中的RANK;
确定需要分配的内存大小,针对排列后的每个RANK依次执行步骤A:
A、采用伙伴系统BUDDY算法在属于所述RANK的内存块组中查找可以分配的内存块组,如果存在可以分配的内存块组,则进行分配,并记录分配之后产生的新的内存块组所属的RANK,结束当前流程;如果不存在可以分配的内存块组,则针对下一RANK重复执行步骤A,直至内存块组分配成功。
2.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:
检测各个RANK所包含的内存块组的分配情况,如果RANK所包括的所有内存块组均为空闲,则将所述RANK的状态设置为节能模式;否则,将该RANK的状态设置为正常工作模式。
3.根据权利要求1或2所述的方法,其特征在于,所述伙伴系统算法为:查找与需要分配的内存大小最接近并且不小于需要分配的内存大小的内存块组,如果查找到,则采用该内存块组进行分配,并将分配后剩余的部分划分为新的内存块组。
4.根据权利要求1或2所述的方法,其特征在于,所述按照Min free方式排列系统中的RANK为:按照利用率由大到小的顺序排列RANK。
5.根据权利要求1或2所述的方法,其特征在于,所述按照LRU方式排列系统中的RANK为:按照访问时间由近到远的顺序排列RANK。
6.一种内存分配装置,其特征在于,所述装置包括:
内存分配模块,用于记录每个内存块组所属的RANK;按照最小空闲率优先Min Free方式或近期最少使用LRU方式排列系统中的RANK;确定需要分配的内存大小,针对排列后的每个RANK依次执行步骤A:A、采用伙伴系统BUDDY算法在属于所述RANK的内存块组中查找可以分配的内存块组,如果存在可以分配的内存块组,则进行分配,并记录分配之后产生的新的内存块组所属的RANK,结束当前流程;如果不存在可以分配的内存块组,则针对下一RANK重复执行步骤A,直至内存块组分配成功。
7.根据权利要求6所述的装置,其特征在于,所述装置进一步包括:
内存使用检测模块,用于检测各个RANK所包含的内存块组的分配情况,并将检测结果通知内存功耗调节模块;
内存功耗调节模块,用于根据所述检测结果,判断RANK所包括的内存块组是否均为空闲,如果是,则将所述RANK的状态设置为节能模式;否则,将该RANK的状态设置为正常工作模式。
8.根据权利要求6或7所述的装置,其特征在于,所述伙伴系统算法为:查找与需要分配的内存大小最接近并且不小于需要分配的内存大小的内存块组,如果查找到,则采用该内存块组进行分配,并将分配后剩余的部分划分为新的内存块组。
9.根据权利要求6或7所述的装置,其特征在于,所述按照Min Free方式排列系统中的RANK为:按照利用率由大到小的顺序排列RANK。
10.根据权利要求6或7所述的装置,其特征在于,所述按照LRU方式排列系统中的RANK为:按照访问时间由近到远的顺序排列RANK。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310292099.2A CN103559137B (zh) | 2013-07-12 | 2013-07-12 | 一种内存分配方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310292099.2A CN103559137B (zh) | 2013-07-12 | 2013-07-12 | 一种内存分配方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103559137A CN103559137A (zh) | 2014-02-05 |
CN103559137B true CN103559137B (zh) | 2016-08-10 |
Family
ID=50013388
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310292099.2A Active CN103559137B (zh) | 2013-07-12 | 2013-07-12 | 一种内存分配方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103559137B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108604206B (zh) * | 2016-11-23 | 2021-10-22 | 华为技术有限公司 | 一种内存分配方法和设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101320351A (zh) * | 2008-06-27 | 2008-12-10 | 华中科技大学 | 内存的分配、清理和释放方法及内存管理的装置 |
US7610468B2 (en) * | 2006-10-26 | 2009-10-27 | Hewlett-Packard Development Company, L.P. | Modified buddy system memory allocation |
-
2013
- 2013-07-12 CN CN201310292099.2A patent/CN103559137B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7610468B2 (en) * | 2006-10-26 | 2009-10-27 | Hewlett-Packard Development Company, L.P. | Modified buddy system memory allocation |
CN101320351A (zh) * | 2008-06-27 | 2008-12-10 | 华中科技大学 | 内存的分配、清理和释放方法及内存管理的装置 |
Non-Patent Citations (2)
Title |
---|
ease:energy-aware self-optimizing dram scheduling;janani mukundan等;《workshop on energy efficient design(weed)》;20110630;第1节 * |
power-aware buddy system and task group scheduler;xi li等;《circuits and systems(ISCAS)》;20130523;第3节,附图1 * |
Also Published As
Publication number | Publication date |
---|---|
CN103559137A (zh) | 2014-02-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105359103B (zh) | 一种存储器资源优化方法和装置 | |
CN102362464B (zh) | 内存访问监测方法和装置 | |
CN107969153B (zh) | 一种资源分配方法、装置及numa系统 | |
CN102810050A (zh) | 日志数据写入方法和日志系统 | |
US9098406B2 (en) | Managing addressable memory in heterogeneous multicore processors | |
CN113836084A (zh) | 一种数据存储方法、装置和系统 | |
JP2012164333A (ja) | 表検索方法 | |
US20160117116A1 (en) | Electronic device and a method for managing memory space thereof | |
US11188472B2 (en) | Caching streams of memory requests | |
US20150074360A1 (en) | Scheduler for memory | |
US20150026399A1 (en) | Automatic Partial Array Self-Refresh | |
CN111240601B (zh) | 一种分区空间的超级块确定方法、装置、设备及存储介质 | |
CN104375895A (zh) | 用于多种存储器间的数据存储调度方法以及装置 | |
CN102799390B (zh) | 能耗感知的协同式自适应预取方法和装置 | |
CN102135943B (zh) | 闪存数据的存储、访问方法及装置 | |
CN104731515A (zh) | 控制存储设备机群磨损均衡的方法及设备 | |
CN111083189A (zh) | 用于在运行时处理数据倾斜的系统和方法 | |
CN113973502B (zh) | 一种高速缓存冲撞处理方法及装置 | |
CN103559137B (zh) | 一种内存分配方法及装置 | |
CN104932830B (zh) | 信息处理方法及电子设备 | |
CN103207836B (zh) | 一种用于固态存储硬盘的写方法及写装置 | |
US9286206B2 (en) | Memory system | |
CN105320543A (zh) | 加载软件模块的方法和装置 | |
CN103281358A (zh) | 一种基于一致性hash算法存储资源的方法 | |
CN113485713B (zh) | 快速编译程序的方法及装置、电子设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |