CN118331501A - 缓冲器自适应调节方法及系统 - Google Patents

缓冲器自适应调节方法及系统 Download PDF

Info

Publication number
CN118331501A
CN118331501A CN202410575112.3A CN202410575112A CN118331501A CN 118331501 A CN118331501 A CN 118331501A CN 202410575112 A CN202410575112 A CN 202410575112A CN 118331501 A CN118331501 A CN 118331501A
Authority
CN
China
Prior art keywords
capacity
data
buffer
array
pointer
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
Application number
CN202410575112.3A
Other languages
English (en)
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.)
Shanghai Lingshuzhonghe Information Technology Co ltd
Original Assignee
Shanghai Lingshuzhonghe Information Technology 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 Shanghai Lingshuzhonghe Information Technology Co ltd filed Critical Shanghai Lingshuzhonghe Information Technology Co ltd
Priority to CN202410575112.3A priority Critical patent/CN118331501A/zh
Publication of CN118331501A publication Critical patent/CN118331501A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明实施例公开了一种缓冲器自适应调节方法及系统,其中,该方法包括:获取缓冲器的最大容量与最小容量,根据所述最小容量初始化缓冲数组;按预设频率重复计算堆内存的数据使用率及缓冲器的数据存入速率;根据所述数据使用率、数据存入速率、最大容量及最小容量判断缓冲数组的容量调整需求,根据所述容量调整需求对所述缓冲数组的容量进行调整,得到新数组;在所述新数组中写入或读取数据。提高了并发场景下的缓存自适应调节能力,防止出现内存溢出及垃圾回收操作。

Description

