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

一种缓存回收方法、装置、电子设备及存储介质与流程

2022-12-06 23:57:08 来源:中国专利 TAG:


1.本发明实施例涉及计算机技术领域,尤其涉及一种缓存回收方法、装置、电子设备及存储介质。


背景技术:

2.在计算机系统中,内存是一种紧缺而宝贵的资源,应用程序必须在内存的基础上运行。如果应用程序运行所需的内存大于计算机系统中的可用内存,则无法在计算机系统中运行该应用程序。因此为了确保在计算机系统中运行各种应用程序,需要进行缓存回收,使计算机系统中的可用内存能够满足应用程序运行。例如,在linux系统中包括两种系统默认的缓存回收方法:一种是通过设置最小可用内存参数,在可用内存小于最小可用内存参数时,linux系统自动进行缓存回收;另一种是通过echo命令的方式主动进行缓存回收。
3.然而,在上述第一种方法中通常为了防止系统频繁触发缓存回收,将最小可用内存参数设置较小的数值,因此一般不会出现可用内存小于最小可用内存参数的情况。在上述第二种方法中,需要主动执行echo命令,无法准确把握合理的缓存回收时机,如果定期执行echo命令,可能造成缓存过度清理,影响访问效率。因此,现有的缓存回收方法无法自动且合理的对缓存进行回收,从而影响系统工作效率和系统的稳定性。


