《电子技术应用》
您所在的位置:首页 > 通信与网络 > 设计应用 > 多用户存储中自适应动态预取策略
多用户存储中自适应动态预取策略
来源:电子技术应用2013年第1期
唐丽梅, 邢素霞, 陈天华
北京工商大学 计算机与信息工程学院, 北京100048
摘要: 通过分析多用户数据请求规律以及实时分解随机请求序列来获取顺序请求序列。基于对多用户顺序请求进行命令预分解和命中率统计,实现读预取长度自我学习。分析多用户预取率及系统负载与预取失效代价之间的关系,对常规自适应Cache策略进行优化,选择合适预取阈值等参数。与常规自适应预取策略相比,动态调整Cache策略的预取命中率提高了30%。有效解决了多用户访问共享存储系统的预取失效率高问题。
中图分类号: TP393
文献标识码:
文章编号: 0258-7998(2013)01-0128-04
An adaptive dynamic prefetch strategy in multi-user storage
Tang Limei, Xing Suxia, Chen Tianhua
Computer and Information Department, Beijing Technology and Business University, Beijing 100048, China
Abstract: Dynamic Cache prefetch algorithm is put forward in this paper. Through analysis of the multi-user data request rule, introduction of a dynamic adjustment Cache mechanism. Based on decomposition of multiple users request command,and recording the hit rate statistics by real-time, so to realize multi-user access length self-learning in the shared storage system. After analyzing the simulation results, selecting the appropriate dynamic parameters has improved the prefetch hit rate performance 30% higher than the constant adaptive algorithm.
Key words : Cache; multi-user requests; cost function; prefetch threshold

    预取Cache技术是解决Cache失效开销的关键技术。由于多用户产生的海量数据访问往往耗时巨大,因此有必要根据多用户存储请求结构设计特定的Cache预取优化机制。通常采用的优化策略可以分为两类:

    (1)二级Cache结构预取[1]。该策略根据Cache结构设计,通过减小Cache访问的延迟,提高二级Cache命中率[2];适应面广,可以应用在储存优化系统中, 但是对于多用户海量随机访问,预取效率很难有所提高。
    (2)自适应预取策略[3]。该策略考虑了预取的盲目性问题,通过调整预取长度提高预取效率。但是自适应预取只是在连续数据请求的情况下有效,在用户请求地址完全不连续的情况下,预取数据基本失效。由于自适应预取算法将多用户数据请求当成随机数据请求,基本上不预取数据,因此预取性能受到限制。
     通过构建一个智能动态预取策略的优化系统对多用户访问服务系统进行优化。其中预取的数据是优化系统能否发挥作用的一个重要因素。因此选择动态调整Cache大小和调整预取长度相结合的方式。实现了多用户数据存储设备通过网络为所有工作站的共享。
1 相关工作
    参考文献[1]通过分析Cache失效行为特性,设计了一种步长自适应的二级Cache预取机制,该预取机制动态调整预测访存模式及预测量。文中所选算法基于自适应算法,该算法仅对用户数据保存在某一磁盘的连续地址有效,对多用户访问的非连续地址访问对象预取失效。虽然多用户的数据请求之间的逻辑存储地址信息是不连续的,但对于每个用户的数据请求的逻辑存储地址的分布是连续的,可以把这种数据请求当作不完全的随机请求,而且是有一定跨度的有规律请求,因此可以通过分解多用户数据来获得若干个顺序数据请求。再利用自适应方式调整Cache,从而产生本文的多用户Cache自适应动态预取算法。
    引入Cache结构之后, CPU的访存时间由Cache命中时间、 Cache失效率[4]、 Cache失效开销这三个因素共同决定,其决定关系如下:
    Cache访存时间=Cache命中时间+Cache失效率×Cache失效开销
    本文的主要设计工作包括:
    (1)分析多用户请求信息特性,设计一种识别不同用户数据、调度相应Cache的预取机制。
    (2)分析多用户请求的Cache失效开销,调整阈值参数,实时统计命中率。通过分析多用户请求系统Cache开销函数,选择合适的Cache结构参数,最大可能地提高Cache性能[5]。
2 多用户Cache自适应动态预取机制
2.1识别多用户数据请求

    多用户通过网络服务器系统对存放在磁盘阵列中的数据发出请求,此时的数据请求序列特点是有规律的随机数据请求,每个用户的数据请求逻辑存储地址的分布是连续的[3]。针对多用户,引入每个用户的唯一标识ID,由此产生分布式访问各磁盘组的请求序列。磁盘阵列控制器在接收到主机发送过来的、包含逻辑地址数据信息的多个用户读请求命令后,将该命令进行预命令分解,并生成各物理盘的磁盘读请求子命令。子命令信息包括逻辑首地址、数据长度、用户ID号及访问次数。只要将请求的逻辑首地址和数据长度与Cache组中记录的值相比较,就可以快速查找出当前请求的数据是否在Cache组中。多用户访问预取的整个流程如图1所示。
