CN113835868B - 一种基于反馈和公平队列的服务质量感知的缓存调度方法 - Google Patents

一种基于反馈和公平队列的服务质量感知的缓存调度方法 Download PDF

Info

Publication number
CN113835868B
CN113835868B CN202111412833.5A CN202111412833A CN113835868B CN 113835868 B CN113835868 B CN 113835868B CN 202111412833 A CN202111412833 A CN 202111412833A CN 113835868 B CN113835868 B CN 113835868B
Authority
CN
China
Prior art keywords
cache
partition
service
request
application
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
Application number
CN202111412833.5A
Other languages
English (en)
Other versions
CN113835868A (zh
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.)
Zhejiang Lab
Original Assignee
Zhejiang Lab
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 Zhejiang Lab filed Critical Zhejiang Lab
Priority to CN202111412833.5A priority Critical patent/CN113835868B/zh
Publication of CN113835868A publication Critical patent/CN113835868A/zh
Application granted granted Critical
Publication of CN113835868B publication Critical patent/CN113835868B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/484Precedence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5021Priority

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (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

一种基于反馈和公平队列的服务质量感知的缓存调度方法
技术领域
本发明属于计算机系统结构缓存调度领域,涉及一种基于反馈和公平队列的服务质量感知的缓存调度方法。
背景技术
近几年传统缓存算法主要关注如何提高缓存命中率,其基本方法是根据存储访问局部性原理缓存最有可能被访问的缓存块。当前存储系统越来越趋向融合,不仅应用数量不断增加,而且应用种类也越来越复杂,不同应用在负载特征和访问规律中往往存在着较大的差异,比如电子邮件服务器随机性访问较多以及重复访问较少、网站服务器虽然随机访问较多但是某些热点网页重复性访问较多、而视频类服务器顺序性访问较多等等。这些应用的异构性给传统缓存算法带来新的问题,一方面,传统缓存算法缺乏有效的性能隔离机制。因此,无法提供有效的服务质量保证;另一方面,因为多个应用并发访问,所以一个应用访问序列可能随时插入其他应用的访问请求,但是不同应用之间的数据相关性较弱,这使得负载的整体局部性降低,特别是数据请求达到率较低的应用受到的影响更大。
发明内容
为了解决现有技术中存在的上述技术问题,本发明提出了一种基于反馈和公平队列的服务质量感知的缓存调度方法,其具体技术方案如下:
一种基于反馈和公平队列的服务质量感知的缓存调度方法,采用服务质量衡量策略将不同类似的应用的服务质量指标化,使用开始时间公平列队设置不同的开始服务时间来控制不同应用请求的服务顺序,利用基于反馈的缓存分区管理模块将所有逻辑分区划分为两种类型:提供分区和接收分区,并且调整两种类型逻辑分区之间的缓存分配,通过缓存块分配管理模块平衡整体性能和保证服务质量,以及缓存淘汰策略监控模块监控每个逻辑分区的当前缓存淘汰策略效率,并根据应用的负载特征变化进行动态调整,使用缓存压缩监控模块捕获局部性较差的应用,即存在缓存命中率长尾现象的应用。
优选的,所述服务质量衡量策略,具体包括以下步骤:
步骤1,根据用户指定应用类型或者根据其负载特征推测出具体的应用类型,用不同的服务质量计算方法计算其服务目标值,如果是低延迟应用,则进入步骤2,如果是高带宽应用,则进入步骤4;
步骤2,低延迟应用的数据请求的访问延迟由等待时间和服务时间两个部分组成, 采用经典的M/G/1模型对数据请求的等待队列进行建模,将数据请求的平均服务时间设置 为T u ,则一个数据请求的平均等待时间表示为
Figure DEST_PATH_IMAGE001
, 其中λ为请求到达率,E表示平均值;
步骤3,再加上请求的平均服务时间,保证该应用的延迟服务质量目标必须满足公 式
Figure 103939DEST_PATH_IMAGE002
步骤4,带宽型应用的性能受缓存命中率的影响,一个数据请求的平均服务时间T u 可以用公式
Figure DEST_PATH_IMAGE003
表示,其中h为缓存命中率,T cache 是缓存命中 时的服务时间,T disk 是缓存没有命中需要访问磁盘的服务时间;
步骤5,再根据请求大小Rlen,获得保证应用的带宽服务质量目标必须满足公式
Figure 83397DEST_PATH_IMAGE004
优选的,所述开始时间公平列队,工作流程具体包括以下步骤:
步骤1,对每个到达缓存的请求计算开始服务时间,并将该开始服务时间作为其服务顺序,请求根据开始服务时间从短到长的排列被放置到队列的前面位置,并且优先服务;
步骤2,对于延迟型应用,根据请求的到达时间和延迟服务质量目标计算其开始服 务时间,具体公式如下:
Figure DEST_PATH_IMAGE005
,其中starttime表示请求的 开始服务时间,arrivaltime表示请求的到达时间;
步骤3,对于带宽型应用,根据请求的到达时间、平均请求大小和带宽服务质量目标计算开始服务时间,具体公式如下:
Figure 440297DEST_PATH_IMAGE006
,其中starttime表示请求的开始 服务时间,arrivaltime表示请求的到达时间;
步骤4,根据应用进程的序号轮流将应用的请求放到不同的队列中,一个应用的所有请求集中存放到一个队列中,所有队列轮流完,队列再重头开始选择;
步骤5,根据每个队列中所有应用的服务质量目标总和,为每个队列计算一个权值,并根据权值大小决定每个队列的服务时间间隔,权值越大,服务时间间隔越小;
步骤6,每个队列启动一个工作线程,所有请求在队列中按照开始服务时间排序,工作线程每隔一小段时间挑选开始时间最小的请求输出到缓存管理模块,如果前后请求属于同一个应用,并且存储地址连续,则将所述请求一并取出。
优选的,所述基于反馈的缓存分区管理模块,工作流程具体包括以下步骤:
步骤1,将运行时间划分成多个周期性时间,并且观察当前时间的上一个周期应用 获得的性能
Figure DEST_PATH_IMAGE007
,然后计算当前性能
Figure 845959DEST_PATH_IMAGE007
与服务质量目标
Figure 457069DEST_PATH_IMAGE008
之间的性能差 值ΔP,具体计算方式如公式
Figure DEST_PATH_IMAGE009
所示,P表示带宽或者延迟;
步骤2,根据性能差值的计算结果决定各个分区的缓存调整方向,对于ΔP>0的分区,表示该应用分配的缓存足够保证其服务质量目标,称该分区为提供分区;对于ΔP<0的分区,表示该应用当前分配的缓存不足以保证其服务质量目标,需要再下一个周期增加其缓存,称该分区为接收分区;
步骤3,当所有提供分区的富余缓存空间大于所有接收分区的缓存需求时,采用性能优先的缓存分配策略,首先将所有提供分区的缓存块按照收益从低到高排列,收益最低的缓存块将会优先分配给接收分区,接着,继续将收益次低的缓存块分配给接收分区,依次进行,直到满足所有的接收分区的需求为止,其中该策略中,提供分区中效益较高的缓存块会得到保留;
步骤4,当所有提供分区的富余缓存空间不足以满足所有接收分区的缓存需求时,采用服务质量优先的缓存分配策略,将所有接收分区按照缓存需求从少到多排序,需求最少的接收分区将优先被分配缓存,接着,需要次少的接收分区会被分配缓存,依次进行,直到提供分区所有的富余缓存分配完为止。
优选的,所述缓存块分配管理模块,工作流程具体包括以下步骤:
步骤1,当一个请求发生缓存缺失时,首先判断应用对应的逻辑分区的缓存大小是否等于预期的缓存空间,即在上一个周期根据其服务质量目标计算得到的逻辑分区大小;
步骤2,如果该逻辑分区已经达到预期的缓存空间,那么将使用最近缓存替换策略选择该逻辑分区中的一个缓存块淘汰掉,用于新请求的缓存;
步骤3,如果还没有达到预期的缓存空间,则选择一个提供分区作为淘汰分区,并使用最近缓存替换策略选择该逻辑分区中的一个缓存块淘汰掉,并重新分配给新请求所在的逻辑分区;
步骤4,采用缓存命中次数来表示缓存增减造成的性能变化,记录每个周期缓存段的命中次数,在缓存分配时,只有在接收分区的末尾缓存段的当前缓存命中次数超过指定的阈值之后,才能执行分配。
优选的,所述缓存淘汰策略监控模块,工作流程具体包括以下步骤:
步骤1,在每个周期,记录逻辑分区当前的分配缓存大小,以及其应用的服务质量保证情况;
步骤2,在每个周期调整缓存分配时,如果该逻辑分区的缓存大小超过平均值,并且服务质量没有满足应用设定的目标值,则启动缓存淘汰策略效率监控,如果满足服务质量目标,则结束,等下一个周期结束时再判断;
步骤3,从逻辑分区中划出10%的缓存空间即至少一个缓存段来独立管理,并且该缓存使用另一种缓存淘汰算法,根据其和逻辑分区的缓存空间大小比例设置采样系数δ,在下一个周期,采样一部分请求放入该独立缓存,并用新的缓存淘汰算法管理,被采样的请求在原来的逻辑分区中有一个对应的占位符;
步骤4,在当前周期结束的时候,记住当前缓存淘汰算法的效益,并且比较逻辑分区和独立缓存之间的效益,如果独立缓存的效益更高,则将逻辑分区的缓存淘汰策略切换为新的缓存淘汰算法,独立缓存回收到逻辑分区末尾,并结束监控,否则,继续选择新的缓存淘汰算法,继续步骤3。
优选的,所述缓存压缩监控模块,工作流程具体包括以下步骤:
步骤1,在当前周期内,记录当前逻辑分区每个缓存段的命中次数分布情况;
步骤2,在每个周期结束的时候,判断当前逻辑分区的缓存命中次数是否存在长尾情况,所述长尾情况是指连续多个周期末尾的多个缓存段,默认值是至少20%的缓存段数量,在当前周期的命中次数低于阈值;
步骤3,一旦出现长尾情况,则启动逻辑分区压缩流程,将命中次数低于阈值的逻辑分区中的数据通过snappy算法进行压缩存储;
步骤4,比较请求数据压缩前后的大小,如果压缩后的请求大小大于压缩前的请求大小,则放弃此次压缩,如果该逻辑分区联系多次,均超过压缩前的请求大小,则停止该逻辑分区的压缩;
步骤5,继续监控逻辑分区的命中次数分布情况,如果命中次数继续降低,则增加需要压缩存储的缓存段,反之,如果命中次数增加,则减少需要压缩存储的缓存段。
本发明的优点:本发明能够兼顾缓存整体效率和应用之间的服务质量保证。
附图说明
图1为本发明实施例服务质量衡量策略的流程图;
图2为本发明实施例开始时间公平队列的流程图;
图3为本发明实施例基于反馈的缓存分区管理模块的流程图;
图4为本发明实施例缓存块分配管理模块的流程图;
图5为本发明实施例缓存淘汰策略监控模块的流程图;
图6为本发明实施例缓存压缩监控模块的流程图。
具体实施方式
为了使本发明的目的、技术方案和技术效果更加清楚明白,以下结合说明书附图,对本发明作进一步详细说明。
本发明提出了一种基于反馈结构和公平队列的服务质量感知的缓存调度方法,使用缓存分区策略,缓存被分成多个逻辑分区,每个应用对应一个缓存逻辑分区,并且根据应用的负载变化动态调整其逻辑分区大小,一个应用只能在对应的逻辑分区上进行存取。本发明主要采用了服务质量衡量策略、开始时间公平队列、基于反馈的缓存分区管理模块、缓存块分配管理模块、缓存淘汰策略监控模块、缓存压缩监控模块这六个模块。服务质量衡量策略主要为不同类似的应用将其服务质量指标化,从而有利于统一调度。开始时间公平队列通过设置不同的开始服务时间来控制不同应用请求的服务顺序,开始服务时间根据请求的到达时间和其服务质量目标计算得到。开始服务时间小的请求会放置在队列前面,并且优先服务。总的来说,如果服务质量目标设置的越高,那么应用请求的开始服务时间也会越小,其请求也会将被优先服务。基于反馈的缓存分区管理模块采用周期性策略,将所有逻辑分区划分为两种类型:提供分区和接收分区。并且调整两种类型逻辑分区之间的缓存分配。再加上缓存块分配管理模块平衡整体性能和服务质量保证,可以实现再尽可能保证更多应用的服务质量的前提下,能够实现整体缓存效率最优。缓存淘汰策略监控模块主要监控每个逻辑分区的当前缓存淘汰策略效率,并根据应用的负载特征变化进行动态调整,使得始终使用效率最高的缓存淘汰策略。缓存压缩监控模块主要捕获局部性较差的应用,这类应用往往存在缓存命中率长尾现象,即缓存队列尾部缓存段的缓存命中率几乎在所有缓存淘汰策略下都相差不大。相反,对缓存空间大小较为敏感,即缓存空间越大,缓存命中率越高。一旦捕获到这样应用,该模块会对其缓存段进行压缩存储,以提高整体缓存效率。
所述服务质量衡量策略的主要流程如图1所示。不同应用对其服务质量要求往往存在差异。根据其服务质量要求的不同,可以将应用分为两种类型:低延迟应用和高带宽应用。低延迟应用要求IO请求延迟低于指定的服务目标值,比如即时聊天、文档编辑都属于这一类应用。高带宽应用要求带宽高于指定的服务目标值,比如网络文件传输、数据备份都属于这一类应用。但是,应用的服务要求无法直接用于缓存资源的分配,需要先通过服务质量衡量策略将应用的需求转化为应用的服务目标值,所述服务质量衡量策略的具体步骤如下:
步骤1,先根据用户指定应用类型,或者根据其负载特征推测出具体的应用类型。然后用不同的服务质量计算方法计算其服务目标值。如果是低延迟应用,则进入步骤2;如果是高带宽应用,则进入步骤4;
步骤2,数据请求的访问延迟由等待时间和服务时间两个部分组成。用经典的M/G/ 1模型对数据请求的等待队列进行建模,将数据请求的平均服务时间设置为Tu,则一个数据 请求的而平均等待时间可以表示为
Figure 358160DEST_PATH_IMAGE010
,其中λ为请 求到达率,E表示平均值;
步骤3,再加上请求的平均服务时间,保证该应用的延迟服务质量目标必须满足公 式
Figure DEST_PATH_IMAGE011
步骤4,带宽型应用的性能受缓存命中率影响较大,一个请求的平均服务时间Tu可 以用公式
Figure 202357DEST_PATH_IMAGE012
表示,其中h为缓存命中率,T cache 是缓存命中时 的服务时间,T disk 是缓存没有命中需要访问磁盘的服务时间;
步骤5,再根据请求大小Rlen,可以获得保证应用的带宽服务质量目标必须满足公 式
Figure DEST_PATH_IMAGE013
所述开始时间公平队列的主要流程如图2所示。开始时间公平队列用于控制应用请求的服务顺序,从而最大程度保证所有应用的服务质量。本算法使用软服务质量保证方法而非硬服务质量保证方法。两者的区别在于,硬服务质量保证方法会严格要求应用的性能必须达到指定的服务质量目标。而软服务质量保证方法则比较灵活,不会限制需求超过系统能力的请求进入到系统中,同时使用尽力而为的原则尽可能地保证更多应用的服务质量,从而实现整体最优。需要注意的是,开始服务时间仅用于指示请求之间的服务顺序,并不等于请求的真正服务时间。有别于传统的单队列,本发明设计了一种多队列排队方法,改进了单队列存在的负载不平衡,以及因锁竞争导致的并发度低等问题。开始时间公平队列的具体执行步骤如下:
步骤1,对每个到达缓存的请求计算开始服务时间,并将该开始服务时间作为其服务顺序,开始服务时间较小的请求会被放置到队列的前面位置,并且优先服务;
步骤2,对于延迟型应用,根据请求的到达时间和延迟服务质量目标计算其开始服 务时间,具体公式如下:
Figure 729153DEST_PATH_IMAGE014
,其中starttime表示请求的 开始服务时间,arrivaltime表示请求的到达时间;
步骤3,对于带宽型应用,算法根据请求的到达时间、平均请求大小和带宽服务质量目标计算开始服务时间,具体公式如下:
Figure DEST_PATH_IMAGE015
,其中starttime表示请求的开始 服务时间,arrivaltime表示请求的到达时间;
步骤4,根据应用进程的序号轮流将应用的请求放到不同的队列中。一个应用的所有请求集中存放到一个队列中。所有队列轮流完,队列再重头开始选择;
步骤5,根据每个队列中所有应用的服务质量目标总和,为每个队列计算一个权值。并根据权值大小决定每个队列的服务时间间隔。权值越大,服务时间间隔越小,从而可以获得更高的服务质量;
步骤6,每个队列启动一个工作线程。所有请求在队列中按照开始服务时间排序,工作线程每隔一小段时间挑选开始时间最小的请求输出到缓存管理模块。如果前后请求属于同一个应用,并且存储地址连续,那么就将这些请求一并取出,避免打散原先的顺序请求。
所述基于反馈的缓存分区管理模块的主要流程如图3所示。基于反馈的缓存管理模块将缓存分成多个逻辑分区,每个应用对应一个逻辑分区。该模块将运行时间分成多个时间周期,并且根据负载特征变化和服务质量保证目标周期性地调整缓存分配,从而实现保证更多应用的服务质量。具体步骤如下:
步骤1,将运行时间划分成多个周期性时间。并且,观察当前时间的上一个周期应 用获得的性能
Figure 476660DEST_PATH_IMAGE016
,然后计算当前性能
Figure 266762DEST_PATH_IMAGE016
与服务质量目标
Figure DEST_PATH_IMAGE017
之间的性能差 值ΔP,具体计算方式如公式
Figure 598255DEST_PATH_IMAGE018
所示,P表示带宽或者延迟;
步骤2,根据性能差值的计算结果决定各个分区的缓存调整方向。对于ΔP>0的分区,意味着该应用分配的缓存足够保证其服务质量目标,称这些分区为提供分区;对于ΔP<0的分区,意味着该应用当前分配的缓存不足以保证其服务质量目标,需要再下一个周期增加其缓存,称这些分区为接收分区。本发明采用性能优先或者服务质量优先的分配策略;
步骤3,当所有提供分区的富余缓存空间大于所有接收分区的缓存需求时,本发明采用性能优先的缓存分配策略。在该策略中更注重整体缓存效益最大化。本发明首先将所有提供分区的缓存块按照收益从低到高排列,收益最低的缓存块将会优先分配给接收分区。接着,继续将收益次低的缓存块分配给接收分区,依次进行,直到满足所有的接收分区的需求为止。在这种策略中,提供分区中效益较高的缓存块会得到保留,从而优化整体缓存效率;
步骤4,当所有提供分区的富余缓存空间不足以满足所有接收分区的缓存需求时,本发明采用服务质量优先的缓存分配策略。在该策略中更注重尽可能地满足更多应用的服务质量目标。本发明将所有接收分区按照缓存需求从少到多排序,需求最少的接收分区将优先被分配缓存,接着,需要次少的接收分区会被分配缓存。依次进行,直到提供分区所有的富余缓存分配完为止。
所述缓存块分配管理模块主要流程如图4所示。在缓存分配时,如果以块为单位分配缓存将会造成较大的开销以及频繁的操作。本发明在缓存分区的基础上进一步将缓存划分成多个缓存段,逻辑分区之间的缓存分配以缓存段为单位进行。每个缓存段都有固定数量的缓存块。和单个缓存块相比,以缓存段为缓存分配单位可以显著减少缓存块在逻辑分区之间的移动频率。缓存块的频繁移动不仅增加额外的开销,而且还使得这些缓存块在内存中的驻留时间会被分层多个碎片,造成缓存利用率降低。对于不同的缓存分区可以采用不同的缓存淘汰策略。本发明以下用最近缓存替换策略为例,描述缓存块的具体分配过程:
步骤1,当一个请求发生缓存缺失时,首先判断应用对应的逻辑分区的缓存大小是否等于预期的缓存空间,即在上一个周期根据其服务质量目标计算得到的逻辑分区大小;
步骤2,如果该逻辑分区已经达到预期的缓存空间,那么将使用最近缓存替换策略选择该逻辑分区中的一个缓存块淘汰掉,用于新请求的缓存;
步骤3,如果还没有达到预期的缓存空间,那么将选择一个提供分区作为淘汰分区,并使用最近缓存替换策略选择该逻辑分区中的一个缓存块淘汰掉,并重新分配给新请求所在的逻辑分区;
步骤4,另外,对于某些应用来说,当其缓存大小超过一定程度之后,再增加其缓存大小而获得的性能收益将非常有限。为避免这种情况发生,还需要平衡整体性能和服务质量保证。本发明采用缓存命中次数来表示缓存增减造成的性能变化。本发明记录每个周期缓存段的命中次数,在缓存分配时,只有在接收分区的末尾缓存段的当前缓存命中次数超过指定的阈值之后,才能执行分配。从而避免效益过低的缓存分配。
所述缓存淘汰策略监控模块主要流程如图5所示。在现实中,不同应用的请求的数据量、峰值、访问特征等都存在不同,导致不同应用的负载特征存在较大差异。如果使用同一种缓存淘汰算法无法覆盖所有应用的负载特征,会导致某些应用的热点数据被过早淘汰出缓存,从而影响整体性能。本发明基于之前的缓存逻辑分区,为不同分区设置不同的缓存淘汰策略,并监控逻辑分区的缓存收益,为应用选择适合其负载特征的缓存淘汰算法。简单来说,本发明周期性地监控每个分区的缓存淘汰算法的效益,一旦发现当前缓存淘汰策略效益低,就会切换到另一种更合适的缓存淘汰算法,具体步骤如下:
步骤1,在每个周期,记录逻辑分区当前的分配缓存大小,以及其应用的服为质量保证情况;
步骤2,在每个周期调整缓存分配时,如果该逻辑分区的缓存大小超过平均值,并且服为质量没有满足应用设定的目标值。如果满足服务质量目标,则结束,等下一个周期结束时再判断。否则,启动缓存淘汰策略效率监控;
步骤3,从逻辑分区中划出10%的缓存空间,至少一个缓存段,独立管理,并且这部分缓存使用另一种缓存淘汰算法。根据其和逻辑分区的缓存空间大小比例设置采样系数δ,在下一个周期采样一部分请求放入该独立缓存,并用新的缓存淘汰算法管理。另外,为保证数据的一致性,被采样的请求在原来的逻辑分区中有一个对应的占位符;
步骤4,在当前周期结束的时候,记住当前缓存淘汰算法的效益,并且比较逻辑分区和独立缓存之间的效益。如果独立缓存的效益更高,则将逻辑分区的缓存淘汰策略切换为新的缓存淘汰算法,独立缓存回收到逻辑分区末尾,并结束监控。否则,继续选择新的缓存淘汰算法,继续步骤3。
所述缓存压缩监控模块主要流程如图6所示。有些应用的热点数据范围可能比较小,并且对缓存淘汰策略不敏感。从命中率的角度看,只有队头部分的缓存命中率较高,而队尾部分的缓存命中率普遍较低。相反,这一类应用的缓存命中率受内存存储空间影响较大。因为对这类应用来说,除少部分热点数据外,其他应用请求的缓存命中率相差不大。所以,存储的数据量越多,这类应用的命中率也越高。在内存存储空间保持不变的前提下,使用压缩技术是提高存储空间的有效方法。该模块通过检查逻辑分区的缓存命中分布,识别出这类缓存局部性较低的应用,并使用压缩方法扩大其存储空间,从而提高整体缓存效率。具体步骤如下:
步骤1,在当前周期内,记录当前逻辑分区每个缓存段的命中次数分布情况;
步骤2,在每个周期结束的时候,判断当前逻辑分区的缓存命中次数是否存在长尾情况。长尾情况是指连续多个周期末尾的多个缓存段,默认值是至少20%的缓存段数量,在当前周期的命中次数低于阈值,默认值是5次。
步骤3,一旦出现长尾情况,则启动逻辑分区压缩流程。将命中次数低于阈值的逻辑分区中的数据进行压缩存储,以扩大缓存的有效存储空间,提高整体缓存效益,默认的压缩策略为snappy算法。
步骤4,比较请求数据压缩前后的大小,如果压缩后的请求大小大于压缩前的请求大小,则放弃此次压缩。如果该逻辑分区联系多次,默认值是15,都超过压缩前的请求大小,则停止该逻辑分区的压缩。
步骤5,继续监控逻辑分区的命中次数分布情况。如果命中次数继续降低,则适当增加需要压缩存储的缓存段。反之,如果命中次数增加,则减少需要压缩存储的缓存段。
以上所述,仅为本发明的优选实施案例,并非对本发明做任何形式上的限制。虽然前文对本发明的实施过程进行了详细说明,对于熟悉本领域的人员来说,其依然可以对前述各实例记载的技术方案进行修改,或者对其中部分技术特征进行同等替换。凡在本发明精神和原则之内所做修改、同等替换等,均应包含在本发明的保护范围之内。

Claims (3)

1.一种基于反馈和公平队列的服务质量感知的缓存调度方法,其特征在于,
采用服务质量衡量策略将不同类似的应用的服务质量指标化,具体包括:
步骤101,根据用户指定应用类型或者根据其负载特征推测出具体的应用类型,用不同的服务质量计算方法计算其服务目标值,如果是低延迟应用,则进入步骤102,如果是高带宽应用,则进入步骤104;
步骤102,低延迟应用的数据请求的访问延迟由等待时间和服务时间两个部分组成,采用经典的M/G/1模型对数据请求的等待队列进行建模,将数据请求的平均服务时间设置为T u ,则一个数据请求的平均等待时间表示为:
Figure 817268DEST_PATH_IMAGE001
,其中λ为请求到达率,E表示平均值;
步骤103,再加上请求的平均服务时间,保证该应用的延迟服务质量目标必须满足公式
Figure 924901DEST_PATH_IMAGE002
步骤104,带宽型应用的性能受缓存命中率的影响,一个数据请求的平均服务时间Tu用 公式
Figure 54531DEST_PATH_IMAGE003
表示,其中h为缓存命中率,Tcache是缓存命中时 的服务时间,Tdisk是缓存没有命中需要访问磁盘的服务时间;
步骤105,再根据请求大小Rlen,获得保证应用的带宽服务质量目标必须满足公式
Figure 462379DEST_PATH_IMAGE004
使用开始时间公平列队设置不同的开始服务时间来控制不同应用请求的服务顺序,具体包括:
步骤201,对每个到达缓存的请求计算开始服务时间,并将该开始服务时间作为其服务顺序,请求根据开始服务时间从短到长的排列被放置到队列的前面位置,并且优先服务;
步骤202,对于延迟型应用,根据请求的到达时间和延迟服务质量目标计算其开始服务时间,具体公式如下:
Figure 753683DEST_PATH_IMAGE005
,其中starttime表示请求的开始服务时间, arrivaltime表示请求的到达时间;
步骤203,对于带宽型应用,根据请求的到达时间、平均请求大小和带宽服务质量目标计算开始服务时间,具体公式如下:
Figure 879771DEST_PATH_IMAGE006
,其中starttime表示请求的开始服 务时间,arrivaltime表示请求的到达时间;
步骤204,根据应用进程的序号轮流将应用的请求放到不同的队列中,一个应用的所有请求集中存放到一个队列中,所有队列轮流完,队列再重头开始选择;
步骤205,根据每个队列中所有应用的服务质量目标总和,为每个队列计算一个权值,并根据权值大小决定每个队列的服务时间间隔,权值越大,服务时间间隔越小;
步骤206,每个队列启动一个工作线程,所有请求在队列中按照开始服务时间排序,工作线程每隔一小段时间挑选开始时间最小的请求输出到缓存管理模块,如果前后请求属于同一个应用,并且存储地址连续,则将所述请求一并取出;
利用基于反馈的缓存分区管理模块将所有逻辑分区划分为两种类型:提供分区和接收分区,并且调整两种类型逻辑分区之间的缓存分配;
通过缓存块分配管理模块平衡整体性能和保证服务质量,具体包括:
步骤301,当一个请求发生缓存缺失时,首先判断应用对应的逻辑分区的缓存大小是否等于预期的缓存空间,即在上一个周期根据其服务质量目标计算得到的逻辑分区大小;
步骤302,如果该逻辑分区已经达到预期的缓存空间,那么将使用最近缓存替换策略选择该逻辑分区中的一个缓存块淘汰掉,用于新请求的缓存;
步骤303,如果没有达到预期的缓存空间,则选择一个提供分区作为淘汰分区,并使用最近缓存替换策略选择该逻辑分区中的一个缓存块淘汰掉,并重新分配给新请求所在的逻辑分区;
步骤304,采用缓存命中次数来表示缓存增减造成的性能变化,记录每个周期缓存段的命中次数,在缓存分配时,只有在接收分区的末尾缓存段的当前缓存命中次数超过指定的阈值之后,才能执行分配;
以及缓存淘汰策略监控模块监控每个逻辑分区的当前缓存淘汰策略效率,并根据应用的负载特征变化进行动态调整,具体包括:
步骤401,在每个周期,记录逻辑分区当前的分配缓存大小,以及其应用的服务质量保证情况;
步骤402,在每个周期调整缓存分配时,如果该逻辑分区的缓存大小超过平均值,并且服务质量没有满足应用设定的目标值,则启动缓存淘汰策略效率监控,如果满足服务质量目标,则结束,等下一个周期结束时再判断;
步骤403,从逻辑分区中划出10%的缓存空间即至少一个缓存段来独立管理,并且从逻辑分区中划出10%的缓存空间使用另一种缓存淘汰算法,根据其和逻辑分区的缓存空间大小比例设置采样系数δ,在下一个周期,采样一部分请求放入从逻辑分区中划出10%的缓存空间,并用新的缓存淘汰算法管理,被采样的请求在原来的逻辑分区中有一个对应的占位符;
步骤404,在当前周期结束的时候,记住当前缓存淘汰算法的效益,并且比较逻辑分区和独立缓存之间的效益,如果独立缓存的效益更高,则将逻辑分区的缓存淘汰策略切换为新的缓存淘汰算法,独立缓存回收到逻辑分区末尾,并结束监控,否则,继续选择新的缓存淘汰算法,继续步骤403;
使用缓存压缩监控模块捕获局部性较差的应用,即存在缓存命中率长尾现象的应用。
2.如权利要求1所述的一种基于反馈和公平队列的服务质量感知的缓存调度方法,其特征在于,所述基于反馈的缓存分区管理模块,工作流程具体包括以下步骤:
步骤501,将运行时间划分成多个周期性时间,并且观察当前时间的上一个周期应用获 得的性能
Figure 376873DEST_PATH_IMAGE007
,然后计算当前性能
Figure 514594DEST_PATH_IMAGE007
与服务质量目标
Figure 367012DEST_PATH_IMAGE008
之间的性能差值 ΔP,具体计算方式如公式
Figure 324604DEST_PATH_IMAGE009
所示,P表示带宽或者延迟;
步骤502,根据性能差值的计算结果决定各个分区的缓存调整方向,对于ΔP>0的分区,表示该应用分配的缓存能够保证其服务质量目标,称该分区为提供分区;对于ΔP<0的分区,表示该应用当前分配的缓存不能够保证其服务质量目标,需要再下一个周期增加其缓存,称该分区为接收分区;
步骤503,当所有提供分区的富余缓存空间大于所有接收分区的缓存需求时,采用性能优先的缓存分配策略,首先将所有提供分区的缓存块按照收益从低到高排列,收益最低的缓存块将会优先分配给接收分区,接着,继续将收益次低的缓存块分配给接收分区,依次进行,直到满足所有的接收分区的需求为止,其中该策略中,提供分区中效益较高的缓存块会得到保留;
步骤504,当所有提供分区的富余缓存空间不足以满足所有接收分区的缓存需求时,采用服务质量优先的缓存分配策略,将所有接收分区按照缓存需求从少到多排序,需求最少的接收分区将优先被分配缓存,接着,需要次少的接收分区会被分配缓存,依次进行,直到提供分区所有的富余缓存分配完为止。
3.如权利要求1所述的一种基于反馈和公平队列的服务质量感知的缓存调度方法,其特征在于,所述缓存压缩监控模块,工作流程具体包括以下步骤:
步骤601,在当前周期内,记录当前逻辑分区每个缓存段的命中次数分布情况;
步骤602,在每个周期结束的时候,判断当前逻辑分区的缓存命中次数是否存在长尾情况,所述长尾情况是指连续多个周期末尾的多个缓存段,默认值是至少20%的缓存段数量,在当前周期的命中次数低于阈值;
步骤603,一旦出现长尾情况,则启动逻辑分区压缩流程,将命中次数低于阈值的逻辑分区中的数据通过snappy算法进行压缩存储;
步骤604,比较请求数据压缩前后的大小,如果压缩后的请求大小大于压缩前的请求大小,则放弃此次压缩,如果该逻辑分区联系多次,均超过压缩前的请求大小,则停止该逻辑分区的压缩;
步骤605,继续监控逻辑分区的命中次数分布情况,如果命中次数继续降低,则增加需要压缩存储的缓存段,反之,如果命中次数增加,则减少需要压缩存储的缓存段。
CN202111412833.5A 2021-11-25 2021-11-25 一种基于反馈和公平队列的服务质量感知的缓存调度方法 Active CN113835868B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111412833.5A CN113835868B (zh) 2021-11-25 2021-11-25 一种基于反馈和公平队列的服务质量感知的缓存调度方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111412833.5A CN113835868B (zh) 2021-11-25 2021-11-25 一种基于反馈和公平队列的服务质量感知的缓存调度方法

Publications (2)

Publication Number Publication Date
CN113835868A CN113835868A (zh) 2021-12-24
CN113835868B true CN113835868B (zh) 2022-04-15

Family

ID=78971422

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111412833.5A Active CN113835868B (zh) 2021-11-25 2021-11-25 一种基于反馈和公平队列的服务质量感知的缓存调度方法

Country Status (1)

Country Link
CN (1) CN113835868B (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110493145A (zh) * 2019-08-01 2019-11-22 新华三大数据技术有限公司 一种缓存方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102244685B (zh) * 2011-08-11 2013-09-18 中国科学院软件研究所 一种支持负载均衡的分布式缓存动态伸缩方法及系统
CN106325776A (zh) * 2016-08-24 2017-01-11 浪潮(北京)电子信息产业有限公司 一种缓存淘汰策略的实时调整方法及装置
US10552330B2 (en) * 2017-12-07 2020-02-04 International Business Machines Corporation Wait classified cache writes in a data storage system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110493145A (zh) * 2019-08-01 2019-11-22 新华三大数据技术有限公司 一种缓存方法及装置

Also Published As

Publication number Publication date
CN113835868A (zh) 2021-12-24

Similar Documents

Publication Publication Date Title
US9600337B2 (en) Congestion avoidance in network storage device using dynamic weights
US10387202B2 (en) Quality of service implementation in a networked storage system with hierarchical schedulers
CN110134514B (zh) 基于异构内存的可扩展内存对象存储系统
US10534542B2 (en) Dynamic core allocation for consistent performance in a non-preemptive scheduling environment
US8285961B2 (en) Dynamic performance virtualization for disk access
JP5041805B2 (ja) データストレージシステムのサービス品質コントローラ及びサービス品質方法
JP3933027B2 (ja) ディスクアレイ装置におけるキャッシュメモリ分割管理方式
US9354989B1 (en) Region based admission/eviction control in hybrid aggregates
US20030236961A1 (en) Systems and methods for management of memory in information delivery environments
CN109962969B (zh) 用于云计算存储系统的自适应缓存负载均衡的方法和装置
CN103327072B (zh) 一种集群负载均衡的方法及其系统
US20020056025A1 (en) Systems and methods for management of memory
CN104424106B (zh) 为存储优化操作分配存储设备的资源的方法和系统
EP3089039B1 (en) Cache management method and device
US8966493B1 (en) Managing execution of multiple requests in a job using overall deadline for the job
US7817562B1 (en) Methods and systems for back end characterization using I/O sampling
US20170060472A1 (en) Transparent hybrid data storage
US20120290789A1 (en) Preferentially accelerating applications in a multi-tenant storage system via utility driven data caching
CN115718644A (zh) 一种面向云数据中心的计算任务跨区迁移方法及系统
CN114500529A (zh) 一种基于可感知冗余的云边协同缓存方法及系统
US6631446B1 (en) Self-tuning buffer management
CN113835868B (zh) 一种基于反馈和公平队列的服务质量感知的缓存调度方法
CN105393518B (zh) 分布式缓存控制方法及装置
CN109144664B (zh) 一种基于用户服务质量需求差异的虚拟机动态迁移方法
CN112286840B (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