技术实现要素:

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.确定缓存回收数据,并将所述缓存回收数据进行存储;
31.其中,所述缓存回收数据至少包括缓存回收统计数据和缓存回收详细数据。
32.上述发明中的一个实施例具有如下优点或有益效果:通过确定缓存回收数据,并将缓存回收数据进行存储,能够实时查看总回收次数,总回收缓存页数以及每次回收耗时极大值、极小值等情况,实现了缓存回收情况的监测,而且能够根据实际场景需求提前触发缓存回收,实现了对缓存回收的自由控制以及对缓存回收量的控制。
33.可选的,在所述确定缓存回收阈值之前,还包括:
34.根据系统运行需求对所述缓存回收阈值进行调整。
35.上述发明中的一个实施例具有如下优点或有益效果:通过对缓存回收阈值进行调
整,实现了缓存回收的可控性,能够针对不同环境配置相应的参数数值,从而达到控制缓存回收量的目的,使系统可用内存保持在理想状态,不会因缓存占用过大而导致可用内存不足。
36.根据本发明的另一方面,提供了一种缓存回收装置,包括:
37.回收初始数据确定模块,用于在定时事件触发时,确定当前可用内存量和缓存回收阈值;
38.当前可回收内存量确定模块,用于根据所述当前可用内存量和所述缓存回收阈值,确定当前可回收内存量;
39.缓存回收模块,用于确定系统允许回收内存量,并根据所述当前可回收内存量和所述系统允许回收内存量,进行缓存回收。
40.根据本发明的另一方面,提供了一种电子设备,所述电子设备包括:
41.至少一个处理器;以及
42.与所述至少一个处理器通信连接的存储器;其中,
43.所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例所述的缓存回收方法。
44.根据本发明的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本发明任一实施例所述的缓存回收方法。
45.本发明实施例的技术方案,通过在定时事件触发时确定当前可用内存量和缓存回收阈值,根据当前可用内存量和缓存回收阈值确定当前可回收内存量,并确定系统允许回收内存量,以根据当前可回收内存量和系统允许回收内存量进行缓存回收,解决了现有缓存回收方法由于无法自动且合理的对缓存进行回收而导致的系统工作效率低和系统稳定性差等问题,能够自动且合理的对缓存进行回收,提高系统内存资源的可用性,从而提高系统工作效率和系统稳定性。
46.应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
47.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
48.图1是本发明实施例一提供的一种缓存回收方法的流程图;
49.图2是本发明实施例二提供的一种缓存回收方法的流程图;
50.图3是本发明实施例二提供的一种系统内存情况的示意图;
51.图4是本发明实施例二提供的另一种系统内存情况的示意图;
52.图5是本发明实施例二提供的一种缓存回收统计数据的示意图;
53.图6是本发明实施例二提供的一种缓存回收详细数据的示意图;
54.图7是本发明实施例二提供的一种缓存回收方法的原理示意图;
55.图8是本发明实施例三提供的一种缓存回收方法的流程图;
56.图9是本发明实施例四提供的一种缓存回收装置的示意图;
57.图10是实现本发明实施例的缓存回收方法的电子设备的结构示意图。
具体实施方式
58.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
59.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
60.实施例一
61.图1是本发明实施例一提供的一种缓存回收方法的流程图,本实施例可适用于自动且合理的对缓存进行回收的情况,该方法可以由缓存回收装置执行,该装置可以通过软件和/或硬件的方式实现,并一般可以直接集成在执行本方法的电子设备中,该电子设备可以是终端设备,也可以是服务器设备,本发明实施例并不对执行缓存回收方法的电子设备的类型进行限定。具体的,如图1所示,该缓存回收方法具体可以包括如下步骤:
62.s110、在定时事件触发时,确定当前可用内存量和缓存回收阈值。
63.其中,定时事件可以是定时进行缓存回收扫描的事件。定时事件触发可以是定时触发缓存回收扫描事件,开始进行缓存回收扫描。缓存回收扫描可以是扫描缓存,以确定是否需要进行缓存回收。可以理解的是,定时可以是设定的时间,也可以是设定的时间间隔等,本发明实施例对此并不进行限制。
64.其中,当前可用内存量可以是在开始进行缓存回收扫描时,系统中可以使用的、空闲的内存量。可以理解的是,系统中有应用程序在运行时,会有一部分内存被占用,被占用的内存无法支撑新的应用程序运行,因此新的应用程序运行只能依靠系统中可以使用的、空闲的内存。缓存回收阈值可以是与缓存回收相关的任意参数的阈值,例如可以是触发缓存回收的内存阈值,也可以是停止缓存回收的内存阈值等,本发明实施例对此并不进行限制。
65.在本发明实施例中,在定时事件触发时,确定当前可用内存量和缓存回收阈值。可以理解的是,本发明实施例对确定当前可用内存量和缓存回收阈值的具体实现方式并不进行限制,只要能够实现当前可用内存量和缓存回收阈值的确定即可。
66.s120、根据所述当前可用内存量和所述缓存回收阈值,确定当前可回收内存量。
67.其中,当前可回收内存量可以是当前被占用的内存中能够被回收的内存量。
68.在本发明实施例中,在确定当前可用内存量和缓存回收阈值之后,可以进一步根据当前可用内存量和缓存回收阈值,确定当前可回收内存量。可选的,确定当前可用内存量和缓存回收阈值是否满足缓存回收条件,并在满足缓存回收条件时确定当前可回收内存量。可以理解的是,如果不满足缓存回收条件,则返回等待定时事件的触发。
69.在计算机系统中,对于需要频繁读写的文件进行缓存,以在下一次进行读写时可以直接在缓存中获取,不需要访问磁盘,从而能够提高系统的读写速度。然而,为了使计算机系统中的可用内存能够满足应用程序的运行,需要将被占用的内存中能够被回收的内存量,也即当前可回收内存量进行缓存回收。
70.示例性的,在linux系统中,通常将页高速缓存(page cache)作为主要的磁盘高速缓存,内核在读写磁盘时可以引用页高速缓存。新页被追加到页高速缓存以满足用户态进程的读请求,若页不在高速缓存中,则新页将被追加到高速缓存,再从磁盘读出数据填充该新页,如果系统内存有足够的空闲空间,则可以将该页在高速缓存中长期保留,以使其他进程使用该页时不需访问磁盘。相应的,在将页数据写入块设备之前,内核检查对应的页是否已经在高速缓存中,如果不在则增加一个新页,并使用需要写到磁盘中的数据填充此页,等待数据对磁盘数据进行更新。
71.s130、确定系统允许回收内存量,并根据所述当前可回收内存量和所述系统允许回收内存量,进行缓存回收。
72.其中,系统允许回收内存量可以是被占用的内存中系统允许回收的内存量。可以理解的是,在被占用的内存中不是所有的内存都可以被回收,例如正在使用中的内存,或者使用频繁的内存等可以被确定为不允许回收的内存。如果将不允许回收的内存进行回收,则会导致系统磁盘读写压力增大,降低系统读取速度,甚至影响系统稳定性。
73.在本发明实施例中,在根据当前可用内存量和缓存回收阈值确定当前可回收内存量之后,可以进一步确定系统允许回收内存量,以根据当前可回收内存量和系统允许回收内存量进行缓存回收。
74.本实施例的技术方案,通过在定时事件触发时确定当前可用内存量和缓存回收阈值,根据当前可用内存量和缓存回收阈值确定当前可回收内存量,并确定系统允许回收内存量,以根据当前可回收内存量和系统允许回收内存量进行缓存回收,解决了现有缓存回收方法由于无法自动且合理的对缓存进行回收而导致的系统工作效率低和系统稳定性差等问题,能够自动且合理的对缓存进行回收,提高系统内存资源的可用性,从而提高系统工作效率和系统稳定性。
75.实施例二
76.图2是本发明实施例二提供的一种缓存回收方法的流程图,本实施例是对上述各技术方案的进一步细化,给出了根据所述当前可用内存量和所述缓存回收阈值,确定当前可回收内存量,以及据所述当前可回收内存量和所述系统允许回收内存量,进行缓存回收的多种具体可选的实现方式。本实施例中的技术方案可以与上述一个或多个实施例中的各个可选方案结合。如图2所示,该方法可以包括如下步骤:
77.s210、在定时事件触发时,确定当前可用内存量和缓存回收阈值。
78.可选的,定时事件触发可以通过wait_us参数进行设定,wait_us参数可以动态控
制缓存回收的扫描间隔,以防止回收过于频繁或稀疏。
79.可选的,缓存回收阈值可以包括缓存回收下限阈值,根据缓存回收上限比例确定的第一上限阈值,根据缓存回收上限数值确定的第二上限阈值以及缓存回收页数阈值。
80.其中,缓存回收下限阈值可以是触发缓存回收的阈值。可以理解的是,当前可用内存量低于缓存回收下限阈值时,可以触发缓存回收。缓存回收上限比例可以是停止缓存回收的比例值。第一上限阈值可以是根据停止缓存回收的比例值确定的阈值。缓存回收上限数值可以是停止缓存回收的数值。第二上限阈值可以是根据停止缓存回收的数值确定的阈值。可以理解的是,当前可用内存量高于或等于第一上限阈值或第二上限阈值时,可以停止缓存回收。缓存回收页数阈值可以是在每次缓存回收过程中回收页数的阈值。示例性的,缓存回收页数阈值可以是回收页数的最大值,可以根据nr_perround参数确定。
81.可选的,缓存回收下限阈值可以根据缓存回收下限比例和系统总内存确定。其中,缓存回收下限比例可以是触发缓存回收的比例值。示例性的,如果缓存回收下限比例为5%,系统总内存为62g,则缓存回收下限阈值可以是3.1g。
82.可选的,第一上限阈值可以根据缓存回收上限比例和系统总内存确定。示例性的,如果缓存回收上限比例为6%,系统总内存为62g,则第一上限阈值可以是3.72g。
83.可选的,在确定缓存回收阈值之前,还可以包括:根据系统运行需求对缓存回收阈值进行调整。
84.具体的,在确定缓存回收阈值之前,可以根据系统运行需求对缓存回收阈值进行调整,以使在缓存回收之后系统中的可用内存能够满足系统运行需求。
85.上述技术方案,通过对缓存回收阈值进行调整,实现了缓存回收的可控性,能够针对不同环境配置相应的参数数值,从而达到控制缓存回收量的目的,使系统可用内存保持在理想状态,不会因缓存占用过大而导致可用内存不足。
86.可选的,在根据系统运行需求对缓存回收阈值进行调整之前,还可以根据系统总内存确定缓存回收阈值的初始默认值,并对缓存回收阈值的初始默认值进行校验,以便缓存回收阈值的初始默认值适用于各种不同的环境。
87.示例性的,缓存回收下限比例thredshould_low和缓存回收上限比例thredshould_high的初始默认值可以分别是系统总内存的1%和2%。在系统总内存为16g时,缓存回收上限数值upper_mbytes可以是256m。在系统总内存为32g时,upper_mbytes可以是512m。在系统总内存为64g时,upper_mbytes可以是1024m。在系统总内存为128g时,upper_mbytes可以是2048m。在系统总内存为256g时,upper_mbytes可以是4096m。
88.示例性的,在linux系统中,可以通过free命令查看系统的内存情况。图3是本发明实施例二提供的一种系统内存情况的示意图,如图3所示,系统总内存为62g,当前可用内存量(也即free)为1.9g,被占用的内存中buff/cache占用的缓存为7.8g。图4是本发明实施例二提供的另一种系统内存情况的示意图,如图4所示,系统总内存为62g,当前可用内存量(也即free)为3.7g,被占用的内存中的缓存(也即buff/cache)为4.2g。
89.在图3中,thredshould_high为系统总内存的4%,thredshould_low为系统总内存的3%,当前可用内存量大于缓存回收下限阈值,此时不需要进行缓存回收。在图4中,对缓存回收阈值进行调整,thredshould_high为系统总内存的6%,thredshould_low为系统总内存的5%,当前可用内存量小于缓存回收下限阈值,可以进行缓存回收。如图3和图4所示,
buff/cache被回收3.6g,当前可用内存量为3.7g。
90.当系统中有进程在运行时,buff/cache会占用一部分内存。buff是一种i/o(input/output,输入输出)缓存,用于内存和磁盘的缓冲,是i/o设备的读写缓冲区,为磁盘的读写而设计,将分散的写操作集中进行,减少磁盘碎片和磁盘的反复寻道,从而提高系统性能。cache是一种高速缓存,为了提高访问效率所产生的读写缓存页,可以用于cpu和内存之间的缓冲,是文件系统的cache,把读取过来的数据保存起来,重新读取时若命中就不再需要去读磁盘,cache中的数据根据读取频率进行组织,把最频繁读取的内容放在最容易找到的位置,把不再读取的内容不断向后排列,直至从cache中删除。buff和cache都是占用系统内存的,两者都是ram中的数据。也即buff是将要被写入磁盘的,而cache是从磁盘中读出来的;通常在频繁读取文件后,会导致buff/cache的占用量增高,从而导致当前可用内存量减小。
91.s220、在所述当前可用内存量小于缓存回收下限阈值的情况下,确定系统回收阈值。
92.其中,系统回收阈值可以是根据系统自身的缓存回收机制确定的阈值。示例性的,在linux系统中,系统回收阈值可以是根据最小可用内存参数(min_free_kbytes)确定的低水位值(low watermark)。需要说明的是,在linux系统中,当前可用内存量小于min_free_kbytes参数时,linux系统自动进行缓存回收。
93.在本发明实施例中,在确定当前可用内存量和缓存回收阈值之后,可以进一步在当前可用内存量小于缓存回收下限阈值的情况下,确定系统回收阈值,以确定当前可用内存量是否大于系统回收阈值。
94.s230、在所述当前可用内存量大于所述系统回收阈值的情况下,根据第一上限阈值和第二上限阈值,确定所述当前可回收内存量。
95.在本发明实施例中,在确定系统回收阈值之后,可以进一步确定当前可用内存量是否大于系统回收阈值,并在当前可用内存量大于系统回收阈值时,根据第一上限阈值和第二上限阈值确定当前可回收内存量。
96.上述技术方案,通过确定系统回收阈值,并将当前可用内存量和系统回收阈值进行数值大小比较,能够避免当前可用内存量小于系统回收阈值时进行缓存回收,也即在当前可用内存量小于系统回收阈值时不进行缓存回收,从而避免与系统自身回收机制触发的缓存回收发生竞争;通过根据第一上限阈值和第二上限阈值确定当前可回收内存量,能够更准确的确定当前可回收内存量,从而确保缓存回收的顺利进行。
97.可选的,根据第一上限阈值和第二上限阈值,确定当前可回收内存量,可以包括:在第一上限阈值小于第二上限阈值时,将第一上限阈值确定为当前可回收内存量;或,在第一上限阈值大于第二上限阈值时,将第二上限阈值确定为当前可回收内存量。
98.具体的,在确定系统回收阈值之后,可以进一步确定当前可用内存量是否大于系统回收阈值,并在当前可用内存量大于系统回收阈值时,判断第一上限阈值和第二上限阈值的数值大小,并在第一上限阈值小于第二上限阈值时,将第一上限阈值确定为当前可回收内存量,或者,在第一上限阈值大于第二上限阈值时,将第二上限阈值确定为当前可回收内存量。也即,将第一上线阈值和第二上限阈值中数值最小的确定为当前可回收内存量。
99.s240、确定系统允许回收内存量,并比较所述当前可回收内存量和所述系统允许
回收内存量,根据比较结果确定目标回收内存量。
100.其中,目标回收内存量可以是回收的内存量的目标值。
101.在本发明实施例中,在根据第一上限阈值和第二上限阈值确定当前可回收内存量之后,可以进一步确定系统允许回收内存量,以比较当前可回收内存量和系统允许回收内存量,从而根据比较结果确定目标回收内存量。
102.上述技术方案,通过对当前可回收内存量和系统允许回收内存量进行比较,并根据比较结果确定目标回收内存量,以根据目标回收内存量进行缓存回收,从而避免了在缓存过程中由于无法达到回收量导致的频繁触发回收的情况,能够更顺利的进行缓存回收。
103.可选的,比较当前可回收内存量和系统允许回收内存量,根据比较结果确定目标回收内存量,可以包括:在当前可回收内存量小于系统允许回收内存量的情况下,将当前可回收内存量确定为目标回收内存量;或,在当前可回收内存量大于系统允许回收内存量的情况下,将系统允许回收内存量确定为目标回收内存量。
104.具体的,在根据第一上限阈值和第二上限阈值确定当前可回收内存量之后,可以进一步确定系统允许回收内存量,以在当前可回收内存量小于系统允许回收内存量时,将当前可回收内存量确定为目标回收内存量,或者在当前可回收内存量大于系统允许回收内存量时,将系统允许回收内存量确定为目标回收内存量。也即,将根据第一上限阈值和第二上限阈值中数值最小的确定为目标回收内存量。
105.可以理解的是,在linux系统中并不是所有的缓存页都可进行回收。当缓存页处于使用状态时,free buff/cache大于系统允许回收内存量(available),此时如果当前可回收内存量大于avaliable,则会导致回收无法达到目标值,从而频繁触发回收。因此当前可回收内存量大于avaliable时,将avaliable确定为目标回收内存量,从而根据avaliable进行缓存回收。
106.s250、根据所述目标回收内存量确定目标回收页面数量。
107.其中,目标回收页面数量可以是回收页面数量的目标值。
108.在本发明实施例中,在根据比较结果确定目标回收内存量之后,可以进一步根据目标回收内存量确定目标回收页面数量。示例性的,在linux系统中,每个page页默认为4k大小。需要说明的是,本发明实施例对根据目标回收内存量确定目标回收页面数量的具体实现方式并不进行限制,只要能够实现根据目标回收内存量确定目标回收页面数量即可。
109.s260、根据所述目标回收页面数量和缓存回收页数阈值,确定当前回收页面数量。
110.其中,当前回收页面数量可以是当前缓存回收轮次,进行回收的页面数量。
111.在本发明实施例中,在根据目标回收内存量确定目标回收页面数量之后,可以进一步根据目标回收页面数量和缓存回收页数阈值确定当前回收页面数量。
112.可选的,根据目标回收页面数量和缓存回收页数阈值,确定当前回收页面数量,可以包括:在目标回收页面数量小于缓存回收页数阈值的情况下,将目标回收页面数量确定为当前回收页面数量;或,在目标回收页面数量大于缓存回收页数阈值的情况下,将缓存回收页数阈值确定为当前回收页面数量。
113.具体的,在根据目标回收内存量确定目标回收页面数量之后,可以进一步确定目标回收页面数量和缓存回收页数阈值的数值大小,并在目标回收页面数量小于缓存回收页数阈值时,将目标回收页面数量确定为当前回收页面数量,或者,在目标回收页面数量大于
缓存回收页数阈值时,将缓存回收页数阈值确定为当前回收页面数量。也即,将目标回收页面数量和缓存回收页数阈值中数值最小的确定为当前回收页面数量。
114.s270、确定待回收页面的页面标识,并在所述页面标识为可回收标识的情况下,对所述待回收页面进行回收,直至已回收页面数量满足所述当前回收页面数量。
115.其中,待回收页面可以是任意一个能够被回收的缓存页。页面标识可以是缓存页的标识,可以用于标识缓存页是否可以被回收。可回收标识可以表征缓存页能够被回收。已回收页面数量可以是在缓存回收过程中,已经回收的缓存页的数量。
116.在本发明实施例中,在根据目标回收页面数量和缓存回收页数阈值确定当前回收页面数量之后,可以进一步确定待回收页面的页面标识,以在页面标识为可回收标识时,对待回收页面进行回收,从而在已回收页面数量满足当前回收页面数量时,结束本轮缓存回收。
117.上述技术方案,提出了根据目标回收内存量进行缓存回收的具体实现方式,通过确定当前回收页面数量,并在待回收页面的页面标识为可回收标识时进行回收,以在已回收页面数量满足当前回收页面数量时结束当前轮次的缓存回收,从而能够更合理的对缓存进行回收。
118.可选的,在根据当前可回收内存量和系统允许回收内存量,进行缓存回收之后,还可以包括:确定缓存回收数据,并将缓存回收数据进行存储;其中,缓存回收数据至少包括缓存回收统计数据和缓存回收详细数据。
119.其中,缓存回收数据可以是缓存回收过程中产生的任意数据。缓存回收统计数据可以是每轮缓存回收之后进行统计的数据,例如可以包括历史回收内存页数、回收总次数、回收最大耗时和回收最小耗时等,本发明实施例对此并不进行限制。缓存回收详细数据可以是每轮缓存回收过程中的详细数据,例如可以包括缓存回收时刻和缓存回收量等,本发明实施例对此并不进行限制。
120.具体的,在根据当前可回收内存量和系统允许回收内存量进行缓存回收之后,还可以进一步确定缓存回收数据,并将缓存回收数据进行存储。
121.示例性的,图5是本发明实施例二提供的一种缓存回收统计数据的示意图,如图5所示,历史回收内存页数(也即pages)为7606413,回收总次数(也即times)为47,回收最大耗时(也即tmax)为1155922100,回收最小耗时(也即tmin)为25773480。在每次进行缓存回收结束之后,可以将缓存回收的内存页数与存储的历史回收内存页数进行加和,以对历史回收内存页数进行更新;可以将回收总次数加一,以对回收总次数进行更新;确定当前轮次的缓存回收的耗时,并与存储的回收最大耗时和回收最小耗时进行数值大小比较,若当前轮次的缓存回收的耗时大于存储的回收最大耗时,则将回收最大耗时更新为当前轮次的缓存回收的耗时,若当前轮次的缓存回收的耗时小于存储的回收最小耗时,则将回收最小耗时更新为当前轮次的缓存回收的耗时。
122.示例性的,图6是本发明实施例二提供的一种缓存回收详细数据的示意图,如图6所示,在每次缓存回收结束后,都可以将缓存回收时刻和缓存回收量存储到日志文件(message)中。
123.上述技术方案,通过确定缓存回收数据,并将缓存回收数据进行存储,能够实时查看总回收次数,总回收缓存页数以及每次回收耗时极大值、极小值等情况,实现了缓存回收
情况的监测,而且能够根据实际场景需求提前触发缓存回收,实现了对缓存回收的自由控制以及对缓存回收量的控制。
124.本实施例的技术方案,通过在定时事件触发时确定当前可用内存量和缓存回收阈值,并在当前可用内存量小于缓存回收下限阈值时确定系统回收阈值,在当前可用内存量大于系统回收阈值时,根据第一上限阈值和第二上限阈值确定当前可回收内存量,并确定系统允许回收内存量,以比较当前可回收内存量和系统允许回收内存量,根据比较结果确定目标回收内存量,从而根据目标回收内存量确定目标回收页面数量,并根据目标回收页面数量和缓存回收页数阈值确定当前回收页面数量,再确定待回收页面的页面标识,并在页面标识为可回收标识时,对待回收页面进行回收,进而在已回收页面数量满足当前回收页面数量时结束本轮缓存回收,解决了现有缓存回收方法由于无法自动且合理的对缓存进行回收而导致的系统工作效率低和系统稳定性差等问题,能够自动且合理的对缓存进行回收,提高系统内存资源的可用性,从而提高系统工作效率和系统稳定性。
125.为了使本领域技术人员更好地理解本实施例的缓存回收方法,下面以linux系统的具体应用场景为例进行具体说明。图7是本发明实施例二提供的一种缓存回收方法的原理示意图,如图7所示,该缓存回收方法(也即shrinkmem)可以是基于numa(non uniform memory access,非一致性内存访问架构)架构实现的,可以被封装在linux内核的module(模块)中,可以启动一个永久性线程实现shrinkmem,此线程生命周期与系统的生命周期同步。系统启动后加载shrinkmem对应的module启动该线程,当系统退出时卸载shrinkmem对应的module停止该线程。可以通过信号量sem_stop来控制线程是否结束,sem_stop将会在系统卸载shrinkmem module时唤醒,若线程扫描中成功获取信号sem_stop将会永久性停止线程的检测任务,准备退出。线程将会不断扫描系统可用内存量(也即当前可用内存量),若回收条件满足则计算可回收缓存页数(也即当前回收页面数量),并通过遍历所有numa进行缓存回收。其中,线程的扫描间隔可通过参数wait_us进行调整。
126.具体的,该方法可以包括以下内容:
127.(1)加载shrinkmem module流程。首先,加载内核函数do_try_to_free_pages,此函数为回收缓存页的主函数,在内核函数do_try_to_free_pages中会依次调用shrink_zones函数、shrink_node函数以及shrink_node_memcg函数,以完成缓存回收的回收流程。其次,根据系统总内存对缓存回收阈值的初始默认值进行校验,以便缓存回收阈值的初始默认值适用于各种不同的环境。
128.(2)初始化并启动shrinkemem扫描线程。扫描线程(也即定时事件)可以检测系统环境是否达到回收阈值,并以循环方式重复执行检测任务。同时对shrinkmem的检测文件进行初始化,并将每次缓存回收的信息(也即缓存回收数据)进行实时记录,以将缓存回收数据存储至检测文件中。具体的,缓存回收数据可以包括缓存回收的次数、成功回收缓存页数、耗时等信息等,从而实现缓存回收流程数据化。
129.(3)缓存回收。缓存回收可以包括准备阶段和回收阶段。
130.具体的,准备阶段可以进行回收条件的判断以及目标回收量的计算。可以通过nr_free_pages标记确定可用状态page的数量,从而根据可用状态page的数量可以确定当前可用内存量。
131.具体的,回收阶段可用遍历各个numa分别进行回收,直至达到回收目标(也即当前
回收页面数量)为止。可用理解的是,内存页挂载在zone(分区)中,并通过zonelist(分区列表)与各个numa关联。在每个numa中带有内存掩码标记gfp_highuser_movable(也即可回收标识)的内存页可以是内存管理区内的可迁移页面(也即页面标识为可回收标识的待回收页面),待回收页面可以被cache使用。可用通过可回收标识确定zonelist中的可回收页面(也即页面标识为可回收标识的待回收页面)并进行回收。需要说明的是,每轮回收不只面对当前numa的zone,而是面对当前nuam的zonelist,zonelist可以将所有numa的zone都链在一起。如果当前轮次缓存回收的页面数量不足,则可以确定在整个zonelist上可回收页面量不足。
132.可以理解的是,缓存回收线程的运行也需要内存。因此,为了保证缓存回收过程的顺利,可以将缓存回收过程中所使用的内存标记为pf_memalloc,从而能够保证在紧急情况下成功获取缓存回收线程运行所需的内存。
133.上述技术方案,在缓存回收过程能够对缓存回收阈值的参数进行控制,实现了可控的缓存回收流程,达到缓存回收阈值的可动态调节,从而避免了在未触发内核回收时,缓存占用较多且长时间不回收的情况,同时达到了缓存回收量的动态调整;通过将每次缓存回收进行监测记录,实现了对缓存回收量及耗时情况的监控。
134.实施例三
135.图8是本发明实施例三提供的一种缓存回收方法的流程图,如图8所示,具体可以包括以下步骤:
136.s810、根据系统运行需求对缓存回收阈值进行调整。
137.s820、在定时事件触发时,确定当前可用内存量和缓存回收阈值。
138.s830、在当前可用内存量小于缓存回收下限阈值的情况下,确定系统回收阈值。
139.s840、在当前可用内存量大于系统回收阈值的情况下,根据第一上限阈值和第二上限阈值,确定当前可回收内存量。
140.s850、确定系统允许回收内存量,并比较当前可回收内存量和系统允许回收内存量,根据比较结果确定目标回收内存量。
141.s860、根据目标回收内存量确定目标回收页面数量。
142.s870、根据目标回收页面数量和缓存回收页数阈值,确定当前回收页面数量。
143.s880、确定待回收页面的页面标识,并在页面标识为可回收标识的情况下,对待回收页面进行回收,直至已回收页面数量满足当前回收页面数量。
144.s890、确定缓存回收数据,并将缓存回收数据进行存储;其中,缓存回收数据至少包括缓存回收统计数据和缓存回收详细数据。
145.上述技术方案,能够自动且合理的对缓存进行回收,提高系统内存资源的可用性,从而提高系统工作效率和系统稳定性。
146.实施例四
147.图9是本发明实施例四提供的一种缓存回收装置的示意图,如图9所示,所述装置包括:缓存数据确定模块910、当前可回收内存量确定模块920以及缓存回收模块930,其中:
148.缓存数据确定模块910,用于在定时事件触发时,确定当前可用内存量和缓存回收阈值;
149.当前可回收内存量确定模块920,用于根据所述当前可用内存量和所述缓存回收
阈值,确定当前可回收内存量;
150.缓存回收模块930,用于确定系统允许回收内存量,并根据所述当前可回收内存量和所述系统允许回收内存量,进行缓存回收。
151.本实施例的技术方案,通过在定时事件触发时确定当前可用内存量和缓存回收阈值,根据当前可用内存量和缓存回收阈值确定当前可回收内存量,并确定系统允许回收内存量,以根据当前可回收内存量和系统允许回收内存量进行缓存回收,解决了现有缓存回收方法由于无法自动且合理的对缓存进行回收而导致的系统工作效率低和系统稳定性差等问题,能够自动且合理的对缓存进行回收,提高系统内存资源的可用性,从而提高系统工作效率和系统稳定性。
152.可选的,缓存回收阈值可以包括缓存回收下限阈值;相应的,当前可回收内存量确定模块920,可以具体用于:在当前可用内存量小于缓存回收下限阈值的情况下,确定系统回收阈值;在当前可用内存量大于系统回收阈值的情况下,确定当前可回收内存量。
153.可选的,缓存回收阈值可以包括根据缓存回收上限比例确定的第一上限阈值,以及根据缓存回收上限数值确定的第二上限阈值;相应的,当前可回收内存量确定模块920,可以进一步用于:根据第一上限阈值和第二上限阈值,确定当前可回收内存量。
154.可选的,缓存回收模块930,可以具体用于:比较当前可回收内存量和系统允许回收内存量,根据比较结果确定目标回收内存量;根据目标回收内存量进行缓存回收。
155.可选的,缓存回收阈值可以包括缓存回收页数阈值;相应的,缓存回收模块930,可以进一步用于:根据目标回收内存量确定目标回收页面数量;根据目标回收页面数量和缓存回收页数阈值,确定当前回收页面数量;确定待回收页面的页面标识,并在页面标识为可回收标识的情况下,对待回收页面进行回收,直至已回收页面数量满足当前回收页面数量。
156.可选的,缓存回收模块930,还可以具体用于:确定缓存回收数据,并将缓存回收数据进行存储;其中,缓存回收数据至少包括缓存回收统计数据和缓存回收详细数据。
157.可选的,缓存数据确定模块910,可以具体用于:根据系统运行需求对缓存回收阈值进行调整。
158.本发明实施例所提供的缓存回收装置可执行本发明任意实施例所提供的缓存回收方法,具备执行方法相应的功能模块和有益效果。
159.实施例五
160.图10示出了可以用来实施本发明的实施例的电子设备10的结构示意图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
161.如图10所示,电子设备10包括至少一个处理器11,以及与至少一个处理器11通信连接的存储器,如只读存储器(rom)12、随机访问存储器(ram)13等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器11可以根据存储在只读存储器(rom)12中的计算机程序或者从存储单元18加载到随机访问存储器(ram)13中的计算机程序,来执行各种适当的动作和处理。在ram 13中,还可存储电子设备10操作所需的各种程序和数据。处理
器11、rom 12以及ram 13通过总线14彼此相连。输入/输出(i/o)接口15也连接至总线14。
162.电子设备10中的多个部件连接至i/o接口15,包括:输入单元16,例如键盘、鼠标等;输出单元17,例如各种类型的显示器、扬声器等;存储单元18,例如磁盘、光盘等;以及通信单元19,例如网卡、调制解调器、无线通信收发机等。通信单元19允许电子设备10通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
163.处理器11可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器11的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。处理器11执行上文所描述的各个方法和处理,例如缓存回收方法。
164.在一些实施例中,缓存回收方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元18。在一些实施例中,计算机程序的部分或者全部可以经由rom 12和/或通信单元19而被载入和/或安装到电子设备10上。当计算机程序加载到ram 13并由处理器11执行时,可以执行上文描述的缓存回收方法的一个或多个步骤。备选地,在其他实施例中,处理器11可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行缓存回收方法。
165.本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、负载可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
166.用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
167.在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
168.为了提供与用户的交互,可以在电子设备上实施此处描述的系统和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)
监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
169.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)、区块链网络和互联网。
170.计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与vps服务中,存在的管理难度大,业务扩展性弱的缺陷。
171.应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
172.上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献