CN102495763B - 计算机程序内存动态配置方法 - Google Patents
计算机程序内存动态配置方法 Download PDFInfo
- Publication number
- CN102495763B CN102495763B CN 201110367757 CN201110367757A CN102495763B CN 102495763 B CN102495763 B CN 102495763B CN 201110367757 CN201110367757 CN 201110367757 CN 201110367757 A CN201110367757 A CN 201110367757A CN 102495763 B CN102495763 B CN 102495763B
- Authority
- CN
- China
- Prior art keywords
- value
- configuration method
- memory
- dynamic configuration
- program
- 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
Images
Abstract
本发明涉及计算机程序内存配置方法。本发明针对现有技术内存配置方法不灵活,不能适应系统环境变化的缺点,公开了一种计算机系统内存动态配置方法。本发明的技术方案是,计算机程序内存动态配置方法。其通过定期检测外界环境的变化,调整程序运行时内存使用限制值,能够随时适应环境变化,避免由于外界环境变化而产生的内存配置不适当的情况。本发明统计了长期执行过程中的环境与程序运行状况的对应关系,能够明确本程序在不同环境下的最佳运行条件。随着运行时间的延长,列表中记录和统计的数据就越全面,以这个统计列表为基础的执行策略随着时间的推移,会变得更加智能。本发明用于计算机内存的智能配置,可以提高程序运行效率。
Description
技术领域
本发明涉及计算机程序内存配置方法,特别涉及一种根据计算机系统当前环境进行内存动态配置的方法。
背景技术
计算机内存是指CPU能够直接访问的存储器,如ROM(只读存储器)、RAM(随机读写存储器)、SDRAM(静态随机读写存储器)等。内存作为计算机快速读写数据的存储设备,在计算机程序中应用广泛。与其他外置存储设备(如磁盘、移动存储设备等)相比,内存的主要优势为,读写数据高于磁盘或其他IO(输入输出)设备读写速度上千倍,内存的主要缺点为,价格相对昂贵,且断电之后数据通常会丢失。
应用程序使用内存来缓存IO外设上的数据,让程序运行时能够直接访问内存,避免额外的IO开销,达到大幅度提高程序运行速度的目的。例如系统对文件缓存的管理,具体包括WINDOWS的FAT和NTFS文件系统,或LINUX和EXT2文件系统等。这些文件系统通过缓存文件的数据到内存中,让下一次该文件的访问或修改操作直接在内存中完成。由于计算机系统不可能配置太多的内存,系统对各种应用程序运行时的内存资源都有一定限制,可以是先进先出(FIFO)或最后使用最佳(LRU)等内存数据块管理方式,确定内存使用限制值F,保证准确限制内存的最大使用量。例如杀毒软件缓存病毒库特征码,让病毒文件扫描时,特征码的匹配在内存中进行。这些特定的内存管理方法,根据内存的最大限制,优先缓存最频繁访问的数据,优先释放使用最遥远的数据。
这些特定的管理方法存在以下两个缺点:1、无法即时响应环境变化,当用户的机器和环境动态发生变化时,这种管理方法不适应这个运行环境。如内存大量被消耗,CPU资源紧张时,这种方法会导致程序或者整个系统的性能全面降低。当过度空闲资源出现时,这种方法又因为最大限制,不能实时地扩大内存使用量,更优秀的发挥系统的性能,浪费用户的时间;2、这种同一个管理方法应用在众多不同系统和环境中,如常见的文件系统缓存机制,对于大多数环境而言,这种方法兼顾了平均状况,但是对每一个系统和环境来说,这种方法的内存配置都不是最优。
发明内容
本发明所要解决的技术问题,就是针对现有技术内存配置方法不灵活,不能适应系统环境变化的缺点,提供一种计算机系统内存动态配置方法。
本发明解决所述技术问题,采用的技术方案是,计算机程序内存动态配置方法,其特征 在于,包括以下步骤:
a、创建列表L,记录程序运行时在不同系统资源W条件下,内存使用限制值F和数据访问速率H;
b、获取当前系统W、F和H值填入所述列表L;
c、在列表L中搜索W值与当前系统W值相近的记录项,把这些记录项记录到一个新的列表L′中;
d、在列表L′中根据H值进行排序,取H值最大的记录项,并获取该记录项的F值;
e、根据步骤d获取的F值来设置当前程序的F值,清空列表L′;
f、间隔周期T,重复步骤b~f。
本发明定期检测外界环境的变化,并调整程序运行时内存使用限制值,能够随时适应环境变化,避免由于外界环境变化而产生的内存配置不适当的情况。本发明统计了长期执行过程中的环境与程序运行状况的对应关系,能够明确本程序在不同环境下的最佳运行条件。随着运行时间的延长,列表L中记录和统计的数据就越全面,以这个统计列表为基础的执行策略随着时间的推移,会变得更加智能。本发明为当前环境量身定制内存配置方法,比其他通用的方案在当前环境下更加优秀。列表L中预先填入的经验数据,可以作为前几次搜索时建议性数据。这些经验数据,作为初始时,在不同系统资源W条件下,建议的内存使用限制值。
系统资源W可以通过系统提供的API(Application Programming Interface)函数或服务获取。本发明的系统资源W可以是一个广义的概念,既可以是某个系统参数,又可以是某些系统参数的组合,如以百分比表示的空闲内存比、CPU占用率等。数据访问速率H可以根据程序自身功能逻辑的运行,统计程序对数据的有效访问量,获取当前系统数据访问速率H。内存使用限制值F通常当前运行程序的设定获得。这些系统参数都可以采用本领域常用手段获得。
具体的,所述W值相近的记录项是指W值相差范围在±3%~±20%之间的记录项。
根据不同的匹配要求选择W值相差范围,相差范围越小,匹配精度越高。通常选择的W值相差范围为±10%。
进一步的,如果存在系统资源W由最小值Wmin向最大值Wmax变化时,内存使用限制值F对应由最小值Fmin变化至最大值Fmax的关系,则所述步骤a具体为:将系统资源W由最小值Wmin至最大值Wmax分为n个等级,将内存使用限制值F由最小值Fmin至最大值Fmax分为n个等级,两者一一对应,并分别记录每个等级对应的程序运行时的数据访问速率H,其中,n≥2。
对于与内存使用限制值F正相关的系统资源W,如空闲内存比、CPU占用率,其通常的表 述为百分比。当系统资源W为最小值Wmin=0%时,表示系统资源最紧张,最不利于程序运行,此时的内存使用限制值F对应为最小值Fmin,表示程序运行可用内存最小。当系统资源W为最大值Wmax=100%时,表示系统资源富余,最有利于程序运行,此时的内存使用限制值F对应为最大值Fmax,表示程序运行可用内存最大。
进一步的,如果存在系统资源W由最小值Wmin向最大值Wmax变化时,内存使用限制值F对应由最大值Fmax变化至最小值Fmin的关系,则所述步骤a具体为:将系统资源W由最小值Wmin至最大值Wmax分为n个等级,将内存使用限制值F由最大值Fmax至最小值Fmin分为n个等级,两者一一对应,并分别记录每个等级对应的程序运行时的数据访问速率H,其中,n≥2。
这是系统资源W与内存使用限制值F为负相关的情况,如系统的IO吞吐量(输入输出吞吐量)。当系统资源W为最小值Wmin时,表示系统资源最富余,最有利于程序运行,此时的内存使用限制值F对应为最大值Fmax,表示程序运行可用内存最大。当系统资源W为最大值Wmax时,表示系统资源紧张,最不利于程序运行,此时的内存使用限制值F对应为最小值Fmin,表示程序运行可用内存最小。
具体的,n个等级之间间距相等。
这是最简单的等级划分方法,即等分的方法。当然也可以根据情况采用线性递增或线性递减的等级划分方法,以适应不同的系统资源和运行环境。
更具体的,n=10。
n的取值越大,越有利于获得更恰当的内存使用限制值F,但也会增加资源耗费。通常将等级分成10等分比较合适。
本发明的有益效果是,能够根据每次不同环境的执行情况,调整自身执行的条件,并根据以前的历史记录来决定当前的执行限制,更易于获得当前最佳的执行条件,本发明既兼顾了平均环境条件,更能够适应环境条件的变化,充分发挥系统性能优势。
附图说明
图1a、图1b是缓存数据块序列状态示意图;
图2是缓存数据块饱和限制状态示意图;
图3是实施例的流程图。
具体实施方式
下面结合附图及实施例,详细描述本发明的技术方案。
本发明的计算机系统内存动态配置方法,可以用于常见的系统程序和服务程序中,可以用于系统中的内存管理策略,适用于无人值守的后台程序中。本发明可以实际应用于备份还 原软件自动备份的备份策略中,能够实用于连续备份的备份策略中,能够在杀毒软件的定期扫描策略中发挥作用。该方法还可以作为一种信息搜集的手段,在不同环境和条件下进行的数据搜集,为统计和分析数据提供物质基础,为得出实际结论提供更广泛的真实依据。
实施例1
下面的实施例以虚拟文件数据块的缓存访问为例进行描述。
在正常运行的系统中,通过挂载镜像文件产生的虚拟文件,需要被反复的访问,这些被访问文件的源数据块存放于IO物理设备中。访问文件的时候,程序通过文件的偏移和文件系统,换算出需要访问数据的数据块编号,再根据数据块编号去访问IO设备中对应偏移位置的数据。如果每次访问都通过IO物理设备,势必会影响访问速度,浪费时间。让数据访问步骤先通过内存管理方法获取内存中的数据块,如果不存在该数据缓存,再通过IO物理设备访问,势必可以减少众多访问IO物理设备的次数。所以,合理的内存配置可以提高运行效率。
数据块缓存控制步骤:
初始化:
初始化创建一个数据块索引,和一个数据块的双向链表。数据块索引包含数据块编号和数据块偏移,如图1a;双向链表初始化之后只包括头尾节点,如图1b。
当数据块访问的请求到达时:
1、从缓存中获取数据块请求到达时,查询索引是否存在数据块指针,如果存在则跳至步骤4。
2、根据索引中的数据块偏移读取数据块到数据块指针中,把这个索引项的数据块偏移替换成数据块指针。
3、把数据块指针添加到双向链表头部。
4、获取数据块缓存指针,并反馈给1中的请求;在链表中,把该数据块移动到链表头部。
当双向链表到达内存使用限制值F时:
5、从链表尾部释放超过的数据块。如图2缓存数据块饱和限制状态所示。
该缓存管理方法,缓存了数据块,保证下一次访问同样数据块的时候能够通过内存获得,而不需要访问IO设备,通常情况下IO访问的时间是同样数据量内存访问时间的1000倍,所以本发明能够大幅度提高数据块访问速度。本发明通过限制内存使用总量,保证内存不会被无限制的使用,影响系统正常运行。但是内存总量限制的具体数量同样影响运行的效果,在不同系统资源和不同运行环境情况下各不相同。
如图3所示,本例程序流程如下:
a、创建列表L,记录程序运行时在不同系统资源W条件下,内存使用限制值F和数据访 问速率H。
本例选择系统参数空闲内存比作为系统资源W,空闲内存比与内存使用限制值F正相关。也就是系统资源W由最小值Wmin向最大值Wmax变化时,内存使用限制值F对应由最小值Fmin变化至最大值Fmax。这种情况下,当系统资源W为最小值Wmin=0%时,表示系统资源最紧张,最不利于程序运行,此时的内存使用限制值F对应为最小值Fmin,表示程序运行可用内存最小。当系统资源W为最大值Wmax=100%时,表示系统资源富余,最有利于程序运行,此时的内存使用限制值F对应为最大值Fmax,表示程序运行可用内存最大。
本例步骤a具体为:将系统资源W由最小值Wmin至最大值Wmax分为n个等级,将内存使用限制值F由最小值Fmin至最大值Fmax分为n个等级,两者一一对应,分别记录每个等级对应的程序运行时的数据访问速率H。n为等级划分的级数,本例取n=10,分为10个等级。列表L如表1所示。
表1
Wmin=0% | Fmin | H0 |
W1=10% | F1 | H1 |
W2=20% | F2 | H2 |
W3=30% | F3 | H3 |
W4=40% | F4 | H4 |
W5=50% | F5 | H5 |
W6=60% | F6 | H6 |
W7=70% | F7 | H7 |
W8=80% | F8 | H8 |
W9=90% | F9 | H9 |
Wmax=100% | Fmax | Hi0 |
b、获取当前系统W、F和H值填入所述列表L。
c、在列表L中搜索W值与当前系统W值相近的记录项,把这些记录项记录到一个新的列表L′中。
本例中W值相近的记录项是指W值相差范围为±10%的记录项。
d、在列表L′中根据H值进行排序,取H值最大的记录项,并获取该记录项的F值。
e、根据步骤d获取的F值来设置当前程序的F值,清空列表L′。
这时当前程序获得了比较合理的内存配置。
f、间隔周期T,重复步骤b~f。
上述间隔周期T可以根据系统运行情况设置,可以从数分钟到数小时不等,本例间隔周期T取值10分钟。
实施例2
本例选择系统参数IO吞吐量作为系统资源W,该系统资源W由最小值Wmin向最大值Wmax变化时,内存使用限制值F对应由最大值Fmax变化至最小值Fmin。这是系统资源W与内存使用限制值F为负相关的情况,当系统资源W为最小值Wmin时,表示系统资源最富余,最有利于程序运行,此时的内存使用限制值F对应为最大值Fmax,表示程序运行可用内存最大。当系统资源W为最大值Wmax时,表示系统资源紧张,最不利于程序运行,此时的内存使用限制值F对应为最小值Fmin,表示程序运行可用内存最小。
本例步骤a具体为:将系统资源W由最小值Wmin至最大值Wmax分为n个等级,将内存使用限制值F由最大值Fmax至最小值Fmin分为n个等级,两者一一对应,并分别记录每个等级对应的程序运行时的数据访问速率H。本例取n=10,列表L如表2所示。
表2
Wmin | Fmax | H0 |
W1 | F9 | H1 |
W2 | F8 | H2 |
W3 | F7 | H3 |
W4 | F6 | H4 |
W5 | F5 | H5 |
W6 | F4 | H6 |
W7 | F3 | H7 |
W8 | F2 | H8 |
W9 | F1 | H9 |
Wmax | Fmin | H10 |
本例其他步骤参见实施例1的描述。
根据上面的步骤,长期运行的程序统计了运行开始以来每次不同内存限制值的运行状况。在虚拟文件数据访问的时候,决定是否缓存和释放数据块时,由于使用了上面的动态配置方法,内存使用限制值F,就与实际的运行情况结合起来了,限制的最大值始终是之前运行效果最好的记录值。保证了内存配置采用了最佳的内存使用限制值,更优于当前环境和系统的运行。
上述实施例,并不能穷尽本发明的实施方式,选择不同的系统参数,甚至几种不同的系 统参数组合,作为描述系统运行情况的系统资源W,可以构成不同的实施例。如根据实施例1的描述,选择系统参数CPU占用率作为系统资源W,可以得到相应的实施步骤;步骤c中,在列表L中搜索W值与当前系统W值相近的记录项,选择不同的相近程度(W值相差范围),可以得到不同的实施例,如W值相差范围为±5%也是一种常用的方案。这些实施例不胜枚举,但本领域技术人员根据本发明的描述,完全不需要进行创造性的劳动,就能够如法炮制。所以,上述实施例不应理解为对本发明的限制。
Claims (10)
1.计算机程序内存动态配置方法,其特征在于,包括以下步骤:
a、创建列表L,记录程序运行时在不同系统资源W条件下,内存使用限制值F和数据访问速率H;
b、获取当前系统W、F和H值填入所述列表L;
c、在列表L中搜索W值与当前系统W值相近的记录项,把这些记录项记录到一个新的列表L′中;
d、在列表L′中根据H值进行排序,取H值最大的记录项,并获取该记录项的F值;
e、根据步骤d获取的F值来设置当前程序的F值,清空列表L′;
f、间隔周期T,重复步骤b~f。
2.根据权利要求1所述的计算机程序内存动态配置方法,其特征在于,所述W值相近的记录项是指W值相差范围在±3%~±20%之间的记录项。
3.根据权利要求2所述的计算机程序内存动态配置方法,其特征在于,所述W值相差范围为±10%。
4.根据权利要求1所述的计算机程序内存动态配置方法,其特征在于,如果存在系统资源W由最小值Wmin向最大值Wmax变化时,内存使用限制值F对应由最小值Fmin变化至最大值Fmax的关系,则所述步骤a具体为:将系统资源W由最小值Wmin至最大值Wmax分为n个等级,将内存使用限制值F由最小值Fmin至最大值Fmax分为n个等级,两者一一对应,并分别记录每个等级对应的程序运行时的数据访问速率H,其中,n≥2。
5.根据权利要求4所述的计算机程序内存动态配置方法,其特征在于,所述系统资源W为空闲内存比;所述Wmin=0%,Wmax=100%。
6.根据权利要求4所述的计算机程序内存动态配置方法,其特征在于,所述系统资源W为CPU占用率;所述Wmin=0%,Wmax=100%。
7.根据权利要求1所述的计算机程序内存动态配置方法,其特征在于,如果存在系统资源W由最小值Wmin向最大值Wmax变化时,内存使用限制值F对应由最大值Fmax变化至最小值Fmin的关系,则所述步骤a具体为:将系统资源W由最小值Wmin至最大值Wmax分为n个等级,将内存使用限制值F由最大值Fmax至最小值Fmin分为n个等级,两者一一对应,并分别记录每个等级对应的程序运行时的数据访问速率H,其中,n≥2。
8.根据权利要求7所述的计算机程序内存动态配置方法,其特征在于,所述系统资源W为系统的IO吞吐量。
9.根据权利要求4~8任意一项所述的计算机程序内存动态配置方法,其特征在于,n个等级之间间距相等。
10.根据权利要求9所述的计算机程序内存动态配置方法,其特征在于,n=10。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110367757 CN102495763B (zh) | 2011-11-18 | 2011-11-18 | 计算机程序内存动态配置方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110367757 CN102495763B (zh) | 2011-11-18 | 2011-11-18 | 计算机程序内存动态配置方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102495763A CN102495763A (zh) | 2012-06-13 |
CN102495763B true CN102495763B (zh) | 2013-05-15 |
Family
ID=46187590
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201110367757 Active CN102495763B (zh) | 2011-11-18 | 2011-11-18 | 计算机程序内存动态配置方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102495763B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104461915B (zh) * | 2014-11-17 | 2017-06-20 | 阔地教育科技有限公司 | 一种在线课堂系统中内存动态分配方法及设备 |
CN106354564A (zh) * | 2016-08-31 | 2017-01-25 | 深圳天珑无线科技有限公司 | 系统资源分配方法和系统资源分配系统 |
CN117041653A (zh) * | 2023-08-08 | 2023-11-10 | 心动网络股份有限公司 | 基于资源分配的播放画面录制方法、装置、设备及介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6799191B2 (en) * | 2000-05-16 | 2004-09-28 | Sun Microsystems, Inc. | Object sampling technique for runtime observations of representative instances thereof |
US6892378B2 (en) * | 2001-09-17 | 2005-05-10 | Hewlett-Packard Development Company, L.P. | Method to detect unbounded growth of linked lists in a running application |
CN100549945C (zh) * | 2008-06-03 | 2009-10-14 | 浙江大学 | 嵌入式系统中基于spm的指令缓冲的实现方法 |
CN101859261B (zh) * | 2010-06-09 | 2015-05-13 | 中兴通讯股份有限公司 | 一种释放内存的控制方法及控制设备 |
-
2011
- 2011-11-18 CN CN 201110367757 patent/CN102495763B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN102495763A (zh) | 2012-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11822789B2 (en) | Methods and apparatus to manage workload memory allocation | |
Lagar-Cavilla et al. | Software-defined far memory in warehouse-scale computers | |
CN113093993B (zh) | 一种闪存空间动态分配方法及固态硬盘 | |
US7181588B2 (en) | Computer apparatus and method for autonomic adjustment of block transfer size | |
US10540095B1 (en) | Efficient garbage collection for stable data | |
CN105069134A (zh) | 一种Oracle统计信息自动收集方法 | |
CN102426475A (zh) | 桌面虚拟化环境下的节能方法、节能管理服务器及系统 | |
CN103218263A (zh) | MapReduce参数的动态确定方法及装置 | |
WO2014138234A1 (en) | Demand determination for data blocks | |
CN103810238A (zh) | 一种基于异步处理的大数据量Excel文件导出方法 | |
CN101968755A (zh) | 一种自适应应用负载变化的快照生成方法 | |
CN102495763B (zh) | 计算机程序内存动态配置方法 | |
CN109840047A (zh) | 一种降低读延时的方法及装置 | |
CN102567225A (zh) | 一种管理系统内存的方法及装置 | |
CN102111920A (zh) | 一种性能报表管理的方法及装置 | |
Yang et al. | Ars: Reducing f2fs fragmentation for smartphones using decision trees | |
US20120331235A1 (en) | Memory management apparatus, memory management method, control program, and recording medium | |
WO2023278324A1 (en) | Optimized i/o performance regulation for non-volatile storage | |
CN106201918B (zh) | 一种基于大数据量和大规模缓存快速释放的方法和系统 | |
US7792880B2 (en) | Method and apparatus for efficient implementation of discontiguous objects | |
CN103823634A (zh) | 一种支持无随机写模式的数据处理方法及系统 | |
Yu et al. | {ADOC}: Automatically Harmonizing Dataflow Between Components in {Log-Structured}{Key-Value} Stores for Improved Performance | |
CN106569728B (zh) | 多磁盘阵列raid共享写缓存的处理方法及装置 | |
CN101901192B (zh) | 一种片上和片外数据对象静态分配方法 | |
CN103617268B (zh) | 一种实现大数据处理的方法及装置 |
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 |