缓冲器自适应调节方法及系统
技术领域
本发明涉及数据处理领域,尤其涉及一种缓冲器自适应调节方法及系统。
背景技术
在处理高并发场景下大量数据存储时,会先把数据写入到缓存组件中,然后再通过读取缓存的数据,最后批量写入到数据库中。在高并发的场景下,使用缓存组件存储数据,一旦垃圾数据回收不及时,就会导致老年代的使用率不断增加,最终导致内存溢出,从而引发FULL GC。
针对现有技术中高并发场景下缓存设置不当,从而容易引起FULL GC的问题,目前还没有一个有效的解决方法。
发明内容
为解决上述问题,本发明提供一种缓冲器自适应调节方法及系统,通过分析堆内存剩余大小和数据存入缓冲器的速率,自动调节缓冲器的容量大小,从而解决现有技术中高并发场景下由于缓存大小设置不当而引起的FULL GC问题。
为达到上述目的,本发明提供了一种缓冲器自适应调节方法,包括:获取缓冲器的最大容量与最小容量,根据所述最小容量初始化缓冲数组;按预设频率重复计算堆内存的数据使用率及缓冲器的数据存入速率;根据所述数据使用率、数据存入速率、最大容量及最小容量判断缓冲数组的容量调整需求,根据所述容量调整需求对所述缓冲数组的容量进行调整,得到新数组;在所述新数组中写入或读取数据。
进一步可选的,所述根据所述数据使用率、数据存入速率、最大容量及最小容量判断缓冲数组的容量调整需求,包括:根据预设数量的数据使用率计算内存使用率均值,根据预设数量的数据存入速率计算存入速率均值;当内存使用率均值大于预设调节阈值时,对所述缓冲数组进行缩容;当内存使用率均值不大于所述预设调节阈值时,若所述存入速率均值不大于所述缓冲数组的当前容量,则对所述缓冲数组进行缩容;否则,对所述缓冲数组进行扩容。
进一步可选的,所述对所述缓冲数组进行扩容,包括:计算所述当前容量扩容预设倍数后的扩容容量;当所述扩容容量小于所述最大容量时,创建一个容量为扩容容量的新数组,将所述缓冲数组的数据迁移到所述新数组中;否则,创建一个容量为最大容量的新数组,将所述缓冲数组的数据迁移到所述新数组中。
进一步可选的,所述对所述缓冲数组进行缩容,包括:计算所述当前容量缩容预设倍数后的缩容容量;当所述缩容容量大于所述最小容量时,创建一个容量为缩容容量的新数组,将所述缓冲数组的数据迁移到所述新数组中;否则,创建一个容量为最小容量的新数组,将所述缓冲数组的数据迁移到所述新数组中。
进一步可选的,所述在所述新数组中写入或读取数据,包括:当写入数据时,在写指针对应索引下写入待写入数据,并将写指针移动到下一写入位,若写指针位于缓冲数组的最后一位,则将写指针重置为初始状态,并使待写入数据覆盖最后一位的原有数据;当读取数据时,若写指针在读指针前,则将读指针到最后一位的数据及写指针新写入的数据作为读取数据;若读指针在写指针前,则将写指针到读指针之间的数据作为读取数据,并将读指针移动到写指针的位置。
另一方面,本发明还提供了一种缓冲器自适应调节系统,包括:初始化模块,用于获取缓冲器的最大容量与最小容量,根据所述最小容量初始化缓冲数组;计算模块,用于按预设频率重复计算堆内存的数据使用率及缓冲器的数据存入速率;容量调整模块,用于根据所述数据使用率、数据存入速率、最大容量及最小容量判断缓冲数组的容量调整需求,根据所述容量调整需求对所述缓冲数组的容量进行调整,得到新数组;读写模块,用于在所述新数组中写入或读取数据。
进一步可选的,所述容量调整模块包括:均值计算子模块,用于根据预设数量的数据使用率计算内存使用率均值,根据预设数量的数据存入速率计算存入速率均值;调整子模块,用于当内存使用率均值大于预设调节阈值时,对所述缓冲数组进行缩容;当内存使用率均值不大于所述预设调节阈值时,若所述存入速率均值不大于所述缓冲数组的当前容量,则对所述缓冲数组进行缩容;否则,对所述缓冲数组进行扩容。
进一步可选的,所述调整子模块包括:扩容容量计算单元,用于计算所述当前容量扩容预设倍数后的扩容容量;扩容单元,用于当所述扩容容量小于所述最大容量时,创建一个容量为扩容容量的新数组,将所述缓冲数组的数据迁移到所述新数组中;否则,创建一个容量为最大容量的新数组,将所述缓冲数组的数据迁移到所述新数组中。
进一步可选的,所述调整子模块包括:缩容容量计算单元,用于计算所述当前容量缩容预设倍数后的缩容容量;缩容单元,用于当所述缩容容量大于所述最小容量时,创建一个容量为缩容容量的新数组,将所述缓冲数组的数据迁移到所述新数组中;否则,创建一个容量为最小容量的新数组,将所述缓冲数组的数据迁移到所述新数组中。
进一步可选的,所述读写模块包括:数据写入子模块,用于当写入数据时,在写指针对应索引下写入待写入数据,并将写指针移动到下一写入位,若写指针位于缓冲数组的最后一位,则将写指针重置为初始状态,并使待写入数据覆盖最后一位的原有数据;数据读取子模块,用于当读取数据时,若写指针在读指针前,则将读指针到最后一位的数据及写指针新写入的数据作为读取数据;若读指针在写指针前,则将写指针到读指针之间的数据作为读取数据,并将读指针移动到写指针的位置。
上述技术方案具有如下有益效果:根据堆内存的数据使用率及缓冲器的数据存入速率,分析当前应用的状态,并根据不同情况对缓冲数组的容量进行适当调整,以完成容量的自适应调整,防止数据溢出,提高缓冲器的整体性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的缓冲器自适应调节方法的流程图;
图2是本发明实施例提供的容量调整需求确定方法的流程图;
图3是本发明实施例提供的数组扩容方法的流程图;
图4是本发明实施例提供的数组缩容方法的流程图;
图5是本发明实施例提供的数据读写方法的流程图;
图6是本发明实施例提供的缓冲器自适应调节系统的结构示意图;
图7是本发明实施例提供的容量调整模块的结构示意图;
图8是本发明实施例提供的调整子模块用于扩容的单元的结构示意图;
图9是本发明实施例提供的调整子模块用于缩容的单元的结构示意图;
图10是本发明实施例提供的读写模块的结构示意图。
附图标记:100-初始化模块;200-计算模块;300-容量调整模块;3001-均值计算子模块;3002-调整子模块;30021-扩容容量计算单元;30022-扩容单元;30023-缩容容量计算单元;30024-缩容单元;400-读写模块;4001-数据写入子模块;4002-数据读取子模块。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为解决现有技术中高并发场景下,缓存数据容易出现FULL GC的问题,本发明实施例提供了一种缓冲器自适应调节方法,图1是本发明实施例提供的缓冲器自适应调节方法的流程图,如图1所示,该方法包括:
S1、获取缓冲器的最大容量与最小容量,根据最小容量初始化缓冲数组;
首先指定缓冲器的最小容量及最大容量,并根据最小容量的值初始化一个数组对象,即缓冲数组,缓冲数组的初始容量即为指定的最小容量。
同时,定义两个指针,分别为数组的读指针与写指针,两个指针的值均为0。
S2、按预设频率重复计算堆内存的数据使用率及缓冲器的数据存入速率;
预先设定一个内存探针任务、存入速率计算任务的执行频率(即预设频率),按照该预设频率重复启动内存探针任务,以计算当前应用中堆内存的数据使用率,将每次计算的数据使用率结果进行记录。
按照预设频率重复启动存入速率计算任务,以计算缓冲器当前的数据存入速率,将每次计算的数据存入速率结果进行记录。
数据存入速率可通过以下公式计算:数据存入速率(t/s)=缓冲器存入数据方法调用的总次数(单位:t)/事件间隔(单位:s)。
需要说明的是,预设频率可根据实际情况进行设置,本实施例中的预设频率为1分钟一次。
S3、根据数据使用率、数据存入速率、最大容量及最小容量判断缓冲数组的容量调整需求,根据容量调整需求对缓冲数组的容量进行调整,得到新数组;
在计算得到数据使用率及数据存入速率后,根据数据使用率、数据存入速率、最大容量及最小容量判断缓冲数组是否需要进行调整,也即是否需要扩容或缩容,确定调整需求后即根据扩容需求对缓冲数组进行扩容,或根据缩容需求对缓冲数组进行缩容,得到调整后的新数组。
S4、在新数组中写入或读取数据。
通过写指针在新数组中写入数据或通过读指针在新数组中读取数据。
作为一种可选的实施方式,图2是本发明实施例提供的容量调整需求确定方法的流程图,如图2所示,根据数据使用率、数据存入速率、最大容量及最小容量判断缓冲数组的容量调整需求,包括:
S301、根据预设数量的数据使用率计算内存使用率均值,根据预设数量的数据存入速率计算存入速率均值;
选定预设数量的数据使用率并计算其平均值,本实施例中选取最近5次的数据使用率计算内存使用率均值,具体通过以下公式实现:内存使用率均值=最近5次的数据使用率之和除以5。
选定预设数量的数据存入速率并计算其平均值,本实施例中选取最近5次的数据存入速率计算存入速率均值,具体通过以下公式实现:存入速率均值=最近5次的数据存入速率之和除以5。
S302、当内存使用率均值大于预设调节阈值时,对缓冲数组进行缩容;当内存使用率均值不大于预设调节阈值时,若存入速率均值不大于缓冲数组的当前容量,则对缓冲数组进行缩容;否则,对缓冲数组进行扩容。
将内存使用率均值与预设调节阈值进行比较,如果内存使用率均值大于预设调节阈值,则需要对缓冲数组进行缩容。
如果内存使用率均值小于或等于预设调节阈值,则需要进一步比较存入速率均值与缓冲数组的当前容量。当存入速率均值小于或等于缓冲数组的当前容量,则对缓冲数组进行缩容;当存入速率均值大于缓冲数组的当前容量,则对缓冲数组进行扩容。
优选的,预设调节阈值为80%。例如,内存使用率均值为60%,存入速率均值为100t/s,缓冲数组的当前容量为120,那么首先将内存使用率均值与预设调节阈值比较,结果为内存使用率均值小于预设调节阈值,则需进一步比较存入速率均值与缓冲数组的当前容量,100<120,即存入速率均值小于缓冲数组的当前容量,则需对缓冲数组进行缩容。
作为一种可选的实施方式,图3是本发明实施例提供的数组扩容方法的流程图,如图3所示,对缓冲数组进行扩容,包括:
S3021、计算当前容量扩容预设倍数后的扩容容量;
S3022、当扩容容量小于最大容量时,创建一个容量为扩容容量的新数组,将缓冲数组的数据迁移到新数组中;否则,创建一个容量为最大容量的新数组,将缓冲数组的数据迁移到新数组中。
扩容过程需首先计算缓冲数组的当前容量扩容预设倍数后的扩容容量,本实施例中将当前容量的1.5倍作为扩容容量,若该扩容容量小于最大容量,则创建一个容量为扩容容量的新数组;反之,若扩容容量大于或等于最大容量,则创建一个容量为最大容量的新数组。
新数组初始为空,之后将缓冲数组中的数组迁移到新数组中,删除旧的缓冲数组,释放内存,并在新数组中进行读写操作。
作为一种可选的实施方式,图4是本发明实施例提供的数组缩容方法的流程图,如图4所示,对缓冲数组进行缩容,包括:
S3023、计算当前容量缩容预设倍数后的缩容容量;
S3024、当缩容容量大于最小容量时,创建一个容量为缩容容量的新数组,将缓冲数组的数据迁移到新数组中;否则,创建一个容量为最小容量的新数组,将缓冲数组的数据迁移到新数组中。
缩容过程需首先计算缓冲数组的当前容量缩容预设倍数后的缩容容量,本实施例中将当前容量的0.75倍作为缩容容量,若该缩容容量大于最小容量,则创建一个容量为缩容容量的新数组;反之,若缩容容量小于或等于最小容量,则创建一个容量为最小容量的新数组。
新数组初始为空,之后将缓冲数组中的数组迁移到新数组中,删除旧的缓冲数组,释放内存,并在新数组中进行读写操作。
作为一种可选的实施方式,图5是本发明实施例提供的数据读写方法的流程图,如图5所示,在新数组中写入或读取数据,包括:
S401、当写入数据时,在写指针对应索引下写入待写入数据,并将写指针移动到下一写入位,若写指针位于缓冲数组的最后一位,则将写指针重置为初始状态,并使待写入数据覆盖最后一位的原有数据;
S402、当读取数据时,若写指针在读指针前,则将读指针到最后一位的数据及写指针新写入的数据作为读取数据;若读指针在写指针前,则将写指针到读指针之间的数据作为读取数据,并将读指针移动到写指针的位置。
本实施例中的缓冲器的存储结构为环形,在写入数据时,写指针在当前写入位对应索引下写入待写入数据,并移向下一写入位,直至写指针移动到最后一位,此时写指针会重置为初始状态,也即写指针为0,重新写入数据以覆盖之前的旧数据。
同样的,当读取数据时,读指针也会向下一位移动以读取下一个数据。由于写指针会重新写入数据,所以在读取时读取方式不同。
例如,读指针在600位置,写指针在800位置,也即读指针在写指针前的情况下,读取的数据为600-800之间的数据。同时将读指针移动到与写指针相同的位置。
例如,读指针在800位置,写指针在600位置,总容量为1000,也即写指针在读指针前的情况下,此时写指针已覆盖了一部分旧数据,读取的数据为800-1000位置及写指针重新写入的0-600位置的新数据。
本发明实施例还提供了一种缓冲器自适应调节系统,图6是本发明实施例提供的缓冲器自适应调节系统的结构示意图,如图6所示,该系统包括:
初始化模块100,用于获取缓冲器的最大容量与最小容量,根据最小容量初始化缓冲数组;
首先指定缓冲器的最小容量及最大容量,并根据最小容量的值初始化一个数组对象,即缓冲数组,缓冲数组的初始容量即为指定的最小容量。
同时,定义两个指针,分别为数组的读指针与写指针,两个指针的值均为0。
计算模块200,用于按预设频率重复计算堆内存的数据使用率及缓冲器的数据存入速率;
预先设定一个内存探针任务、存入速率计算任务的执行频率(即预设频率),按照该预设频率重复启动内存探针任务,以计算当前应用中堆内存的数据使用率,将每次计算的数据使用率结果进行记录。
按照预设频率重复启动存入速率计算任务,以计算缓冲器当前的数据存入速率,将每次计算的数据存入速率结果进行记录。
数据存入速率可通过以下公式计算:数据存入速率(t/s)=缓冲器存入数据方法调用的总次数(单位:t)/事件间隔(单位:s)。
需要说明的是,预设频率可根据实际情况进行设置,本实施例中的预设频率为1分钟一次。
容量调整模块300,用于根据数据使用率、数据存入速率、最大容量及最小容量判断缓冲数组的容量调整需求,根据容量调整需求对缓冲数组的容量进行调整,得到新数组;
在计算得到数据使用率及数据存入速率后,根据数据使用率、数据存入速率、最大容量及最小容量判断缓冲数组是否需要进行调整,也即是否需要扩容或缩容,确定调整需求后即根据扩容需求对缓冲数组进行扩容,或根据缩容需求对缓冲数组进行缩容,得到调整后的新数组。
读写模块400,用于在新数组中写入或读取数据。
通过写指针在新数组中写入数据或通过读指针在新数组中读取数据。
作为一种可选的实施方式,图7是本发明实施例提供的容量调整模块的结构示意图,如图7所示,容量调整模块300包括:
均值计算子模块3001,用于根据预设数量的数据使用率计算内存使用率均值,根据预设数量的数据存入速率计算存入速率均值;
选定预设数量的数据使用率并计算其平均值,本实施例中选取最近5次的数据使用率计算内存使用率均值,具体通过以下公式实现:内存使用率均值=最近5次的数据使用率之和除以5。
选定预设数量的数据存入速率并计算其平均值,本实施例中选取最近5次的数据存入速率计算存入速率均值,具体通过以下公式实现:存入速率均值=最近5次的数据存入速率之和除以5。
调整子模块3002,用于当内存使用率均值大于预设调节阈值时,对缓冲数组进行缩容;当内存使用率均值不大于预设调节阈值时,若存入速率均值不大于缓冲数组的当前容量,则对缓冲数组进行缩容;否则,对缓冲数组进行扩容。
将内存使用率均值与预设调节阈值进行比较,如果内存使用率均值大于预设调节阈值,则需要对缓冲数组进行缩容。
如果内存使用率均值小于或等于预设调节阈值,则需要进一步比较存入速率均值与缓冲数组的当前容量。当存入速率均值小于或等于缓冲数组的当前容量,则对缓冲数组进行缩容;当存入速率均值大于缓冲数组的当前容量,则对缓冲数组进行扩容。
优选的,预设调节阈值为80%。例如,内存使用率均值为60%,存入速率均值为100t/s,缓冲数组的当前容量为120,那么首先将内存使用率均值与预设调节阈值比较,结果为内存使用率均值小于预设调节阈值,则需进一步比较存入速率均值与缓冲数组的当前容量,100<120,即存入速率均值小于缓冲数组的当前容量,则需对缓冲数组进行缩容。
作为一种可选的实施方式,图8是本发明实施例提供的调整子模块用于扩容的单元的结构示意图,如图8所示,调整子模块3002包括:
扩容容量计算单元30021,用于计算当前容量扩容预设倍数后的扩容容量;
扩容单元30022,用于当扩容容量小于最大容量时,创建一个容量为扩容容量的新数组,将缓冲数组的数据迁移到新数组中;否则,创建一个容量为最大容量的新数组,将缓冲数组的数据迁移到新数组中。
扩容过程需首先计算缓冲数组的当前容量扩容预设倍数后的扩容容量,本实施例中将当前容量的1.5倍作为扩容容量,若该扩容容量小于最大容量,则创建一个容量为扩容容量的新数组;反之,若扩容容量大于或等于最大容量,则创建一个容量为最大容量的新数组。
新数组初始为空,之后将缓冲数组中的数组迁移到新数组中,删除旧的缓冲数组,释放内存,并在新数组中进行读写操作。
作为一种可选的实施方式,图9是本发明实施例提供的调整子模块用于缩容的单元的结构示意图,如图9所示,调整子模块3002包括:
缩容容量计算单元30023,用于计算当前容量缩容预设倍数后的缩容容量;
缩容单元30024,用于当缩容容量大于最小容量时,创建一个容量为缩容容量的新数组,将缓冲数组的数据迁移到新数组中;否则,创建一个容量为最小容量的新数组,将缓冲数组的数据迁移到新数组中。
缩容过程需首先计算缓冲数组的当前容量缩容预设倍数后的缩容容量,本实施例中将当前容量的0.75倍作为缩容容量,若该缩容容量大于最小容量,则创建一个容量为缩容容量的新数组;反之,若缩容容量小于或等于最小容量,则创建一个容量为最小容量的新数组。
新数组初始为空,之后将缓冲数组中的数组迁移到新数组中,删除旧的缓冲数组,释放内存,并在新数组中进行读写操作。
作为一种可选的实施方式,图10是本发明实施例提供的读写模块的结构示意图,如图10所示,读写模块400包括:
数据写入子模块4001,用于当写入数据时,在写指针对应索引下写入待写入数据,并将写指针移动到下一写入位,若写指针位于缓冲数组的最后一位,则将写指针重置为初始状态,并使待写入数据覆盖最后一位的原有数据;
数据读取子模块4002,用于当读取数据时,若写指针在读指针前,则将读指针到最后一位的数据及写指针新写入的数据作为读取数据;若读指针在写指针前,则将写指针到读指针之间的数据作为读取数据,并将读指针移动到写指针的位置。
本实施例中的缓冲器的存储结构为环形,在写入数据时,写指针在当前写入位对应索引下写入待写入数据,并移向下一写入位,直至写指针移动到最后一位,此时写指针会重置为初始状态,也即写指针为0,重新写入数据以覆盖之前的旧数据。
同样的,当读取数据时,读指针也会向下一位移动以读取下一个数据。由于写指针会重新写入数据,所以在读取时读取方式不同。
例如,读指针在600位置,写指针在800位置,也即读指针在写指针前的情况下,读取的数据为600-800之间的数据。同时将读指针移动到与写指针相同的位置。
例如,读指针在800位置,写指针在600位置,总容量为1000,也即写指针在读指针前的情况下,此时写指针已覆盖了一部分旧数据,读取的数据为800-1000位置及写指针重新写入的0-600位置的新数据。
上述技术方案具有如下有益效果:根据堆内存的数据使用率及缓冲器的数据存入速率,分析当前应用的状态,并根据不同情况对缓冲数组的容量进行适当调整,以完成容量的自适应调整,防止数据溢出,提高缓冲器的整体性能。
以上发明的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上内容仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种缓冲器自适应调节方法,其特征在于,包括:
获取缓冲器的最大容量与最小容量,根据所述最小容量初始化缓冲数组;
按预设频率重复计算堆内存的数据使用率及缓冲器的数据存入速率;
根据所述数据使用率、数据存入速率、最大容量及最小容量判断缓冲数组的容量调整需求,根据所述容量调整需求对所述缓冲数组的容量进行调整,得到新数组;
在所述新数组中写入或读取数据。
2.根据权利要求1所述的缓冲器自适应调节方法,其特征在于,所述根据所述数据使用率、数据存入速率、最大容量及最小容量判断缓冲数组的容量调整需求,包括:
根据预设数量的数据使用率计算内存使用率均值,根据预设数量的数据存入速率计算存入速率均值;
当内存使用率均值大于预设调节阈值时,对所述缓冲数组进行缩容;当内存使用率均值不大于所述预设调节阈值时,若所述存入速率均值不大于所述缓冲数组的当前容量,则对所述缓冲数组进行缩容;否则,对所述缓冲数组进行扩容。
3.根据权利要求2所述的缓冲器自适应调节方法,其特征在于,所述对所述缓冲数组进行扩容,包括:
计算所述当前容量扩容预设倍数后的扩容容量;
当所述扩容容量小于所述最大容量时,创建一个容量为扩容容量的新数组,将所述缓冲数组的数据迁移到所述新数组中;否则,创建一个容量为最大容量的新数组,将所述缓冲数组的数据迁移到所述新数组中。
4.根据权利要求2所述的缓冲器自适应调节方法,其特征在于,所述对所述缓冲数组进行缩容,包括:
计算所述当前容量缩容预设倍数后的缩容容量;
当所述缩容容量大于所述最小容量时,创建一个容量为缩容容量的新数组,将所述缓冲数组的数据迁移到所述新数组中;否则,创建一个容量为最小容量的新数组,将所述缓冲数组的数据迁移到所述新数组中。
5.根据权利要求1所述的缓冲器自适应调节方法,其特征在于,所述在所述新数组中写入或读取数据,包括:
当写入数据时,在写指针对应索引下写入待写入数据,并将写指针移动到下一写入位,若写指针位于缓冲数组的最后一位,则将写指针重置为初始状态,并使待写入数据覆盖最后一位的原有数据;
当读取数据时,若写指针在读指针前,则将读指针到最后一位的数据及写指针新写入的数据作为读取数据;若读指针在写指针前,则将写指针到读指针之间的数据作为读取数据,并将读指针移动到写指针的位置。
6.一种缓冲器自适应调节系统,其特征在于,包括:
初始化模块,用于获取缓冲器的最大容量与最小容量,根据所述最小容量初始化缓冲数组;
计算模块,用于按预设频率重复计算堆内存的数据使用率及缓冲器的数据存入速率;
容量调整模块,用于根据所述数据使用率、数据存入速率、最大容量及最小容量判断缓冲数组的容量调整需求,根据所述容量调整需求对所述缓冲数组的容量进行调整,得到新数组;
读写模块,用于在所述新数组中写入或读取数据。
7.根据权利要求6所述的缓冲器自适应调节系统,其特征在于,所述容量调整模块包括:
均值计算子模块,用于根据预设数量的数据使用率计算内存使用率均值,根据预设数量的数据存入速率计算存入速率均值;
调整子模块,用于当内存使用率均值大于预设调节阈值时,对所述缓冲数组进行缩容;当内存使用率均值不大于所述预设调节阈值时,若所述存入速率均值不大于所述缓冲数组的当前容量,则对所述缓冲数组进行缩容;否则,对所述缓冲数组进行扩容。
8.根据权利要求7所述的缓冲器自适应调节系统,其特征在于,所述调整子模块包括:
扩容容量计算单元,用于计算所述当前容量扩容预设倍数后的扩容容量;
扩容单元,用于当所述扩容容量小于所述最大容量时,创建一个容量为扩容容量的新数组,将所述缓冲数组的数据迁移到所述新数组中;否则,创建一个容量为最大容量的新数组,将所述缓冲数组的数据迁移到所述新数组中。
9.根据权利要求7所述的缓冲器自适应调节系统,其特征在于,所述调整子模块包括:
缩容容量计算单元,用于计算所述当前容量缩容预设倍数后的缩容容量;
缩容单元,用于当所述缩容容量大于所述最小容量时,创建一个容量为缩容容量的新数组,将所述缓冲数组的数据迁移到所述新数组中;否则,创建一个容量为最小容量的新数组,将所述缓冲数组的数据迁移到所述新数组中。
10.根据权利要求6所述的缓冲器自适应调节系统,其特征在于,所述读写模块包括:
数据写入子模块,用于当写入数据时,在写指针对应索引下写入待写入数据,并将写指针移动到下一写入位,若写指针位于缓冲数组的最后一位,则将写指针重置为初始状态,并使待写入数据覆盖最后一位的原有数据;
数据读取子模块,用于当读取数据时,若写指针在读指针前,则将读指针到最后一位的数据及写指针新写入的数据作为读取数据;若读指针在写指针前,则将写指针到读指针之间的数据作为读取数据,并将读指针移动到写指针的位置。
CN202410575112.3A 2024-05-10 2024-05-10 缓冲器自适应调节方法及系统 Pending CN118331501A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410575112.3A CN118331501A (zh) 2024-05-10 2024-05-10 缓冲器自适应调节方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410575112.3A CN118331501A (zh) 2024-05-10 2024-05-10 缓冲器自适应调节方法及系统

