CN111459852B - 缓存控制方法和装置以及电子设备 - Google Patents
缓存控制方法和装置以及电子设备 Download PDFInfo
- Publication number
- CN111459852B CN111459852B CN201910060370.7A CN201910060370A CN111459852B CN 111459852 B CN111459852 B CN 111459852B CN 201910060370 A CN201910060370 A CN 201910060370A CN 111459852 B CN111459852 B CN 111459852B
- Authority
- CN
- China
- Prior art keywords
- cache
- data
- task
- target
- usage amount
- 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 42
- 238000004140 cleaning Methods 0.000 claims abstract description 97
- 238000004891 communication Methods 0.000 description 9
- 238000005201 scrubbing Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 6
- 230000004044 response Effects 0.000 description 5
- 230000005236 sound signal Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- 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
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明实施例提供了一种缓存控制方法和装置以及电子设备。该方法用于为至少一个任务提供数据缓存服务,每个所述任务独立配置有第一缓存和第二缓存,且所述任务仅从所述第一缓存读取数据,所述方法包括:获取各任务的总缓存使用量,所述总缓存使用量为各所述任务的第一缓存使用量和第二缓存使用量之和;当所述总缓存使用量大于总容量阈值时,仅对所述第二缓存执行数据清理操作。本发明实施例通过为任务配置专门用于提供数据读取服务的缓存和专门用于存储待清理数据的缓存,使得在清理缓存时,不影响任务对缓存数据的读取,因此无需对锁定任务,从而较大地节约了系统开销。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种缓存控制方法和装置以及电子设备。
背景技术
Cache(高速缓存),是一种容量较小但速度很高的存储器,一般用于存储CPU刚用过或频繁使用的一部分数据,在CPU再次使用这些数据时,可以从Cache中直接调用,这样能够提高数据读取速度,减少CPU的等待时间。为了防止出现内存不足的情况,在使用Cache时,需要限制Cache的总使用量不超过预设上限。
现有技术中,在多线程并行执行的环境下,每个线程(任务)独立使用一个Cache,各线程之间共享Cache的统计信息,以在Cache的总使用量超过上限时,执行决策算法,选出需要被清理的Cache,并由对应的线程实施该Cache的数据清理操作。
发明人在实现本发明的过程中,发现现有技术至少存在如下问题:在更新统计信息或根据统计信息进行决策时,需要锁定各个线程,以确保统计信息不变,而锁的引入将会产生较大的系统开销。
发明内容
本发明实施例提供一种缓存控制方法和装置以及电子设备,以解决现有技术中由于锁的引入而导致的系统开销增大的缺陷。
为达到上述目的,本发明实施例提供了一种缓存控制方法,用于为至少一个任务提供数据缓存服务,每个所述任务独立配置有第一缓存和第二缓存,且所述任务仅从所述第一缓存读取数据,所述方法包括:
获取各任务的总缓存使用量,所述总缓存使用量为各所述任务的第一缓存使用量和第二缓存使用量之和;
当所述总缓存使用量大于总容量阈值时,仅对所述第二缓存执行数据清理操作。
本发明实施例还提供了一种缓存控制装置,用于为至少一个任务提供数据缓存服务,每个所述任务独立配置有第一缓存和第二缓存,且所述任务仅从所述第一缓存读取数据,所述装置包括:
第一获取模块,用于获取各任务的总缓存使用量,所述总缓存使用量为各所述任务的第一缓存使用量和第二缓存使用量之和;
数据清理模块,用于当所述总缓存使用量大于总容量阈值时,仅对所述第二缓存执行数据清理操作。
本发明实施例还提供一种电子设备,用于为至少一个任务提供数据缓存服务,每个所述任务独立配置有第一缓存和第二缓存,且所述任务仅从所述第一缓存读取数据,所述电子设备包括:
存储器,用于存储程序;
处理器,用于运行所述存储器中存储的所述程序,以用于:
获取各任务的总缓存使用量,所述总缓存使用量为各所述任务的第一缓存使用量和第二缓存使用量之和;
当所述总缓存使用量大于总容量阈值时,仅对所述第二缓存执行数据清理操作。
本发明实施例提供的缓存控制方法和装置以及电子设备,通过为任务配置专门用于提供数据读取服务的缓存和专门用于存储待清理数据的缓存,使得在清理缓存时,不影响任务对缓存数据的读取,因此无需对锁定任务,从而较大地节约了系统开销。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本发明实施例提供的业务系统的系统框图;
图2为本发明提供的缓存控制方法一个实施例的流程图;
图3为本发明提供的缓存控制方法另一个实施例的流程图;
图4为本发明提供的缓存控制方法又一个实施例的流程图;
图5为本发明提供的缓存控制装置一个实施例的结构示意图;
图6为本发明提供的缓存控制装置另一个实施例的结构示意图;
图7为本发明提供的电子设备实施例的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
在现有技术中,在多线程并行执行的环境下,每个线程(任务)独立使用一个缓存,各任务之间共享缓存的统计信息,以在总缓存使用量超过上限时,执行决策算法,选出需要被清理的缓存,并实施对该缓存的数据清理操作。在更新缓存的统计信息或根据统计信息进行决策时,需要锁定各个任务,以确保统计信息不变,而锁的引入将会产生较大的系统开销。因此,本申请提出了一种缓存控制方案,其主要原理是:为每个任务独立配置第一缓存和第二缓存,任务仅从第一缓存读取数据,并且,在进行缓存清理时,仅对第二缓存执行数据清理操作。通过为任务配置专门用于提供数据读取服务的缓存和专门用于存储待清理数据的缓存,使得在清理缓存时,不影响任务对缓存数据的读取,因此无需对锁定任务,从而较大地节约了系统开销。
本发明实施例提供的方法可应用于任何具有数据处理能力的业务系统。图1为本发明实施例提供的业务系统的系统框图,图1所示的结构仅仅是本发明的技术方案可以应用的业务系统的示例之一。如图1所示,该业务系统用于为至少一个任务(任务1、任务2、…、任务n)提供数据缓存服务。在该业务系统中,每个任务独立配置有第一缓存和第二缓存,且任务仅从第一缓存读取数据。业务系统可实时获取各任务的总缓存使用量,即,各任务的第一缓存使用量和第二缓存使用量之和;当该总缓存使用量超过上限时,仅对第二缓存执行数据清理操作,不影响任务对缓存数据的读取,因此无需对锁定任务,从而较大地节约了系统开销。在该业务系统中,可以设置独立于各任务的清理线程,由清理线程对多个待清理的第二缓存组成的清理队列进行数据清理操作。具体地,清理线程在总缓存使用量未超过上限时可以处于休眠状态;在总缓存使用量超过上限,需要清理缓存时,清理线程被唤醒,触发执行决策算法,根据清理队列中各任务的第二缓存的统计信息,选出最适合清理的目标缓存,执行数据清理操作,当清理完成后,清理线程继续进入休眠状态。避免了占用IO任务的计算资源,减少了对IO响应时间的影响。另外,在各个任务中,随着任务的不断进行,第一缓存中存储的数据不断增加直至达到最大存储上限。此时,可以执行交换算法,将使用量达到上限的第一缓存和数据被清理的第二缓存进行交换,从而保证能够持续执行缓存任务。
上述实施例是对本发明实施例的技术原理和示例性的应用框架的说明,下面通过多个实施例来进一步对本发明实施例具体技术方案进行详细描述。
实施例一
图2为本发明提供的缓存控制方法一个实施例的流程图,该方法的执行主体可以为上述业务系统,也可以为具有数据处理能力的各种服务器或终端设备,也可以为集成在这些设备上的装置或芯片。该缓存控制方法可以用于为至少一个任务提供数据缓存服务,其中,每个任务独立配置有第一缓存和第二缓存,且各任务仅从第一缓存读取数据。如图2所示,该缓存控制方法包括如下步骤:
S201,获取各任务的总缓存使用量。
在本发明实施例中,缓存总容量有上限,当使用该缓存的所有任务的总缓存使用量超过该上限时,需要进行缓存清理。因此,需要首先获取各任务的总缓存使用量,该总缓存使用量为各任务的第一缓存使用量和第二缓存使用量之和。
S202,当总缓存使用量大于总容量阈值时,仅对第二缓存执行数据清理操作。
在本发明实施例中,预先设置总容量阈值,即,缓存的总容量上限,当各任务的总缓存使用量大于该总容量阈值时,需要进行缓存清理,在本发明的方案中,则仅对第二缓存执行数据清理操作。
本发明实施例提供的缓存控制方法,通过为任务配置专门用于提供数据读取服务的缓存和专门用于存储待清理数据的缓存,使得在清理缓存时,不影响任务对缓存数据的读取,因此无需对锁定任务,从而较大地节约了系统开销。
实施例二
图3为本发明提供的缓存控制方法另一个实施例的流程图。如图3所示,在上述图2所示实施例的基础上,本实施例提供的缓存控制方法还可以包括以下步骤:
S301,获取各任务的总缓存使用量。
S302,当总缓存使用量大于总容量阈值时,获取多个任务的第二缓存的统计信息。
在本发明实施例中,可以仅考虑总缓存使用量是否超过总容量阈值,而不为单个任务设置缓存容量限制,则可以更充分的利用缓存,当某个任务空闲时,该空闲的任务不会占用总缓存容量的配额。
S303,根据第二缓存的统计信息,在由多个第二缓存组成的清理队列中,执行决策算法,选出目标缓存。
在本发明实施例中,第二缓存的统计信息为用于执行决策算法的决策依据。根据该统计信息,执行决策算法,在清理队列中选出目标缓存以进行清理操作。
具体地,可以根据第二缓存的统计信息,在由多个第二缓存组成的清理队列中,选出数据被访问频率最低的第二缓存(即,决策算法为LFU(Least Frequently Used)算法),作为目标缓存。
另外,也可以根据第二缓存的统计信息,在由多个第二缓存组成的清理队列中,选出数据被访问次数最少的第二缓存(即,决策算法为LRU(Least Recently Used)算法),作为目标缓存。
进一步地,在本发明实施例中,还可以设置单个任务的缓存容量上限,当某个任务的缓存使用量超过该上限时,将其第二缓存放入清理队列以进行数据清理。具体地,可以获取单个任务的缓存使用量,该单个任务的缓存使用量为该任务的第一缓存使用量和第二缓存使用量之和;当任务的缓存使用量大于该单任务容量阈值时,将该任务的第二缓存放入清理队列。为单个任务设置缓存容量阈值,能够保证每个任务都有一个缓存容量的上限,不会出现各任务间缓存不平衡的现象。
在本发明实施例中,清理队列可以采用环形数组的数据结构,该数据结构为无锁数据结构,从而能够避免锁产生的开销。
S304,对目标缓存执行数据清理操作。
在本发明实施例中,当选定目标缓存后,可以直接对该目标缓存执行数据清理操作。当然,也可以设置时间窗口,在预设时间窗口内,当任务读取的数据存储于目标缓存中时,将该数据作为共享数据共享至任务的第一缓存,使得任务能够读取到该数据;在预设时间窗口外,清理目标缓存中的共享数据以外的数据,从而避免热点数据被清理掉。
需要说明的是,当任务的缓存中存在上述共享数据时,由于该数据被第一缓存和第二缓存所共享,因此,在计算使用量时该共享数据被计算了两次,因此,该任务的缓存使用量为该任务的第一缓存使用量和第二缓存使用量之和,再减去该共享数据的大小。
进一步地,还可以设置独立于各任务的清理线程,该清理线程专门用于执行上述决策算法以及数据清理操作,以避免占用IO任务的计算资源,减少对IO响应时间的影响。具体地,在总缓存使用量小于或等于总容量阈值时,且在各任务的缓存使用量小于或等于单任务容量阈值时,清理线程可以处于休眠状态;在总缓存使用量大于总容量阈值时,或者,在某个任务的缓存使用量大于单任务容量阈值时,唤醒清理线程,触发执行决策算法,根据清理队列中各任务的第二缓存的统计信息,选出最适合清理的目标缓存,执行数据清理操作,当清理完成后,清理线程继续进入休眠状态。
本发明实施例提供的缓存控制方法,通过为任务配置专门用于提供数据读取服务的缓存和专门用于存储待清理数据的缓存,使得在清理缓存时,不影响任务对缓存数据的读取,无需对锁定任务,从而较大地节约了系统开销。将待清理的缓存放入清理队列,通过决策算法在清理队列中选择最适合清理的目标缓存进行数据清理,避免了占用IO任务的计算资源,减少了对IO响应时间的影响。通过设置时间窗口,将任务在时间窗口内读取过的数据进行保留,从而避免热点数据被清理掉,以提高缓存命中率。
实施例三
图4为本发明提供的缓存控制方法又一个实施例的流程图。如图4所示,在上述图2和图3所示实施例的基础上,本实施例提供的缓存控制方法还可以包括以下步骤:
S401,接收任务针对目标数据的数据读取请求。
S402,判断该任务的第一缓存中是否存在目标数据,如果是,则执行步骤S403,否则,执行步骤S404。
S403,将第一缓存中的目标数据返回至任务。
在本发明实施例中,当接收到任务针对目标数据的数据读取请求时,如果该任务的第一缓存中存在目标数据,则将第一缓存中的目标数据返回至任务。
S404,判断该任务的第二缓存中是否存在目标数据,如果是,则执行步骤S405,否则,执行步骤S406。
S405,将第二缓存中的目标数据作为共享数据共享至第一缓存,然后继续执行步骤S403。
在本发明实施例中,如果该任务的第一缓存中不存在目标数据,而该任务的第二缓存中存在目标数据,则将第二缓存中的目标数据作为共享数据共享至第一缓存,由第一缓存将共享数据返回至任务。
S406,从数据源读取目标数据,并将目标数据存储于第一缓存,然后继续执行步骤S403。
在本发明实施例中,如果该任务的第一缓存中不存在目标数据,该任务的第二缓存中也不存在目标数据,则从数据源读取目标数据,并将目标数据存储于第一缓存,由第一缓存将目标数据返回至任务。
进一步地,将目标数据返回至任务后,本发明实施例提供的缓存控制方法还可包括下述交换缓存的操作:
S407,获取单个任务的第一缓存使用量和第二缓存使用量。
在本发明实施例中,第二缓存使用量为第二缓存中的共享数据以外的数据的数据量。
S408,当第一缓存使用量大于第一缓存容量阈值、且第二缓存使用量为零时,交换该任务的第一缓存和第二缓存。
在本发明实施例中,随着任务的不断进行,第一缓存中存储的数据不断增加直至达到最大存储上限。此时,可以执行交换算法,将使用量达到上限的第一缓存和数据被清理的第二缓存进行交换,从而保证能够持续执行缓存任务。
该第一缓存容量阈值可以设置为0.5*(总容量阈值/任务个数)。
本发明实施例提供的缓存控制方法,通过为任务配置专门用于提供数据读取服务的缓存和专门用于存储待清理数据的缓存,在读取数据时,优先查找第一缓存,并将在第二缓存中查找到的数据作为共享数据与第一缓存共享,从而避免热点数据被清理掉,以提高缓存命中率,并且通过交换使用量达到上限的第一缓存和数据被清理的第二缓存,来保证缓存任务的持续执行。
实施例四
图5为本发明提供的缓存控制装置一个实施例的结构示意图,可用于执行如图2所示的方法步骤。该缓存控制装置可以用于为至少一个任务提供数据缓存服务,其中,每个任务独立配置有第一缓存和第二缓存,且各任务仅从第一缓存读取数据。如图5所示,该缓存控制装置可以包括:第一获取模块51和数据清理模块52。
其中,第一获取模块51用于获取各任务的总缓存使用量,该总缓存使用量为各任务的第一缓存使用量和第二缓存使用量之和;数据清理模块52用于当总缓存使用量大于总容量阈值时,仅对第二缓存执行数据清理操作。
在本发明实施例中,缓存总容量有上限,当使用该缓存的所有任务的总缓存使用量超过该上限时,需要进行缓存清理。因此,需要首先由第一获取模块51获取各任务的总缓存使用量。在本发明实施例中,预先设置总容量阈值,即,缓存的总容量上限,当各任务的总缓存使用量大于该总容量阈值时,需要进行缓存清理,数据清理模块52则仅对第二缓存执行数据清理操作。
本发明实施例提供的缓存控制装置,通过为任务配置专门用于提供数据读取服务的缓存和专门用于存储待清理数据的缓存,使得在清理缓存时,不影响任务对缓存数据的读取,因此无需对锁定任务,从而较大地节约了系统开销。
实施例五
图6为本发明提供的缓存控制装置另一个实施例的结构示意图,可以用于执行如图3和图4所示的方法步骤。如图6所示,在上述图5所示实施例的基础上,数据清理模块52可以包括:获取单元521、决策单元522和清理单元523。
其中,获取单元521可以用于当总缓存使用量大于总容量阈值时,获取多个任务的第二缓存的统计信息;决策单元522可以用于根据第二缓存的统计信息,在由多个第二缓存组成的清理队列中,执行决策算法,选出目标缓存;清理单元523可以用于对目标缓存执行数据清理操作。
在本发明实施例中,可以仅考虑总缓存使用量是否超过总容量阈值,而不为单个任务设置缓存容量限制,则可以更充分的利用缓存,当某个任务空闲时,该空闲的任务不会占用总缓存容量的配额。当总缓存使用量大于总容量阈值时,获取单元521可以获取多个任务的第二缓存的统计信息,第二缓存的统计信息为用于执行决策算法的决策依据。决策单元522可以根据该统计信息,执行决策算法,在清理队列中选出目标缓存以使得清理单元523进行清理操作。
具体地,决策单元522可以用于,根据第二缓存的统计信息,在由多个第二缓存组成的清理队列中,采用LFU算法,选出数据被访问频率最低的第二缓存,作为目标缓存。
另外,决策单元522也可以用于,根据第二缓存的统计信息,在由多个第二缓存组成的清理队列中,采用LRU算法,选出数据被访问次数最少的第二缓存,作为目标缓存。
在本发明实施例中,清理队列可以采用环形数组的数据结构,该数据结构为无锁数据结构,从而能够避免锁产生的开销。
进一步地,清理单元523可以具体用于,在预设时间窗口内,当任务读取的数据存储于目标缓存中时,将该数据作为共享数据共享至任务的第一缓存;在预设时间窗口外,清理目标缓存中共享数据以外的数据。
在本发明实施例中,当决策单元522选定目标缓存后,清理单元523可以直接对该目标缓存执行数据清理操作。当然,也可以设置时间窗口,在预设时间窗口内,当任务读取的数据存储于目标缓存中时,将该数据作为共享数据共享至任务的第一缓存,使得任务能够读取到该数据;在预设时间窗口外,清理目标缓存中的共享数据以外的数据,从而避免热点数据被清理掉。
更进一步地,本发明实施例提供的缓存控制装置,还可以包括:清理线程设置模块61。
该清理线程设置模块61可以用于设置独立于各任务的清理线程,以控制决策单元522执行决策算法,以及控制清理单元523执行数据清理操作。
在本发明实施例中,可以设置独立于各任务的清理线程,该清理线程专门用于执行上述决策算法以及数据清理操作,以避免占用IO任务的计算资源,减少对IO响应时间的影响。具体地,在总缓存使用量小于或等于总容量阈值时,且在各任务的缓存使用量小于或等于单任务容量阈值时,清理线程可以处于休眠状态;在总缓存使用量大于总容量阈值时,或者,在某个任务的缓存使用量大于单任务容量阈值时,唤醒清理线程,触发执行决策算法,根据清理队列中各任务的第二缓存的统计信息,选出最适合清理的目标缓存,执行数据清理操作,当清理完成后,清理线程继续进入休眠状态。
再进一步地,本发明实施例提供的缓存控制装置,还可以包括:第二获取模块62和处理模块63。
其中,第二获取模块62可以用于获取单个任务的缓存使用量,单个任务的缓存使用量为该任务的第一缓存使用量和第二缓存使用量之和;处理模块63可以用于当该任务的缓存使用量大于单任务容量阈值时,将该任务的第二缓存放入清理队列。
在本发明实施例中,还可以设置单个任务的缓存容量上限,当某个任务的缓存使用量超过该上限时,将其第二缓存放入清理队列以进行数据清理。具体地,可以由第二获取模块62获取单个任务的缓存使用量;当任务的缓存使用量大于该单任务容量阈值时,处理模块63将该任务的第二缓存放入清理队列。为单个任务设置缓存容量阈值,能够保证每个任务都有一个缓存容量的上限,不会出现各任务间缓存不平衡的现象。
再进一步地,本发明实施例提供的缓存控制装置,还包括:第三获取模块64和交换模块65。
其中,第三获取模块64可以用于获取单个任务的第一缓存使用量和第二缓存使用量,第二缓存使用量为第二缓存中的共享数据以外的数据的数据量;交换模块65可以用于当第一缓存使用量大于第一缓存容量阈值、且第二缓存使用量为零时,交换任务的第一缓存和第二缓存。
在本发明实施例中,随着任务的不断进行,第一缓存中存储的数据不断增加直至达到最大存储上限。此时,交换模块65可以执行交换算法,将使用量达到上限的第一缓存和数据被清理的第二缓存进行交换,从而保证能够持续执行缓存任务。
再进一步地,本发明实施例提供的缓存控制装置,还包括:数据读取模块66。
该数据读取模块66可以用于当接收到任务针对目标数据的数据读取请求时,如果任务的第一缓存中存在目标数据,则将第一缓存中的目标数据返回至任务;如果任务的第一缓存中不存在目标数据,任务的第二缓存中存在目标数据,则将第二缓存中的目标数据作为共享数据共享至第一缓存,由第一缓存将共享数据返回至任务;如果任务的第一缓存中不存在目标数据,任务的第二缓存中也不存在目标数据,则从数据源读取目标数据,并将目标数据存储于第一缓存,由第一缓存将目标数据返回至任务。
本发明实施例提供的缓存控制装置,通过为任务配置专门用于提供数据读取服务的缓存和专门用于存储待清理数据的缓存,使得在清理缓存时,不影响任务对缓存数据的读取,无需对锁定任务,从而较大地节约了系统开销。将待清理的缓存放入清理队列,通过决策算法在清理队列中选择最适合清理的目标缓存进行数据清理,避免了占用IO任务的计算资源,减少了对IO响应时间的影响。通过设置时间窗口,将任务在时间窗口内读取过的数据进行保留,从而避免热点数据被清理掉,以提高缓存命中率。另外,在读取数据时,优先查找第一缓存,并将在第二缓存中查找到的数据作为共享数据与第一缓存共享,从而避免热点数据被清理掉,以提高缓存命中率,并且通过交换使用量达到上限的第一缓存和数据被清理的第二缓存,来保证缓存任务的持续执行。
实施例六
以上描述了缓存控制装置的内部功能和结构,该装置可实现为一种电子设备,用于为至少一个任务提供数据缓存服务,每个任务独立配置有第一缓存和第二缓存,且任务仅从第一缓存读取数据。图7为本发明提供的电子设备实施例的结构示意图。如图7所示,该电子设备包括存储器71和处理器72。
存储器71,用于存储程序。除上述程序之外,存储器71还可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。
存储器71可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
处理器72,与存储器71耦合,执行存储器71所存储的程序,以用于:
获取各任务的总缓存使用量,该总缓存使用量为各任务的第一缓存使用量和第二缓存使用量之和;
当总缓存使用量大于总容量阈值时,仅对第二缓存执行数据清理操作。
进一步,如图7所示,电子设备还可以包括:通信组件73、电源组件74、音频组件75、显示器76等其它组件。图7中仅示意性给出部分组件,并不意味着电子设备只包括图7所示组件。
通信组件73被配置为便于电子设备和其他设备之间有线或无线方式的通信。电子设备可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件73经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件73还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
电源组件74,为电子设备的各种组件提供电力。电源组件74可以包括电源管理系统,一个或多个电源,及其他与为电子设备生成、管理和分配电力相关联的组件。
音频组件75被配置为输出和/或输入音频信号。例如,音频组件75包括一个麦克风(MIC),当电子设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器71或经由通信组件73发送。在一些实施例中,音频组件75还包括一个扬声器,用于输出音频信号。
显示器76包括屏幕,其屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (17)
1.一种缓存控制方法,用于为至少一个任务提供数据缓存服务,其特征在于,每个所述任务独立配置有第一缓存和第二缓存,且所述任务仅从所述第一缓存读取数据,所述方法包括:
获取各任务的总缓存使用量,所述总缓存使用量为各所述任务的第一缓存使用量和第二缓存使用量之和;
当所述总缓存使用量大于总容量阈值时,仅对所述第二缓存执行数据清理操作;
其中,所述任务为多个,所述当所述总缓存使用量大于总容量阈值时,仅对所述第二缓存执行数据清理操作,包括:
当所述总缓存使用量大于总容量阈值时,获取多个所述任务的第二缓存的统计信息;
根据所述第二缓存的统计信息,在由多个所述第二缓存组成的清理队列中,执行决策算法,选出目标缓存;
对所述目标缓存执行数据清理操作;
其中,所述对所述目标缓存执行数据清理操作,包括:
在预设时间窗口内,当所述任务读取的数据存储于所述目标缓存中时,将所述数据作为共享数据共享至所述任务的第一缓存;
在所述预设时间窗口外,清理所述目标缓存中所述共享数据以外的数据。
2.根据权利要求1所述的缓存控制方法,其特征在于,所述根据所述第二缓存的统计信息,在由多个所述第二缓存组成的清理队列中,执行决策算法,选出目标缓存,包括:
根据所述第二缓存的统计信息,在由多个所述第二缓存组成的清理队列中,选出数据被访问频率最低的所述第二缓存,作为目标缓存。
3.根据权利要求1所述的缓存控制方法,其特征在于,所述根据所述第二缓存的统计信息,在由多个所述第二缓存组成的清理队列中,执行决策算法,选出目标缓存,包括:
根据所述第二缓存的统计信息,在由多个所述第二缓存组成的清理队列中,选出数据被访问次数最少的所述第二缓存,作为目标缓存。
4.根据权利要求1所述的缓存控制方法,其特征在于,还包括:
设置独立于各所述任务的清理线程,所述清理线程用于执行所述决策算法以及数据清理操作。
5.根据权利要求1所述的缓存控制方法,其特征在于,还包括:
获取单个任务的缓存使用量,所述单个任务的缓存使用量为所述任务的第一缓存使用量和第二缓存使用量之和;
当所述任务的缓存使用量大于单任务容量阈值时,将所述任务的第二缓存放入所述清理队列。
6.根据权利要求1所述的缓存控制方法,其特征在于,还包括:
获取单个任务的第一缓存使用量和第二缓存使用量,所述第二缓存使用量为所述第二缓存中所述共享数据以外的数据的数据量;
当所述第一缓存使用量大于第一缓存容量阈值、且所述第二缓存使用量为零时,交换所述任务的第一缓存和第二缓存。
7.根据权利要求1至6中任一权利要求所述的缓存控制方法,其特征在于,还包括:
当接收到任务针对目标数据的数据读取请求时,如果所述任务的第一缓存中存在所述目标数据,则将所述第一缓存中的目标数据返回至所述任务;
如果所述任务的第一缓存中不存在所述目标数据,所述任务的第二缓存中存在所述目标数据,则将所述第二缓存中的目标数据作为共享数据共享至所述第一缓存,由所述第一缓存将所述共享数据返回至所述任务;
如果所述任务的第一缓存中不存在所述目标数据,所述任务的第二缓存中也不存在所述目标数据,则从数据源读取所述目标数据,并将所述目标数据存储于所述第一缓存,由所述第一缓存将所述目标数据返回至所述任务。
8.根据权利要求1至6中任一权利要求所述的缓存控制方法,其特征在于,所述清理队列采用环形数组的数据结构。
9.一种缓存控制装置,用于为至少一个任务提供数据缓存服务,其特征在于,每个所述任务独立配置有第一缓存和第二缓存,且所述任务仅从所述第一缓存读取数据,所述装置包括:
第一获取模块,用于获取各任务的总缓存使用量,所述总缓存使用量为各所述任务的第一缓存使用量和第二缓存使用量之和;
数据清理模块,用于当所述总缓存使用量大于总容量阈值时,仅对所述第二缓存执行数据清理操作;
其中,所述任务为多个,所述数据清理模块包括:
获取单元,用于当所述总缓存使用量大于总容量阈值时,获取多个所述任务的第二缓存的统计信息;
决策单元,用于根据所述第二缓存的统计信息,在由多个所述第二缓存组成的清理队列中,执行决策算法,选出目标缓存;
清理单元,用于对所述目标缓存执行数据清理操作;
其中,所述清理单元具体用于,在预设时间窗口内,当所述任务读取的数据存储于所述目标缓存中时,将所述数据作为共享数据共享至所述任务的第一缓存;在所述预设时间窗口外,清理所述目标缓存中所述共享数据以外的数据。
10.根据权利要求9所述的缓存控制装置,其特征在于,所述决策单元具体用于,根据所述第二缓存的统计信息,在由多个所述第二缓存组成的清理队列中,选出数据被访问频率最低的所述第二缓存,作为目标缓存。
11.根据权利要求9所述的缓存控制装置,其特征在于,所述决策单元具体用于,根据所述第二缓存的统计信息,在由多个所述第二缓存组成的清理队列中,选出数据被访问次数最少的所述第二缓存,作为目标缓存。
12.根据权利要求9所述的缓存控制装置,其特征在于,还包括:
清理线程设置模块,用于设置独立于各所述任务的清理线程,以控制所述决策单元执行所述决策算法,以及控制所述清理单元执行数据清理操作。
13.根据权利要求9所述的缓存控制装置,其特征在于,还包括:
第二获取模块,用于获取单个任务的缓存使用量,所述单个任务的缓存使用量为所述任务的第一缓存使用量和第二缓存使用量之和;
处理模块,用于当所述任务的缓存使用量大于单任务容量阈值时,将所述任务的第二缓存放入所述清理队列。
14.根据权利要求9所述的缓存控制装置,其特征在于,还包括:
第三获取模块,用于获取单个任务的第一缓存使用量和第二缓存使用量,所述第二缓存使用量为所述第二缓存中所述共享数据以外的数据的数据量;
交换模块,用于当所述第一缓存使用量大于第一缓存容量阈值、且所述第二缓存使用量为零时,交换所述任务的第一缓存和第二缓存。
15.根据权利要求9至14中任一权利要求所述的缓存控制装置,其特征在于,还包括:
数据读取模块,用于当接收到任务针对目标数据的数据读取请求时,如果所述任务的第一缓存中存在所述目标数据,则将所述第一缓存中的目标数据返回至所述任务;如果所述任务的第一缓存中不存在所述目标数据,所述任务的第二缓存中存在所述目标数据,则将所述第二缓存中的目标数据作为共享数据共享至所述第一缓存,由所述第一缓存将所述共享数据返回至所述任务;如果所述任务的第一缓存中不存在所述目标数据,所述任务的第二缓存中也不存在所述目标数据,则从数据源读取所述目标数据,并将所述目标数据存储于所述第一缓存,由所述第一缓存将所述目标数据返回至所述任务。
16.根据权利要求9至14中任一权利要求所述的缓存控制装置,其特征在于,所述清理队列采用环形数组的数据结构。
17.一种电子设备,用于为至少一个任务提供数据缓存服务,其特征在于,每个所述任务独立配置有第一缓存和第二缓存,且所述任务仅从所述第一缓存读取数据,所述电子设备包括:
存储器,用于存储程序;
处理器,用于运行所述存储器中存储的所述程序,以用于:
获取各任务的总缓存使用量,所述总缓存使用量为各所述任务的第一缓存使用量和第二缓存使用量之和;
当所述总缓存使用量大于总容量阈值时,仅对所述第二缓存执行数据清理操作;
其中,所述任务为多个,所述当所述总缓存使用量大于总容量阈值时,仅对所述第二缓存执行数据清理操作,包括:
当所述总缓存使用量大于总容量阈值时,获取多个所述任务的第二缓存的统计信息;
根据所述第二缓存的统计信息,在由多个所述第二缓存组成的清理队列中,执行决策算法,选出目标缓存;
对所述目标缓存执行数据清理操作;
其中,所述对所述目标缓存执行数据清理操作,包括:
在预设时间窗口内,当所述任务读取的数据存储于所述目标缓存中时,将所述数据作为共享数据共享至所述任务的第一缓存;
在所述预设时间窗口外,清理所述目标缓存中所述共享数据以外的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910060370.7A CN111459852B (zh) | 2019-01-22 | 2019-01-22 | 缓存控制方法和装置以及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910060370.7A CN111459852B (zh) | 2019-01-22 | 2019-01-22 | 缓存控制方法和装置以及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111459852A CN111459852A (zh) | 2020-07-28 |
CN111459852B true CN111459852B (zh) | 2023-05-05 |
Family
ID=71685638
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910060370.7A Active CN111459852B (zh) | 2019-01-22 | 2019-01-22 | 缓存控制方法和装置以及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111459852B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112000668A (zh) * | 2020-08-12 | 2020-11-27 | 广州市百果园信息技术有限公司 | 统计数据清理方法、装置、设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102968394A (zh) * | 2012-10-19 | 2013-03-13 | 华中科技大学 | 一种基于乒乓机制的fpga与dsp数据传输系统 |
CN103119548A (zh) * | 2010-09-23 | 2013-05-22 | 马维尔以色列(M.I.S.L.)有限公司 | 低等待时间先进先出(fifo)缓存 |
CN104216838A (zh) * | 2013-06-05 | 2014-12-17 | 北京齐尔布莱特科技有限公司 | 双缓存数据处理方法及系统 |
CN106407028A (zh) * | 2016-08-26 | 2017-02-15 | 佛山智能装备技术研究院 | 一种双缓冲式的机器人软件日志存储方法 |
CN107220187A (zh) * | 2017-05-22 | 2017-09-29 | 北京星网锐捷网络技术有限公司 | 一种缓存管理方法、装置及现场可编程门阵列 |
CN109189739A (zh) * | 2018-09-20 | 2019-01-11 | 北京京东尚科信息技术有限公司 | 缓存空间回收方法和装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8706968B2 (en) * | 2007-12-06 | 2014-04-22 | Fusion-Io, Inc. | Apparatus, system, and method for redundant write caching |
US9519540B2 (en) * | 2007-12-06 | 2016-12-13 | Sandisk Technologies Llc | Apparatus, system, and method for destaging cached data |
TWI399645B (zh) * | 2010-01-15 | 2013-06-21 | Silicon Motion Inc | 管理記憶體讀出資料之方法以及記憶裝置 |
-
2019
- 2019-01-22 CN CN201910060370.7A patent/CN111459852B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103119548A (zh) * | 2010-09-23 | 2013-05-22 | 马维尔以色列(M.I.S.L.)有限公司 | 低等待时间先进先出(fifo)缓存 |
CN102968394A (zh) * | 2012-10-19 | 2013-03-13 | 华中科技大学 | 一种基于乒乓机制的fpga与dsp数据传输系统 |
CN104216838A (zh) * | 2013-06-05 | 2014-12-17 | 北京齐尔布莱特科技有限公司 | 双缓存数据处理方法及系统 |
CN106407028A (zh) * | 2016-08-26 | 2017-02-15 | 佛山智能装备技术研究院 | 一种双缓冲式的机器人软件日志存储方法 |
CN107220187A (zh) * | 2017-05-22 | 2017-09-29 | 北京星网锐捷网络技术有限公司 | 一种缓存管理方法、装置及现场可编程门阵列 |
CN109189739A (zh) * | 2018-09-20 | 2019-01-11 | 北京京东尚科信息技术有限公司 | 缓存空间回收方法和装置 |
Non-Patent Citations (1)
Title |
---|
基于顺序检测的双队列缓存替换算法;肖侬;赵英杰;刘芳;陈志广;;中国科学:信息科学(04);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111459852A (zh) | 2020-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP4220400A1 (en) | Memory management method and apparatus, and electronic device and computer-readable storage medium | |
US9201810B2 (en) | Memory page eviction priority in mobile computing devices | |
US10496550B2 (en) | Multi-port shared cache apparatus | |
CN108509260A (zh) | 线程识别处理方法、装置、计算机设备和存储介质 | |
CN109074331A (zh) | 具有系统高速缓存和本地资源管理的功率降低存储器子系统 | |
CN110018902B (zh) | 内存处理方法和装置、电子设备、计算机可读存储介质 | |
US20150302903A1 (en) | System and method for deep coalescing memory management in a portable computing device | |
US10733106B2 (en) | I/O driven data routing and cache allocation | |
US10489204B2 (en) | Flexible in-order and out-of-order resource allocation | |
CN109992398A (zh) | 资源管理方法、装置、移动终端及计算机可读存储介质 | |
CN111177025B (zh) | 数据存储方法、装置及终端设备 | |
CN109992399B (zh) | 资源管理方法、装置、移动终端及计算机可读存储介质 | |
US10198180B2 (en) | Method and apparatus for managing storage device | |
US10884959B2 (en) | Way partitioning for a system-level cache | |
CN114416178A (zh) | 数据访问方法、装置及非临时性计算机可读存储介质 | |
CN115794682A (zh) | 缓存替换方法及装置、电子设备、存储介质 | |
CN110018905B (zh) | 信息处理方法、装置、计算机设备和计算机可读存储介质 | |
CN115269190A (zh) | 内存分配方法、装置、电子设备、存储介质及产品 | |
CN111459852B (zh) | 缓存控制方法和装置以及电子设备 | |
CN114428797A (zh) | 嵌入参数缓存的方法、装置、设备及存储介质 | |
EP3230875B1 (en) | Adaptive memory access to local and non-local memories | |
CN109408412B (zh) | 内存预取控制方法、装置及设备 | |
KR20160018204A (ko) | 전자 장치, 온 칩 메모리 장치 및 온 칩 메모리의 운영 방법 | |
CN113422800B (zh) | 资源处理方法、装置、系统、电子设备及存储介质 | |
CN113253922B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20231201 Address after: Room 1-2-A06, Yungu Park, No. 1008 Dengcai Street, Sandun Town, Xihu District, Hangzhou City, Zhejiang Province, 310030 Patentee after: Aliyun Computing Co.,Ltd. Address before: Box 847, four, Grand Cayman capital, Cayman Islands, UK Patentee before: ALIBABA GROUP HOLDING Ltd. |
|
TR01 | Transfer of patent right |