CN109388550B - 一种缓存命中率确定方法、装置、设备及可读存储介质 - Google Patents
一种缓存命中率确定方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN109388550B CN109388550B CN201811325736.0A CN201811325736A CN109388550B CN 109388550 B CN109388550 B CN 109388550B CN 201811325736 A CN201811325736 A CN 201811325736A CN 109388550 B CN109388550 B CN 109388550B
- Authority
- CN
- China
- Prior art keywords
- read
- hit
- recent
- hit rate
- target storage
- 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 48
- 238000004364 calculation method Methods 0.000 claims abstract description 46
- 238000004590 computer program Methods 0.000 claims description 10
- 230000009286 beneficial effect Effects 0.000 abstract description 4
- 230000000694 effects Effects 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3452—Performance evaluation by statistical analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3034—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Probability & Statistics with Applications (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种缓存命中率确定方法,该方法包括:接收读请求,确定读请求对应的目标存储引擎,并更新目标存储引擎的读请求次数;若读请求命中目标存储引擎的SSD缓存,则更新目标存储引擎的读命中次数;周期性地将读请求次数和读命中次数写入统计列表;在接收到目标存储引擎的近期命中率计算请求时,读取统计列表中记录的读请求次数和读命中次数,计算目标存储引擎的近期命中率。可计算出目标存储引擎的近期命中率。计算出的近期命中率有利于分析近期目标存储引擎的最近一段时间的存储状态,以提高分布式存储系统的存储系统。本发明还公开了一种缓存命中率确定装置、设备及可读存储介质,具有相应的技术效果。
Description
技术领域
本发明涉及存储技术领域,特别是涉及一种缓存命中率确定方法、装置、设备及可读存储介质。
背景技术
现有分布式存储系统中,采用SSD(固态硬盘,solid-state disk或solid-statedrive,又称固态驱动器))高速缓存实现对读写性能的加速,当读请求命中SSD时,可以极大地提升分布式存储系统的读性能。
目前,对命中率的统计管理,通常为根据历史所有读请求和读命中情况,获取单个存储引擎或者整个存储系统的总体命中率。而无法获取一定时间段内,如近五分钟的命中率情况,不能充分了解最近一段时间内的存储系统状态。不利于对SSD缓存的进一步管理控制。
综上所述,如何有效地解决分布式存储系统中的命中率统计等问题,是目前本领域技术人员急需解决的技术问题。
发明内容
本发明的目的是提供一种缓存命中率确定方法、装置、设备及可读存储介质,以实现统计单个存储引擎的近期命中率,以便充分累加最近一段时间内的存储系统状态。
为解决上述技术问题,本发明提供如下技术方案:
一种缓存命中率确定方法,包括:
接收读请求,确定所述读请求对应的目标存储引擎,并更新所述目标存储引擎的读请求次数;
若所述读请求命中所述目标存储引擎的SSD缓存,则更新所述目标存储引擎的读命中次数;
周期性地将所述读请求次数和所述读命中次数写入统计列表;
在接收到所述目标存储引擎的近期命中率计算请求时,读取所述统计列表中记录的所述读请求次数和所述读命中次数,计算所述目标存储引擎的近期命中率。
优选地,在周期性地将所述读请求次数和所述读命中次数写入统计列表之后,还包括:
将所述读请求次数和所述读命中次数清零。
优选地,读取所述统计列表中记录的所述读请求次数和所述读命中次数,计算所述目标存储引擎的近期命中率,包括:
读取所述统计列表中记录的各个不同周期对应的所述读请求次数和所述读命中次数,并分别进行累加,获得近期读请求总次数和近期读命中总次数;
将所述近期读请求总次数和所述近期读命中次数的比值作为所述目标存储引擎的近期命中率。
优选地,所述周期性地将所述读请求次数和所述读命中次数写入统计列表,包括:
周期性判断所述统计列表的长度是否已达指定长度上限;
如果是,则将位于所述统计列表首端的一组数据删除,将所述读请求次数和所述读命中次数写入所述统计列表末端。
优选地,还包括:
在所述周期性地将所述读请求次数和所述读命中次数写入统计列表时,将所述读请求次数加至历史读请求次数,将所述读命中次数加至历史命中次数;
在接收到所述目标存储引擎的总命中率计算请求时,将所述总读请求次数与当前时刻的所述读请求次数相加,获得总读请求次数;
将所述历史读命中次数与当前时刻的所述读命中次数相加,获得总读命中次数;
将所述总读命中次数与所述总读请求次数的比值作为所述目标存储引擎的总命中率。
优选地,还包括:
在接收到所述分布式存储系统的近期命中率计算请求时,将所述分布式存储系统中的各个所述目标存储引擎当前时刻分别对应的所述近期读请求次数进行求和,获得系统近期读请求次数;
将所述分布式存储系统中的各个所述目标存储引擎当前时刻分别对应的近期读命中次数进行求和,获得系统近期命中次数;
将所述系统近期命中次数与所述系统近期读请求次数的比值作为系统近期命中率。
优选地,所述读取所述统计列表中记录的所述读请求次数和所述读命中次数,计算所述目标存储引擎的近期命中率,包括:
读取所述统计列表中与所述近期命中率计算请求对应的指定起始周期和指定终止周期的所述读请求次数,并计算读请求差值;
读取所述统计列表所述指定起始周期和所述指定终止周期的所述读命中次数,并计算读命中差值;
将所述读命中差值与所述读请求差值的比值作为所述近期命中率。
一种缓存命中率确定装置,包括:
读请求次数更新模块,用于接收读请求,确定所述读请求对应的目标存储引擎,并更新所述目标存储引擎的读请求次数;
读命中次数更新模块,用于若所述读请求命中所述目标存储引擎的SSD缓存,则更新所述目标存储引擎的读命中次数;
数据记录模块,用于周期性地将所述读请求次数和所述读命中次数写入统计列表;
命中率计算模块,用于在接收到所述目标存储引擎的近期命中率计算请求时,读取所述统计列表中记录的所述读请求次数和所述读命中次数,计算所述目标存储引擎的近期命中率。
一种缓存命中率确定设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现上述缓存命中率确定方法的步骤。
一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述缓存命中率确定方法的步骤。
应用本发明实施例所提供的方法,该方法可应用于分布式存储系统中,接收读请求,确定读请求对应的目标存储引擎,并更新目标存储引擎的读请求次数;若读请求命中目标存储引擎的SSD缓存,则更新目标存储引擎的读命中次数;周期性地将读请求次数和读命中次数写入统计列表;在接收到目标存储引擎的近期命中率计算请求时,读取统计列表中记录的读请求次数和读命中次数,计算目标存储引擎的近期命中率。
接收读请求时,将读请求对应的目标存储引擎的读请求次数进行更新,并在读请求命中目标存储引擎的SSD缓存时,更新目标存储引擎的读命中次数。为了便于计算近期命中率,周期性地将读请求次数和读命中次数写入统计列表中。如此,便可在接收到目标存储引擎的近期命中率计算请求时,读取统计列表中记录的各个周期对应的读请求次数和读命中次数。然后,基于读取到的读请求次数和读命中次数便可计算出目标存储引擎的近期命中率。计算出的近期命中率有利于分析近期目标存储引擎的最近一段时间的存储状态,以提高分布式存储系统的存储系统。
相应地,本发明实施例还提供了与上述缓存命中率确定方法相对应的缓存命中率确定装置、设备和可读存储介质,具有上述技术效果,在此不再赘述。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中一种缓存命中率确定方法的实施流程图;
图2为本发明实施例中一种缓存命中率确定方法的示意图;
图3为本发明实施例中一种缓存命中率确定装置的结构示意图;
图4为本发明实施例中一种缓存命中率确定设备的结构示意图;
图5为本发明实施例中一种缓存命中率确定设备的具体结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一:
请参考图1,图1为本发明实施例中一种缓存命中率确定方法的流程图,该方法可应用于分布式存储系统中。该方法包括以下步骤:
S101、接收读请求,确定读请求对应的目标存储引擎,并更新目标存储引擎的读请求次数。
分布式存储系统接收到读请求时,首先确定读请求对应的目标存储引擎,然后更新目标存储引擎的读请求次数,如对数值进行加一。具体的,可预先为每一个目标存储引擎设置一个用于记载读请求次数的变量,该变量内存储读请求次数。变量的存储容量可按照常见的变量使用规则,根据实际应用需求而设置,在此不做限定。其中,目标存储引擎可为分布式存储系统中的任意一个存储引擎;变量是一段有名字的连续存储空间。在源代码中通过定义变量来申请并命名这样的存储空间,并通过变量的名字来使用这段存储空间。例如,为每一个存储引擎设置一个变量n_read,n_read则专门记载该存储引擎的读请求次数。
S102、若读请求命中目标存储引擎的SSD缓存,则更新目标存储引擎的读命中次数。
相应地,可预先为每一个存储引擎设置一个用于记载读命中次数的变量,该变量内存储读命中次数。例如,可设置变量n_read_hit来记载目标存储引擎的读命中次数。若读请求命中目标存储引擎的SSD缓存,则更新目标存储引擎的读命中次数。
S103、周期性地将读请求次数和读命中次数写入统计列表。
在本发明实施例中,可设置预估统计列表,该统计列表即应用存储读请求次数和读命中次数的表,且还可预先设置读请求次数和读命中次数的写入统计列表的周期。该周期可根据读请求次数的变量和读命中次数的变量可存储数值的大小以及系统最大读请求并发量而定。例如,若预计5秒内读请求次数会使得读请求次数对应的变量溢出,则可将周期设定为5秒。当然,该周期还可根据命中率计算的精度而设定,如若命中率的精度达到10秒最小时间单位的精度,则进而将周期的设定为低于或等于10秒。
周期性地将读请求次数和读命中次数写入统计列表,即达到时间周期对应的间隔时长,则将读请求次数和读命中次数写入统计列表中。
具体的,在写入读请求次数和读命中次数时,有如下两种写入方式:
写入方式一:
步骤一、周期性判断统计列表的长度是否已达指定长度上限;
步骤二、如果是,则将位于统计列表首端的一组数据删除,将读请求次数和读命中次数写入统计列表末端。
为便于描述,下面将上述两个步骤结合起来进行说明。
在写入方式一中,统计列表可设置为具有指定长度上限的列表,如长度上限为60,即可存储的60组不同周期对应的读请求次数和读命中次数。在存入统计列表之前,先周期性的判断统计列表的长度是否已达指定长度上限,如果达到则将统计列表首端的一组数据删除,而后将当前时刻的读请求次数和读命中次数写入统计列表末端。即,新的读请求次数和读命中次数总是位于统计列表的末端。也就是说,该统计列表总是维持最近一段时间内,指定个数时间周期分别对应的读请求次数和读命中次数。具体的,为了便于统计和查看,还可在将读请求次数和读命中次数写入统计列表之后,将读请求次数和读命中次数清零。即,在周期性地将读请求次数和读命中次数写入统计列表之后,将读请求次数和读命中次数清零。如此,每次写入统计列表中的读请求次数和读命中次数便是每一个独立的时间周期分别对应的读请求个数和读命中个数,便于用户了解实时的存储情况。
写入方式二:
将读请求次数和读命中次数周期性地写入统计列表。即,统计列表中最新的读请求次数总是大于或等于上一次写入的读请求次数,相应地,最新的读命中次数总是大于或等于上一次写入的读命中次数。也就是说,读请求次数和读命中次数为目标存储引擎开始统计之后,直到当前时刻所有的读请求次数和读命中次数。
上述方式一和方式二均可计算近期命中率,因而在实际用于中,任选其一便可。将读请求次数和读命中次数周期性地写入统计列表之后,便可执行步骤S104,即利用统计列表计算目标存储引擎的近期命中率。
S104、在接收到目标存储引擎的近期命中率计算请求时,读取统计列表中记录的读请求次数和读命中次数,计算目标存储引擎的近期命中率。
近期命中率计算请求可为上层应用发送的计算请求,也可为用户通过指令或图形化界面发起的近期命中率查看点击请求。在接收到目标存储引擎的近期命中率计算请求时,读取统计列表中记录的读请求次数和读命中次数,利用读取到的目标存储引擎的读请求次数和读命中次数,便可计算出目标存储引擎的近期命中率。
具体的,由于存在上述两种不同的读请求次数和读命中次数的写入统计列表的方式,下面则针对上述两种写入方式,分别说明具体的近期命中率计算方式:
计算方式一:
计算方式一与上文中的写入方式一相匹配。具体的,可执行以下步骤:
步骤一、读取统计列表中记录的各个不同周期对应的读请求次数和读命中次数,并分别进行累加,获得近期读请求总次数和近期读命中总次数;
步骤二、将近期读请求总次数和近期读命中次数的比值作为目标存储引擎的近期命中率。
为便于描述,下面将上述两个步骤结合起来进行说明。
采用写入方式一记载读请求次数和读命中次数,若写入读请求次数和读命中次数的周期为每5秒写入一次,则统计列表中所记载的读请求次数和读命中次数则分别为各个5秒内的读请求次数和读命中次数。例如,若统计列表的指定长度为60,统计列表中所记录的60个度请求次数和读命中次数则是最近5分钟内每间隔5秒便记录一次的读请求次数和读命中次数。每一组数据均为5秒内的统计数值。读取统计列表中记录的各个不同周期对应的读请求次数和读命中次数,并分别进行累加,获得近期读请求总次数和近期读命中总次数。然后,将近期读请求总次数和近期读命中次数的比值作为目标存储引擎的近期命中率。如此便可获得统计列表指定长度对应的时限内的近期命中率。例如,若统计列表的指定长度为60,而周期性写入读请求次数和读命中次数为每隔10秒写入一次,且写入之后,便将当前的读请求次数和读命中次数进行清零,因而在计算近期命中率时,若从统计列表中读取了60组读请求次数和读命中次数,并分别进行了累加之后,得到近期命中率,该近期命中率则为最近10分钟内的命中率。相应地,在读取统计列表时,还可仅读取最新的30组读请求次数和读命中次数,如此,计算出的近期面命中率则为最近5分钟内的命中率。
优选地,考虑到将读请求次数和读命中次数写入统计列表时,是以周期为单位的,因此,可能存在当前的读请求次数和读命中次数已记录了最近不到周期的统计数值。如周期为5秒,而此时读请求次数和读命中次数记录了最近4秒内的统计情况,因此,在计算近期命中率时,则将可当前时刻的读请求次数与已经写入统计列表的读请求次数进行累加,得到近期读请求总次数;相应地计算近期读命中总次数时,也可将当前时刻的读命中次数与已经写入统计列表的读命中次数进行累加。如此,近期命中总次数与近期总读请求次数的比值则更能准确表示目标引擎的最近命中率。
计算方式二:
计算方式一与上文中的写入方式二相匹配。具体的,可执行以下步骤:
步骤一、读取统计列表中与近期命中率计算请求对应的指定起始周期和指定终止周期的读请求次数,并计算读请求差值;
步骤二、读取统计列表指定起始周期和指定终止周期的读命中次数,并计算读命中差值;
步骤三、将读命中差值与读请求差值的比值作为近期命中率。
为便于描述,下面将上述三个步骤结合起来进行说明。
采用写入方式二时,在统计列表中记录的每一个读请求次数和读命中次数均为自有记录以来截止至写入时间对应的读请求次数和读命中次数。在计算近期命中率时,可读取统计列表中读取近期命中率计算请求对应的指定起始周期和指定终止周期。具体的,若近期命中率计算请求为最近5分钟的近期命中率计算请求,则在统计列表中,将最新写入的读请求次数和最新的读命中次数作为终止周期的读请求次数和读命中次数。将周期最近地5分钟对应的周期作为起始周期。若周期为10秒,则倒数第60个周期作为指定起始周期。读取统计列表中与近期命中率计算请求对应的指定起始周期和指定终止周期的读请求次数,并计算读请求差值;读取统计列表指定起始周期和指定终止周期的读命中次数,并计算读命中差值。在计算差值时,取其绝对值。然后将读命中差值与读请求差值的比值作为近期命中率。若指定起始周期的读请求次数为5000,读命中次数为3005,指定终止周期的读请求次数为6140,读命中次数为3075,则在指定起始周期至指定终止周期之间,读请求差值为130(即,6140-5000=140),读命中差值为70(即3075-3005=70),则近期命中率为50%。
计算出近期命中率之后,可返回上层应用,也可将近期命中率进行存储,以便后续查看阅览,也可将近期命中率输出至可视化界面,以便用户进行存储性能分析。
应用本发明实施例所提供的方法,该方法可应用于分布式存储系统中,接收读请求,确定读请求对应的目标存储引擎,并更新目标存储引擎的读请求次数;若读请求命中目标存储引擎的SSD缓存,则更新目标存储引擎的读命中次数;周期性地将读请求次数和读命中次数写入统计列表;在接收到目标存储引擎的近期命中率计算请求时,读取统计列表中记录的读请求次数和读命中次数,计算目标存储引擎的近期命中率。
接收读请求时,将读请求对应的目标存储引擎的读请求次数进行更新,并在读请求命中目标存储引擎的SSD缓存时,更新目标存储引擎的读命中次数。为了便于计算近期命中率,周期性地将读请求次数和读命中次数写入统计列表中。如此,便可在接收到目标存储引擎的近期命中率计算请求时,读取统计列表中记录的各个周期对应的读请求次数和读命中次数。然后,基于读取到的读请求次数和读命中次数便可计算出目标存储引擎的近期命中率。计算出的近期命中率有利于分析近期目标存储引擎的最近一段时间的存储状态,以提高分布式存储系统的存储系统。
需要说明的是,基于上述实施例,本发明实施例还提供了相应的改进方案。在优选/改进实施例中涉及与上述实施例中相同步骤或相应步骤之间可相互参考,相应的有益效果也可相互参照,在本文的优选/改进实施例中不再一一赘述。
优选地,考虑到分布式存储系统的系统近期命中率对存储系统的性能分析起到参考作用,因此本发明实施例还提供了如下确定方式,以获得存储系统的近期命中率。具体实现过程包括:
步骤一、在接收到分布式存储系统的近期命中率计算请求时,将分布式存储系统中的各个目标存储引擎当前时刻分别对应的近期读请求次数进行求和,获得系统近期读请求次数;
步骤二、将分布式存储系统中的各个目标存储引擎当前时刻分别对应的近期读命中次数进行求和,获得系统近期命中次数;
步骤三、将系统近期命中次数与系统近期读请求次数的比值作为系统近期命中率。
其核心思想即将分布式存储系统中的各个存储引擎的近期读请求次数以及当前读请求次数进行求和,获得系统近期读请求次数;将各个存储引擎的引擎读命中次数以及当前读命中次数进行求和,获得系统近期读命中次数。具体的,如何计算每一个存储引擎的近期读请求次数、近期读命中次数可参照上述实施例所描述的计算方式,在此不在一一赘述。然后将系统近期读命中次数与系统近期读请求次数的比值作为分布式存储系统的近期命中率。
优选地,考虑到单个存储引擎的总命中率也对存储系统的性能分析起到一定的辅助作用,因此本发明实施例提供了如下确定方式,以获得目标存储引擎的总命中率。具体实现过程包括:
步骤一、在周期性地将读请求次数和读命中次数写入统计列表时,将读请求次数加至历史读请求次数,将读命中次数加至历史命中次数;
步骤二、在接收到目标存储引擎的总命中率计算请求时,将总读请求次数与当前时刻的读请求次数相加,获得总读请求次数;
步骤三、将历史读命中次数与当前时刻的读命中次数相加,获得总读命中次数;
步骤四、将总读命中次数与总读请求次数的比值作为目标存储引擎的总命中率。
其核心思想与计算近期命中率的相类似,即将各个存储引擎的读请求次数进行累加,便可获得分布式存储系统的总读请求次数;相应地,将各个存储引擎的读命中次数进行累加,便可获得分别是存储系统的总读命中次数。计算总读命中次数与总读请求次数的比值,该比值即可直接作为目标存储引擎的总命中率。
实施例二:
为了便于本领域技术人员更好的理解本发明实施例所提供的技术方案,下面以具体的应用场景为例,对本发明实施例所提供的技术方案进行详细说明。
分布式存储系统中的每个存储引擎分别使用不同的SSD缓存空间,为此,在各个存储引擎对请求的次数和读命中的次数进行统计。具体实现过程如下:
定义变量n_read和n_read_hit,分别表示读请求次数和读命中次数;
每隔五秒(同上文中的周期),将n_read和n_read_hit的值加到n_sum和n_hit_sum上,分别表示该存储引擎的总读次数和总命中次数;
维护一个长度上限为60的列表hit_list,每隔五秒将<n_read,n_read_hit>加入到hit_list中,如果列表已经达到60,则将最前面的,即最早的一对数据删除,并将最新的数据加入到后面。其中,列表长度上限表征了近期命中率的时间长度,60即为60个5秒共计5分钟。需要说明的是,将n_read和n_read_hit的值写入列表,以及加到n_sum和n_hit_sum上之后,需将数值清零。
然后,根据列表中的数据来获取具体的命中率情况,不同命中率计算方式如下:
一、单个存储引擎总命中率:
hit_percent=(n_hit_sum+n_read_hit)/(n_sum+n_read)。
二、单个存储引擎近期命中率:将hit_list中记录的n_read求和,并加上当前的n_read,值为n_sum_recent;将hit_list中记录的n_hit_read求和,并加上当前的n_hit_read,值为n_hit_recent,则本存储引擎的近期命中率为:
hit_percent_recent=n_hit_recent/n_sum_recent。
三、整个存储系统的总命中率:收集每个存储引擎的n_sum、n_hit_sum、n_read、n_read_hit,获取整个存储系统的读请求之和:∑n_sum+∑n_read与整个存储系统总命中之和:∑n_hit_sum+∑n_read_hit则整个存储系统的总命中率为:total_hit_percent=(∑n_hit_sum+∑n_read_hit)/(∑n_sum+∑n_read)。
四、整个存储系统近期总命中率:收集每个存储引擎上的列表hit_list、n_read、n_read_hit,获取整个存储系统近期读命中数之和∑n_read_hit和读请求数之和∑n_read,则分布式存储系统近期总命中率为:total_hit_percent_recent=∑n_read_hit/∑n_read。
另外,还可对n_sum、n_hit_sum、n_read、n_read_hit进行置零,并清空hit_list列表。
注意:在命中率计算模块中,被除数为零表示不存在读请求,此时,不对命中率进行计算和输出显示。
假设有一个分布式存储系统包含两个存储引擎,该系统的缓存命中率计算数据流如图2所示,每个存储引擎上的存储数据包括:当前读请求数n_read、读命中数n_read_hit、历史数据列表hit_list、总读次数n_sum、总命中次数n_hit_sum。
根据存储引擎1的数据,可以计算得到存储引擎1的总命中率和近期命中率;根据存储引擎2的数据,可以计算得到存储引擎2的总命中率和近期命中率。根据存储引擎1和存储引擎2的所有数据,可以计算得到整个分布式存储系统的总命中率和近期命中率。
当执行重置命中率后,将两个存储引擎上的当前读请求数n_read、读命中数n_read_hit、历史数据列表hit_list、总读次数n_sum、总命中次数n_hit_sum等全部原始数据清零。
实施上述过程,便可对分布式存储系统中单个存储引擎或者整个存储系统的缓存命中率情况的计算和监控,便于用户对存储系统性能和功能的感知,同时也可以作为分布式存储系统中其他功能特性的输入数据,以支撑其他功能特性的开展。
实施例三:
相应于上面的方法实施例,本发明实施例还提供了一种缓存命中率确定装置,下文描述的缓存命中率确定装置与上文描述的缓存命中率确定方法可相互对应参照。
参见图3所示,该装置包括以下模块:
一种缓存命中率确定装置,包括:
读请求次数更新模块101,用于接收读请求,确定读请求对应的目标存储引擎,并更新目标存储引擎的读请求次数;
读命中次数更新模块102,用于若读请求命中目标存储引擎的SSD缓存,则更新目标存储引擎的读命中次数;
数据记录模块103,用于周期性地将读请求次数和读命中次数写入统计列表;
命中率计算模块104,用于在接收到目标存储引擎的近期命中率计算请求时,读取统计列表中记录的读请求次数和读命中次数,计算目标存储引擎的近期命中率。
应用本发明实施例所提供的装置,该方法可应用于分布式存储系统中,接收读请求,确定读请求对应的目标存储引擎,并更新目标存储引擎的读请求次数;若读请求命中目标存储引擎的SSD缓存,则更新目标存储引擎的读命中次数;周期性地将读请求次数和读命中次数写入统计列表;在接收到目标存储引擎的近期命中率计算请求时,读取统计列表中记录的读请求次数和读命中次数,计算目标存储引擎的近期命中率。
接收读请求时,将读请求对应的目标存储引擎的读请求次数进行更新,并在读请求命中目标存储引擎的SSD缓存时,更新目标存储引擎的读命中次数。为了便于计算近期命中率,周期性地将读请求次数和读命中次数写入统计列表中。如此,便可在接收到目标存储引擎的近期命中率计算请求时,读取统计列表中记录的各个周期对应的读请求次数和读命中次数。然后,基于读取到的读请求次数和读命中次数便可计算出目标存储引擎的近期命中率。计算出的近期命中率有利于分析近期目标存储引擎的最近一段时间的存储状态,以提高分布式存储系统的存储系统。
在本发明的一种具体实施方式中,还包括:
数据清零模块,用于在周期性地将读请求次数和读命中次数写入统计列表之后,将读请求次数和读命中次数清零。
在本发明的一种具体实施方式中,命中率计算模块104,具体用于读取统计列表中记录的各个不同周期对应的读请求次数和读命中次数,并分别进行累加,获得近期读请求总次数和近期读命中总次数;将近期读请求总次数和近期读命中次数的比值作为目标存储引擎的近期命中率。
在本发明的一种具体实施方式中,数据记录模块103,具体用于周期性判断统计列表的长度是否已达指定长度上限;如果是,则将位于统计列表首端的一组数据删除,将读请求次数和读命中次数写入统计列表末端。
在本发明的一种具体实施方式中,命中率计算模块104,还用于在周期性地将读请求次数和读命中次数写入统计列表时,将读请求次数加至历史读请求次数,将读命中次数加至历史命中次数;在接收到目标存储引擎的总命中率计算请求时,将总读请求次数与当前时刻的读请求次数相加,获得总读请求次数;将历史读命中次数与当前时刻的读命中次数相加,获得总读命中次数;将总读命中次数与总读请求次数的比值作为目标存储引擎的总命中率。
在本发明的一种具体实施方式中,命中率计算模块104,还用于在接收到分布式存储系统的近期命中率计算请求时,将分布式存储系统中的各个目标存储引擎当前时刻分别对应的近期读请求次数进行求和,获得系统近期读请求次数;将分布式存储系统中的各个目标存储引擎当前时刻分别对应的近期读命中次数进行求和,获得系统近期命中次数;将系统近期命中次数与系统近期读请求次数的比值作为系统近期命中率。
在本发明的一种具体实施方式中,命中率计算模块104,具体用于读取统计列表中与近期命中率计算请求对应的指定起始周期和指定终止周期的读请求次数,并计算读请求差值;读取统计列表指定起始周期和指定终止周期的读命中次数,并计算读命中差值;将读命中差值与读请求差值的比值作为近期命中率。
实施例四:
相应于上面的方法实施例,本发明实施例还提供了一种缓存命中率确定设备,下文描述的一种缓存命中率确定设备与上文描述的一种缓存命中率确定方法可相互对应参照。
参见图4所示,该缓存命中率确定设备包括:
存储器D1,用于存储计算机程序;
处理器D2,用于执行计算机程序时实现上述方法实施例的缓存命中率确定方法的步骤。
具体的,请参考图5,为本实施例提供的一种缓存命中率确定设备的具体结构示意图,该缓存命中率确定设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)322(例如,一个或一个以上处理器)和存储器332,一个或一个以上存储应用程序342或数据344的存储介质330(例如一个或一个以上海量存储设备)。其中,存储器332和存储介质330可以是短暂存储或持久存储。存储在存储介质330的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,中央处理器322可以设置为与存储介质330通信,在缓存命中率确定设备301上执行存储介质330中的一系列指令操作。
缓存命中率确定设备301还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作系统341。例如,Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等。
上文所描述的缓存命中率确定方法中的步骤可以由缓存命中率确定设备的结构实现。
实施例五:
相应于上面的方法实施例,本发明实施例还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的一种缓存命中率确定方法可相互对应参照。
一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的缓存命中率确定方法的步骤。
该可读存储介质具体可以为U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可存储程序代码的可读存储介质。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
Claims (10)
1.一种缓存命中率确定方法,其特征在于,包括:
接收读请求,确定所述读请求对应的目标存储引擎,并更新所述目标存储引擎的读请求次数;
若所述读请求命中所述目标存储引擎的SSD缓存,则更新所述目标存储引擎的读命中次数;
周期性地将所述读请求次数和所述读命中次数写入统计列表;
在接收到所述目标存储引擎的近期命中率计算请求时,读取所述统计列表中记录的所述读请求次数和所述读命中次数,计算所述目标存储引擎的近期命中率;
其中,所述近期命中率的确定方式为:
hit_percent_recent=n_hit_recent/n_sum_recent
式中,hit_percent_recent为近期命中率,n_hit_recent为读命中次数,n_sum_recent为读请求次数。
2.根据权利要求1所述的缓存命中率确定方法,其特征在于,在周期性地将所述读请求次数和所述读命中次数写入统计列表之后,还包括:
将所述读请求次数和所述读命中次数清零。
3.根据权利要求2所述的缓存命中率确定方法,其特征在于,读取所述统计列表中记录的所述读请求次数和所述读命中次数,计算所述目标存储引擎的近期命中率,包括:
读取所述统计列表中记录的各个不同周期对应的所述读请求次数和所述读命中次数,并分别进行累加,获得近期读请求总次数和近期读命中总次数;
将所述近期读请求总次数和所述近期读命中次数的比值作为所述目标存储引擎的近期命中率。
4.根据权利要求2所述的缓存命中率确定方法,其特征在于,所述周期性地将所述读请求次数和所述读命中次数写入统计列表,包括:
周期性判断所述统计列表的长度是否已达指定长度上限;
如果是,则将位于所述统计列表首端的一组数据删除,将所述读请求次数和所述读命中次数写入所述统计列表末端。
5.根据权利要求2所述的缓存命中率确定方法,其特征在于,还包括:
在所述周期性地将所述读请求次数和所述读命中次数写入统计列表时,将所述读请求次数加至历史读请求次数,将所述读命中次数加至历史命中次数;
在接收到所述目标存储引擎的总命中率计算请求时,将所述历史读请求次数与当前时刻的所述读请求次数相加,获得总读请求次数;
将所述历史读命中次数与当前时刻的所述读命中次数相加,获得总读命中次数;
将所述总读命中次数与所述总读请求次数的比值作为所述目标存储引擎的总命中率。
6.根据权利要求3所述的缓存命中率确定方法,其特征在于,还包括:
在接收到分布式存储系统的近期命中率计算请求时,将所述分布式存储系统中的各个所述目标存储引擎当前时刻分别对应的所述近期读请求次数进行求和,获得系统近期读请求次数;
将所述分布式存储系统中的各个所述目标存储引擎当前时刻分别对应的近期读命中次数进行求和,获得系统近期命中次数;
将所述系统近期命中次数与所述系统近期读请求次数的比值作为系统近期命中率。
7.根据权利要求1所述的缓存命中率确定方法,其特征在于,所述读取所述统计列表中记录的所述读请求次数和所述读命中次数,计算所述目标存储引擎的近期命中率,包括:
读取所述统计列表中与所述近期命中率计算请求对应的指定起始周期和指定终止周期的所述读请求次数,并计算读请求差值;
读取所述统计列表所述指定起始周期和所述指定终止周期的所述读命中次数,并计算读命中差值;
将所述读命中差值与所述读请求差值的比值作为所述近期命中率。
8.一种缓存命中率确定装置,其特征在于,包括:
读请求次数更新模块,用于接收读请求,确定所述读请求对应的目标存储引擎,并更新所述目标存储引擎的读请求次数;
读命中次数更新模块,用于若所述读请求命中所述目标存储引擎的SSD缓存,则更新所述目标存储引擎的读命中次数;
数据记录模块,用于周期性地将所述读请求次数和所述读命中次数写入统计列表;
命中率计算模块,用于在接收到所述目标存储引擎的近期命中率计算请求时,读取所述统计列表中记录的所述读请求次数和所述读命中次数,计算所述目标存储引擎的近期命中率;
其中,所述近期命中率的确定方式为:
hit_percent_recent=n_hit_recent/n_sum_recent
式中,hit_percent_recent为近期命中率,n_hit_recent为读命中次数,n_sum_recent为读请求次数。
9.一种缓存命中率确定设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述缓存命中率确定方法的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述缓存命中率确定方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811325736.0A CN109388550B (zh) | 2018-11-08 | 2018-11-08 | 一种缓存命中率确定方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811325736.0A CN109388550B (zh) | 2018-11-08 | 2018-11-08 | 一种缓存命中率确定方法、装置、设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109388550A CN109388550A (zh) | 2019-02-26 |
CN109388550B true CN109388550B (zh) | 2022-03-22 |
Family
ID=65428571
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811325736.0A Active CN109388550B (zh) | 2018-11-08 | 2018-11-08 | 一种缓存命中率确定方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109388550B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110018969B (zh) * | 2019-03-08 | 2023-06-02 | 平安科技(深圳)有限公司 | 数据缓存方法、装置、计算机设备和存储介质 |
US11023380B2 (en) | 2019-09-10 | 2021-06-01 | Western Digital Technologies, Inc. | Non-volatile storage system with filtering of data samples for a monitored operational statistic |
CN113761418A (zh) * | 2021-01-06 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 一种缓存命中率确定方法和装置 |
CN114327672B (zh) * | 2021-12-14 | 2024-04-05 | 中国平安财产保险股份有限公司 | 数据缓存时间设置方法、装置、计算机设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101236564A (zh) * | 2008-03-03 | 2008-08-06 | 浪潮通信信息系统有限公司 | 一种海量数据高性能读取显示方法 |
CN104572491A (zh) * | 2014-12-30 | 2015-04-29 | 华为技术有限公司 | 一种基于固态硬盘的读缓存管理方法及装置 |
CN105205014A (zh) * | 2015-09-28 | 2015-12-30 | 北京百度网讯科技有限公司 | 一种数据存储方法和装置 |
CN106155913A (zh) * | 2015-04-15 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 缓存命中率分析的方法及设备 |
JP2017027296A (ja) * | 2015-07-21 | 2017-02-02 | 富士通株式会社 | 性能評価方法、性能評価プログラム及び情報処理装置 |
-
2018
- 2018-11-08 CN CN201811325736.0A patent/CN109388550B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101236564A (zh) * | 2008-03-03 | 2008-08-06 | 浪潮通信信息系统有限公司 | 一种海量数据高性能读取显示方法 |
CN104572491A (zh) * | 2014-12-30 | 2015-04-29 | 华为技术有限公司 | 一种基于固态硬盘的读缓存管理方法及装置 |
CN106155913A (zh) * | 2015-04-15 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 缓存命中率分析的方法及设备 |
JP2017027296A (ja) * | 2015-07-21 | 2017-02-02 | 富士通株式会社 | 性能評価方法、性能評価プログラム及び情報処理装置 |
CN105205014A (zh) * | 2015-09-28 | 2015-12-30 | 北京百度网讯科技有限公司 | 一种数据存储方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109388550A (zh) | 2019-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109388550B (zh) | 一种缓存命中率确定方法、装置、设备及可读存储介质 | |
US11645293B2 (en) | Anomaly detection in big data time series analysis | |
CN109828721B (zh) | 数据删除方法、装置、计算机设备及存储介质 | |
CN111881133B (zh) | 存储桶管理方法、装置、计算机设备及可读存储介质 | |
CN108874535B (zh) | 一种任务调节方法、计算机可读存储介质及终端设备 | |
US9767018B2 (en) | Allocation aware heap fragmentation metrics | |
CN108846114A (zh) | 分布式系统控制方法、装置、设备及可读存储介质 | |
CN106569893B (zh) | 流量控制方法及设备 | |
CN111158999B (zh) | 一种格式化时间的计算方法和装置 | |
CN111309728A (zh) | 一种流量统计方法、装置、系统及存储介质 | |
US10977180B2 (en) | Hit-based allocation of quotas of a cache space of a cache memory | |
CN111339158A (zh) | 一种进行信息处理的方法、装置、电子设备及存储介质 | |
CN111427920B (zh) | 数据采集方法、装置、系统、计算机设备及存储介质 | |
CN111078418B (zh) | 操作同步方法、装置、电子设备及计算机可读存储介质 | |
CN108491165A (zh) | 一种用于分级存储的数据迁移方法及系统 | |
CN116578466A (zh) | 计算存储性能指标数据参考值的方法、装置、设备及介质 | |
CN116126859A (zh) | 一种数据管理方法、装置、电子设备及存储介质 | |
CN109560965B (zh) | 一种分布式系统的流量获取方法、装置及设备 | |
CN112446490A (zh) | 一种网络训练的数据集缓存方法、装置、设备及存储介质 | |
CN109981391B (zh) | 一种采样方法、设备及可读存储介质 | |
EP3547142B1 (en) | Processing message | |
US11947521B1 (en) | Efficient automatic web scraping systems and methods | |
CN110750432B (zh) | 分布式存储系统的io性能分析方法、系统及相关组件 | |
CN113568822B (zh) | 业务资源监控方法、装置、计算设备及存储介质 | |
US11714737B2 (en) | Time clock quality determination |
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 |