Publications (1)

Publication Number Publication Date
CN118331501A true CN118331501A (zh) 2024-07-12

Family

ID=91772177

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410575112.3A Pending CN118331501A (zh) 2024-05-10 2024-05-10 缓冲器自适应调节方法及系统

Country Status (1)

Country Link
CN (1) CN118331501A (zh)

Similar Documents

Publication Publication Date Title
US6947956B2 (en) Method and apparatus for selective caching of transactions in a computer system
US8280858B2 (en) Storage pool scrubbing with concurrent snapshots
US7673105B2 (en) Managing memory pages
US20110072207A1 (en) Apparatus and method for logging optimization using non-volatile memory
CN111399750B (zh) 闪存数据写入方法及计算机可读取存储介质
CN108595347B (zh) 一种缓存控制方法、装置及计算机可读存储介质
US20130304972A1 (en) Control device, storage device, and storage control method
CN109558456A (zh) 一种文件迁移方法、装置、设备及可读存储介质
CN111966281B (zh) 数据储存装置与数据处理方法
CN112799595A (zh) 数据处理方法、设备及存储介质
CN107562806B (zh) 混合内存文件系统的自适应感知加速方法及系统
CN111338562A (zh) 数据存储装置与数据处理方法
CN114356248A (zh) 一种数据处理方法和装置
US7412569B2 (en) System and method to track changes in memory
CN106897311B (zh) 数据库批次更新方法、数据还原日志产生方法与存储装置
US20190114082A1 (en) Coordination Of Compaction In A Distributed Storage System
US20210073079A1 (en) Creating Snapshots of a Storage Volume in a Distributed Storage System
US10976938B2 (en) Block map cache
CN118331501A (zh) 缓冲器自适应调节方法及系统
CN115640238A (zh) 针对持久化内存的可靠内存映射i/o实现方法及系统
US6910054B1 (en) Methods, systems and computer program products for storing data using a rolling window file
EP2820548B1 (en) Versioned memories using a multi-level cell
CN108984117B (zh) 一种数据读写方法、介质及设备
CN110658999A (zh) 一种信息更新方法、装置、设备及计算机可读存储介质
CN113703671B (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