2.2 工作流程
     磁盘阵列包括N个磁盘Cache组,每个磁盘Cache组中有M个Cache区。Cache区数目则是根据磁盘阵列接收顺序请求的数目和预取阈值H确定。本算法将每个顺序请求定位调度给Cache组中相应的Cache区间。图2中A、B、C缓存区间分别代表调度给A、B、C三个用户的请求序列的Cache区间,这三个顺序请求序列交错组成一个磁盘组随机请求序列。
   在多用户查询Cache组过程中, 无论是否命中Cache区间, 都要对Cache进行更新。Cache区间的具体更新过程如下:
    (1)若命中预取区间,则将命中项计数器Count值加1。然后将新命中数据块放入Cache区地址单元的头部。
    (2)若没有命中Cache组中的任何一个有效项,则所有有效项的Count计数值减1, 同时在预取Cache组中分配一个新区间,并将该区间的Count值置1。在Cache组内淘汰Count值最小的Cache数据块。
    动态Cache预取算法用来以优化自适应算法的另一措施是通过预取命中率实时统计来调整预取长度参数。通过设置一个窗口函数[5],在窗口滑动之前,Cache命中次数为H,统计出滑动到某一位置时Cache命中次数Hs。这样就可以得到Cache命中率p=H/Hs。下面定义命中率的函数f(p)。设当前窗口长度为Dcur,滑动后的长度


2.3 算法分析
  多用户系统存在多个用户共享一台服务器的情况。多用户访问采取M/ G/ 1排队模型[6],两个参数为λ1和λ2的poisson流请求同时进入服务器处理系统。用户向共享服务器发出请求命令,服务器空闲时用户能够得到立即服务,否则排队等待。
    多用户访问泊松输入如图3所示。服务器处理两种请求:(1)常规请求,不能直接从本地磁盘上的预读Cache中得到用户请求响应;(2)预取请求,可以由Cache直接响应的请求。所有用户发出的服务器请求具有相同的优先级,它们加入同一个队列等待服务。假设用户请求不调用磁盘数据传输时,则消耗的系统资源非常少,因此当用户请求可从缓存Cache中满足时,此次请求将不会产生系统代价。

   

3 测试及分析
    本文以视频服务器为例对以上算法进行验证。在视频网络服务器系统中模拟5个用户访问1 000个共享数据, 并让用户对服务器进行长时间的访问。记录用户对磁盘阵列中数据不同访问次数下的预取命中率,动态预取算法与自适应[6]预取的命中率对比如图4所示,明显看到动态Cache预取算法具有更好的预取效果。
    使用Iometer测试软件模拟在多用户数据请求条件下,分别测试自适应预取策略和动态预取算法性能。将磁盘阵列上的硬盘分为5个分区,模拟5个吧顺序用户请求,两种算法测试性能对比如表1所示。

    动态Cache预取算法在达到2个用户数时,体现出更大的优越性,此时常规自适应预取算法的I/O传输率下降了60%,而动态Cache预取算法的I/O传输率没有任何下降。但是Cache组Cache区间的个数与多用户请求序列数必须同比增加,否则算法的性能下降很大。原因是当顺序请求序列数大于磁盘Cache组的Cache区间数时,导致Cache命中率下降。因此通过相应加大磁盘Cache组中Cache区间的数目来实现高效的磁盘预取性能。
    在单和多用户系统中,固定式aIO/aT,系统容量越大,预取阈值就越高。然而,仅在多用户系统中的预取阈值受系统负载f的影响。通过分析3个重要函数:代价函数C、预取率λ2的最佳值及预取阈值H,达到动态调整系统缓存负载f来获得最小的预取阈值H,识别并分解多用户个人信息,动态调度Cache区间,减小Cache负载,从而得到最高预取命中率,解决了多用户访问共享服务系统中预取失效率高的问题。
参考文献
[1] 靳强, 郭阳, 鲁建壮. 一种步长自适应二级Cache预取机制[J].计算机工程与应用,2011,47(29):56-59.
[2] 徐炜遐, 李琼, 蒋艳凰. 一种自适应负载的I/O调度算法[J].计算机工程与科学,2009,31(11):1-29.
[3] 张敏.一种基于SAS技术的高性能硬件磁盘阵列的设计与实现[D].江西:南昌大学,2007.
[4] 张燕,胡英坚,姜涛. 基于排队网络RAID存储系统的性能评价模型[J].长春工业大学报(自然科学版),2010,1(3):471-475.
[5] 姜国松,谢长生,丁红,等.RAID控制器中I/O调度算法研究[J].小型微型计算机系统,2008,29(4):773-776.
[6] 王培. 网格环境下基于滑动窗口的信任模型研究[D]. 秦皇岛:燕山大学,2010.
[7] ALEXANDER T. Performance,reliability,and perform ability aspects of Hierarchical RAID[C]. Proceedings-6th IEEE International Conference on Networking, Architecture, and Storage, NAS2011.

此内容为AET网站原创,未经授权禁止转载。