一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种缓存资源的控制方法和系统与流程

2022-02-21 04:41:17 来源:中国专利 TAG:


1.本发明涉及计算机应用领域,尤其涉及一种缓存资源的控制方法和系统。


背景技术:

2.在视频分析前,会先进行取流操作,在取流的初始阶段,一般会进行预分析码流,这时会取一段长度的视频流,用来获取码流的编码类型、帧率、分辨率等信息,在获取信息之后将视频流以帧为单位,放在缓存中。在一般情况下,取流的开始阶段产生数据的速度是大于平稳阶段产生数据的速度,接收数据的队列大小是决定是否丢失数据,及内存占用的关键因素。
3.目前,现有技术中的方式都是以固定队列大小的机制,来接受取到的码流数据。但是,这种方法可能会导致两个问题:如果队列大小设置过小,会在取流的初始阶段,获取码流类型需要较多的帧信息,由于开始阶段初始码流产生速度过快,将其全部放入队列中,超过队列承载能力,队列会丢失多余的帧,导致开始阶段的数据帧丢失问题;如果队列大小设置过大。这种情况下,一旦队列长时间被数据沾满,会极大的占用内存,这对内存资源紧张的程序来说是致命的问题。


技术实现要素:

4.鉴于以上所述现有技术的缺点,本发明提供一种缓存资源的控制方法和系统,以解决上述技术问题。
5.本发明提供的缓存资源的控制方法,包括:
6.预先设定任务开始时队列的初始容量,所述初始容量包括第一容量;
7.获取缓存资源控制实时参数,所述缓存资源控制实时参数包括任务开始阶段的数据产生速度、任务正常运行阶段的数据产生速度、任务在开始阶段的持续时间、数据消费速度;
8.根据所述缓存资源控制实时参数判断任务状态,当任务进入稳定状态后,将队列的数据容量设置为第二容量,完成缓存资源的控制,所述第一容量大于第二容量。
9.于本发明的一实施例中,对队列的数据容量进行周期性检测;
10.通过对比任务开始后队列中第一个周期检测的数据量和第二个周期检测的数据量,判断任务是否进入稳定状态;
11.如果任务处于稳定状态,则在下一个周期将队列的数据容量设置为第二容量;
12.如果任务处于不稳定状态,则在第二个周期检测后将队列的数据容量设置为第二容量。
13.于本发明的一实施例中,所述判断任务是否进入稳定状态包括:
14.当任务开始后第一个周期检测的数据量大于等于第二个周期检测的数据量,判定任务处于稳定状态;
15.当任务开始后第一个周期检测的数据量小于第二个周期检测的数据量,判定任务
处于不稳定状态。
16.于本发明的一实施例中,对所述第二容量进行动态调整,所述动态调整包括:
17.根据所述任务正常运行阶段的数据产生速度,获取平稳状态下队列的数据容量;
18.在所述平稳状态下队列的数据容量的基础上,通过增加预先设置的冗余容量,获取所述第二容量。
19.于本发明的一实施例中,所述时间周期根据任务在开始阶段的持续时间设定,根据所述初始容量、任务开始阶段的数据产生速度和数据消费速度,获取最大数据保持时间,所述最大数据保持时间大于所述任务在开始阶段的持续时间。
20.于本发明的一实施例中,所述任务开始阶段的数据产生速度大于任务正常运行阶段的数据产生速度,在任务处于稳定状态时,所述数据消费速度大于数据产生速度。
21.于本发明的一实施例中,预先设置扩展比例和最大容量阈值,根据所述平稳状态下队列的数据容量和扩展比例获取所述冗余容量,进而获取所述第二容量,所述第一容量小于等于所述最大容量阈值,获取内存实时占用率,根据所述内存实时占用率对所述扩展比例和最大容量阈值进行调整。
22.本发明还提供一种缓存资源的控制系统,包括:
23.配置模块,用于预先设定任务开始时队列的初始容量,所述初始容量包括第一容量;
24.数据采集模块,用于获取缓存资源控制实时参数,所述缓存资源控制实时参数包括任务开始阶段的数据产生速度、任务正常运行阶段的数据产生速度、任务在开始阶段的持续时间、数据消费速度;
25.控制模块,用于根据缓存资源控制实时参数判断任务状态,当任务进入稳定状态后,将队列的数据容量设置为第二容量,完成缓存资源的控制,所述第一容量大于第二容量。
26.本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述方法。
27.本发明还提供一种电子终端,包括:处理器及存储器;
28.所述存储器用于存储计算机程序,所述处理器用于执行所述存储器存储的计算机程序,以使所述终端执行如上述中任一项所述方法。
29.本发明的有益效果:本发明中的缓存资源的控制方法和系统,通过获取缓存资源控制实时参数,当任务进入稳定状态后,对队列的数据容量进行动态调节,有效的减少了因为大小限制而导致的丢帧问题,实现了数据准确与内存控制两者间的最佳效果,极大程度节约了内存的占用时间,可在高性能要求环境下实施,可以适用于所有在开始阶段数据产生数据大于平稳阶段数据产生速度,且内存资源紧张的场景。
附图说明
30.图1是本发明实施例中缓存资源的控制方法的流程示意图。
31.图2是本发明实施例中缓存资源的控制方法的实施例一点流程示意图。
32.图3是本发明实施例中缓存资源的控制方法中队列为500的开始阶段的空间占用示意图。
33.图4是本发明实施例中缓存资源的控制方法中队列为500的稳定阶段的空间占用示意图。
34.图5是本发明实施例中缓存资源的控制方法中队列为1200的开始阶段的空间占用示意图。
35.图6是本发明实施例中缓存资源的控制方法中队列为250的稳定阶段的空间占用示意图。
具体实施方式
36.以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
37.需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
38.在下文描述中,探讨了大量细节,以提供对本发明实施例的更透彻的解释,然而,对本领域技术人员来说,可以在没有这些具体细节的情况下实施本发明的实施例是显而易见的,在其他实施例中,以方框图的形式而不是以细节的形式来示出公知的结构和设备,以避免使本发明的实施例难以理解。
39.如图1所示,本实施例中的缓存资源的控制方法,包括:
40.s1.预先设定任务开始时队列的初始容量,初始容量包括第一容量;
41.s2.获取缓存资源控制实时参数,缓存资源控制实时参数包括任务开始阶段的数据产生速度、任务正常运行阶段的数据产生速度、任务在开始阶段的持续时间、数据消费速度;
42.s3.根据缓存资源控制实时参数判断任务状态,当任务进入稳定状态后,将队列的数据容量设置为第二容量,完成缓存资源的控制,第一容量大于第二容量。
43.在本实施例的步骤s1中,预先设定队列的初始容量,初始容量包括第一容量,在任务开始时以第一容量作为任务开始的初始容量,预先最大容量阈值,第一容量小于等于所述最大容量阈值,避免由于第一容量设置过大而出现内存资源紧张。在本实施例中,先以第一容量作为初始容量,因为在任务开始阶段,数据产生的速度是远远大于数据消费的速度的,队列中的数据就会不断堆积,设置较大的初始容量可以使后续的数据不会由于队列容量占满,而导致产生数据的大批量丢失。
44.在本实施例的步骤s2中,获取缓存资源控制实时参数,缓存资源控制实时参数包括任务开始阶段的数据产生速度、任务正常运行阶段的数据产生速度、任务在开始阶段的持续时间、数据消费速度,根据缓存资源控制实时参数可以判断任务状态。在本实施例中,如上文所述,在任务开始阶段,数据产生的速度是远远大于数据消费的速度的,这样队列queue中数据就会不断堆积,在任务开始阶段,数据产生的速度为s1,本实施例中可以设为
80张/s;任务正常运行阶段,数据产生的速度为s2,本实施例中可以设为10张/s;任务在开始阶段的持续时间为t,本实施例中可以设为20s;数据消费的速度都为sc,本实施例中可以设为30张/s。如图3所示,如果假设queue的大小为500,则根据上述缓存资源控制实时参数计算:500/(80-30)=10,由于queue固定为500,在第10s中queue就会被占满,但是任务开始阶段的持续时间为20s,即在接下来的10s中的数据就会产生大批量丢失。而在任务稳定阶段,如图4所示,数据的消费速度大于数据产生速度,queue中的数据数量会趋于稳定,但queue还是会预留500个大小的内存。因此,如果将队列设置为固定大小,那么为了减少程序占用内存大小,将queue的大小设置为固定的500,会在任务起始阶段经常会出现queue被占满导致丢数据的情况;而如果将queue的大小设置较大,比如为固定的1000,可以解决初始阶段queue占满丢数据的问题,虽然可以防止数据的丢失,但是在任务平稳阶段,queue会预留1000个大小的内存,由于平稳阶段的数据消费速度是远远大于数据生产速度,1000个预留内存大部分是处于空闲状态,不适用于内存紧张的环境。
45.在本实施例的步骤s3中,当任务进入稳定状态后,将队列的数据容量设置为第二容量,完成缓存资源的控制。通过这种动态调整queue大小的方法,可以较好的解决数据完整性和内存占用合理性的问题。
46.在本实施例中,设置对队列进行周期性检测容量的时间周期;通过对比任务开始后第一个周期检测的数据量和第二个周期检测的数据量,判断任务是否进入稳定状态;
47.如果任务处于稳定状态,则在下一个周期,即第三个周期将队列的数据容量设置为第二容量;
48.如果任务处于不稳定状态,则立即将队列的数据容量设置为第二容量。
49.在本实施例中,当任务开始后第一个周期检测的数据量大于等于第二个周期检测的数据量,判定任务处于稳定状态;当任务开始后第一个周期检测的数据量小于第二个周期检测的数据量,判定任务处于不稳定状态。
50.在本实施例中,第二容量为动态调整的容量,动态调整包括:根据所述任务正常运行阶段的数据产生速度,获取平稳状态下队列的数据容量;在平稳状态下队列的数据容量的基础上,通过增加预先设置的冗余容量,获取第二容量。在本实施例中,可以预先设置扩展比例,根据平稳状态下队列的数据容量和扩展比例获取所述冗余容量,进而获取第二容量,可选的,可以获取内存实时占用率情况,根据所述内存实时占用率对所述扩展比例和最大容量阈值进行调整,当内存资源充足时,可以将扩展比例和最大容量阈值设置相对较大,当内存资源紧张时,可以适当将扩展比例和最大容量阈值设置较小,以避免出现内存资源紧张。时间周期根据任务在开始阶段的持续时间设定,根据初始容量、任务开始阶段的数据产生速度和数据消费速度,获取最大数据保持时间,最大数据保持时间大于任务在开始阶段的持续时间。例如设定队列queue的大小为1200,其余参数如上文所述,任务开始后,根据参数计算1200/(80-30)=24,24s即最大数据保持时间,说明以1200大小的queue可以保证以任务开始阶段的速度,24s不丢数据。本实施例中的检测周期为20s,此值的设置由任务开始阶段持续的时间决定,设置t1=t即可。
51.下面以一个具体实施例进行说明:
52.实施例1
53.如图2所示,在本实施例中,任务开始阶段,数据产生的速度为s1,定为80张/s;任
务正常运行阶段,数据产生的速度为s2,定为10张/s;任务在开始阶段的持续时间为t,定为20s;数据消费的速度都为sc,定为30张/s。
54.s101.任务刚开始,设定队列queue的大小1200,即第一容量;
55.s102.如图5所示,任务开始后,根据参数计算1200/(80-30)=24,通过参数计算可以知晓,以1200大小的queue可以保证以任务开始阶段的速度,会在24s内不丢数据。但在实际工作过程中,在第20s时,数据产生速度已经转为平稳的速度,queue的数据会不断减少;
56.s103.在任务开始后,设置队列大小检测时间t1,这里定为20s(此值的设置由任务开始阶段持续的时间决定,本实施例中的设置为t1=t)。即任务开始后定时20s检测一下queue中的数据量,此时为1000,设为v1,此时任务已转为平稳阶段运行;
57.s104.然后再过t1的时间,即20s后再取一次queue的大小,此时大小应为1000-(30*20-10*20)=600,设为v2。
58.s105.v2《v1,判定任务已进入稳定状态,则再过t1时间即20s后,动态调整queue大小为v,这里定为250,即第二容量,调整的大小可以根据数据产生速度和消费速度来进行计算获取,根据计算本实施例中的再过20s后queue中数量为200,所以大小稍留冗余后,定为250,如图6所示。
59.s106.如果v2》v1,判定任务出现了异常,任务未进入稳定运行阶段,为保证内存不长时间被大批量占用,此时立刻将queue大小调整为250,防止系统内存紧张程序出现out of memory而导致的被杀掉的问题。
60.相应的,本实施例还提供一种缓存资源的控制系统,包括:
61.配置模块,用于预先设定任务开始时队列的初始容量,初始容量包括第一容量;
62.数据采集模块,用于获取缓存资源控制实时参数,所述缓存资源控制实时参数包括任务开始阶段的数据产生速度、任务正常运行阶段的数据产生速度、任务在开始阶段的持续时间、数据消费速度;
63.控制模块,用于根据缓存资源控制实时参数判断任务状态,当任务进入稳定状态后,将队列的数据容量设置为第二容量,完成缓存资源的控制,第一容量大于第二容量。
64.本实施例中的缓存资源的控制系统,通过上述实施例中的方法,可在保证初始化数据不丢失的前提下,也保障了不会长时间占用过大内存的问题,很好的提升了性能与程序的稳定性,通过动态调节缓存的方式,实现了数据准确与内存控制两者间的最佳效果,适用于所有在开始阶段数据产生数据大于平稳阶段数据产生速度,且内存资源紧张的场景。
65.本实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本实施例中的任一项方法。
66.本实施例还提供一种电子终端,包括:处理器及存储器;
67.所述存储器用于存储计算机程序,所述处理器用于执行所述存储器存储的计算机程序,以使所述终端执行本实施例中任一项方法。
68.本实施例中的计算机可读存储介质,本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过计算机程序相关的硬件来完成。前述的计算机程序可以存储于一计算机可读存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
69.本实施例提供的电子终端,包括处理器、存储器、收发器和通信接口,存储器和通
信接口与处理器和收发器连接并完成相互间的通信,存储器用于存储计算机程序,通信接口用于进行通信,处理器和收发器用于运行计算机程序,使电子终端执行如上方法的各个步骤。
70.在本实施例中,存储器可能包含随机存取存储器(random access memory,简称ram),也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
71.上述的处理器可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器(digital signal processing,简称dsp)、专用集成电路(application specific integrated circuit,简称asic)、现场可编程门阵列(field-programmable gate array,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
72.在上述实施例中,除非另外规定,否则通过使用“第一”、“第二”等序号对共同的对象进行描述,只表示其指代相同对象的不同实例,而非是采用表示被描述的对象必须采用给定的顺序,无论是时间地、空间地、排序地或任何其他方式。在上述实施例中,说明书对“本实施例”、“一实施例”、“另一实施例”、或“其他实施例”的提及表示结合实施例说明的特定特征、结构或特性包括在至少一些实施例中,但不必是全部实施例。“本实施例”、“一实施例”、“另一实施例”的多次出现不一定全部都指代相同的实施例。
73.在上述实施例中,尽管已经结合了本发明的具体实施例对本发明进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变形对本领域普通技术人员来说将是显而易见的。例如,其他存储结构(例如,动态ram(dram))可以使用所讨论的实施例。本发明的实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。
74.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
75.本发明可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络pc、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
76.本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
77.上述实施例仅示例性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,但凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献