《高速缓存技术》PPT课件.ppt
第二章要点,数据存储要解决的两类基本问题:物理错误 逻辑错误两种解决方法:镜像:它不仅提供了冗余,也提供了性能的改善。快照:使近几年发展较快的技术,适合恢复逻辑错误。,第三讲 高速缓存技术,1.高速缓存技术缓存技术是改善I/O性能的一项基本技术。本章讨论的磁盘缓存方法不仅适合传统的存储总线,也适合于新发展的存储网络。只要系统带多个设备,且性能不同,就存在从慢速设备到快速设备不断更换工作地点以改善系统性能的可能性。缓存的基本思想可以简述为:将数据从一个地点拷贝到另一个地点,使之检索起来更快。,访问请求,快速提交,慢速提交,缓存存储,常规存储,1.1 缓存的命中率,如果缓存不理想,命中率不高,导致系统性能下降。缓存命中率=,由缓存完成的I/O请求次数,I/O请求总数,1.2 缓存与缓冲间的差异,对于开放系统,Unix,NT等,通常的命中率不超过50%。大型机系统的命中率可高达90%。,缓冲(buffer)只起临时存放数据的作用,控制算法简单;缓存(cache)与上相反。,3 2 1,1,2,3,图3-1 主机控制器管理的多设备重叠操作,主机I/O控制器,重叠的请求,缓冲内存,存储设备,存储总线,存储设备,缓冲内存,存储设备,设备中的缓冲存储器用于减少访问延迟,以适应主机控制器的性能,缓存内存,缓存总线,缓存控制器,到磁盘系统,I/O,图3-2 带有一个缓冲控制器和缓冲内存的磁盘缓冲,缓存算法既可以在主机软件中实现,也可以在存储子系统或在主机控制器中实现,1.3 磁盘缓存的性能估计,产品演示中客户可看到不到原来时间25%的缓存效果。实际上,很好地配置缓存,运行效率可达到原来的2倍。,2 磁盘缓存的算法,磁盘缓存并不是使设备运行的速度加快,而是缩短了I/O路径的距离,尽可能地用内存的性能代替设备的性能。磁盘缓存算法中,对应读和写的算法差异很大。2.1读算法(常用两种)最近使用(LRU:least recently used)缓存预先读缓存,图3-3 LRU装入数据的过程,缓存内存,在正常I/O操作期间,在读磁盘数据的同时,数据也拷贝到缓存内存,响应,请求,响应,请求,存储设备或子系统,LRU算法的缓存控制器,LRU的基本思想:最近读过的数据不久将再次被读。,图3-4 关系数据库的LRU缓存,缓存内存,数据库存储子系统,数据库服务器,LAN,缓存命中,LRU缓存,缓存未命中数据被读入缓存内存,响应,请求,缓存未命中,请求,响应,LRU缓存控制器,3,5,6,1,2,4,1.发送到缓存内存的缓存命中 3.发送到存储子系统的缓存未 命中5.装入缓存的读缓存未命中,2.从缓存内存到服务器读的缓存命中4.从存储子系统到缓存控制器的读缓 存未命中6.到服务器的读缓存未命中,LRU缓存的应用过程,LRU算法适用的数据范围,ERP和MRP系统Internet电子商务服务器事物处理系统顾客服务和支持系统其他多用户数据库应用,不适用类型:顺序访问的数据,包括数据仓库,多媒体数据等。,预先读缓存,预先读缓存的基本思想:已读入的数据将不在需要,而依次 需要的是即将读入的数据块。,适用范围:文件服务、备份、数据仓库及多媒体等顺序I/O模式的应用。,图3-5 预先读的过程,缓存内存,缓存命中,缓存控制器发出预取请求,将数据写入缓存内存,预读取,I/O请求+响应,缓存未命中,采用预先读算法的缓存控制器,存储设备或子系统,如果数据已经老化,或在近期没有用,就把它从预先读缓存中丢弃,图3-6 文件服务器的预先读缓存,缓存内存,文件存储 子系统,文件服务器,LAN,缓存命中,预先读缓存,缓存装入预取数据,响应,请求,(缓存未命中),请求,响应,LRU缓存控制器,3,5,1,2,4,1.缓存命中 3.缓存未命中5.从存储子系统预读取,2.从缓存的读缓存命中数据4.从存储子系统读缓存未命中数据6.缓存装入预取数据,预取I/O,6,2.2 写数据到缓存设备或子系统,缓存写与缓存读技术有很大的不同,它更侧重数据的安全性,如断电时的保证数据不丢失;一致性等题。,用LRU方法作示例:假定某个应用正在更新存储子系统的数据,由于在缓存中可能存了过时的数据,当应用修改数据时,缓存中的过时数据也必须修改。否则,LRU方法将读到过时数据。,两种基本的写缓存技术:透写缓存:把数据写入缓存后,立即写入非易失存储器(磁盘)回写缓存:为了提供更快的响应,将把缓存中的几个I/O写操作集中起来,然后一次性地把它们写入非易失性存储器。,图 3.7 缓存未命中和缓存命中的写请求,过时数据,缓存内存,写I/O请求,可选的写I/O请求,写I/O请求,过时数据,缓存命中,I/O请求修改过的数据,缓存控制器,缓存未命中,非易失存储,图 3.8 缓存命中时的透写缓存过程,写I/O请求,到缓存内存,写I/O请求,缓存命中,写I/O请求,非易失存储,使用透写算法的缓存控制器,写I/O请求,到缓存内存,写I/O请求,缓存命中,写I/O请求,非易失存储,使用回写算法的缓存控制器,图3.9 缓存命中时的回写缓存过程,注:回写缓存决不能在没有UPS的情况下使用,3 磁盘缓存的位置与优化,主机系统内存设备或子系统主机I/O控制器存储网络中的独立缓存,磁盘缓存可能处于不同I/O路径的位置,对系统产生的影响也不同,一般有以下四种情况:,3.1 在主机内存中实现磁盘缓存用主机内存(或位于系统内存总线的缓存)实现,是访问速度最快的一种方式。缺点:占用CPU时间和主机内存,在主机使用频率超过75%时,不适合选用。,1)主机系统的LRU缓存 在传输数据并将其装入主机内存的过程中,LRU对系统性能影响 很小。在主机内存中实现LRU效率很高。2)主机系统的预先缓存 要消耗更多的CPU周期、存储路径、系统I/O总线和系统存储总线的带宽。3)主机系统中的透写缓存 并可避免数据数据的不一致。4)主机系统中的回写缓存 效率远高于透写,易产生数据不一致。需要UPS支持。,对于随机事物处理,LRU与回写缓存 可能是最优的组合,图3.10 服务器基本缓存,服务器系统,磁盘缓存,桥控制器,主机I/O总线,主机I/O控制器,存储总线/网络,存储设备/子系统,图 3.11 位于内存总线的缓存,文件系统接口,系统环境,文件系统,卷处理器,磁盘缓存,设备接口,到非易失存储的设备驱动程序,缓存进程,系统内存总线,分配给磁盘缓存的系统内存,图 3.12 设备/子系统中的缓存实现,服务器,桥控制器,主机I/O总线,主机I/O控制器,存储总线/网络,存储设备/子系统,磁盘缓存,3.2 在磁盘子系统中实现缓存,特点:主机CPU不受缓存操作影响,适用于主机负荷重的系统。因为每个请求都要通过整个I/O路径,所以它比基于主机的缓存操作要慢。,1)设备/子系统中的LRU缓存效率不如在主机内的缓存系统,但它适用主机负荷重的场合(超过75%),或没有适当内存建缓存。2)设备/子系统中的预先读缓存与在主机内实现不同,它不额外增加主机CPU的负担,及降低竞争主机资源进程的干扰。3)设备/子系统中透写缓存 对I/O吞吐量要求不高,写操作较少的应用时,透写缓存的效果较好。4)设备/子系统中的回写缓存 在存储子系统中最常用的方法。,图3.13 使用位于主机I/O控制器上的缓存控制器实现磁盘缓存,服务器,桥控制器,主机I/O总线,主机I/O控制器,存储总线/网络,存储设备/子系统,磁盘缓存,3.3 在主机I/O控制器中实现磁盘缓存,两种实现方法:主机驱动程序;主机I/O控制器上的缓存控制器。后一种方法可减轻主机负担,为大部分系统所采用。特点介于前两者的综合(4种读写操作)。,图 3.14 存储网络中的缓存,存储网络,存储网络,端口 端口 端口 端口 A B C D,到系统 A,到系统 B,到目标设备/子系统C,到目标设备/子系统D,端口/缓存交叉连线,目标控制器+虚拟化,缓存控制+操作,缓存内存池B,缓存内存池A,4 存储网络中的独立缓存,提供多端口、多主机、多目标缓存的能力,5 配置缓存,确定缓存的大小:一般而言,对于带有缓存的磁盘子系统,合理的缓存应占总 存储量的0.1%。多级缓存:为了使某些类型的数据和应用达到更好的工作状态,可以同时使用多级缓存。例如,同时使用LRU和预先读两种缓存。一般而言,多级缓存应串接在I/O路径上,并行连接方式所产生连贯性问题,仍然是今天存储领域所面临的难题。应将I/O路径上负担最小的缓存组件放在靠近CPU的位置,如LRU缓存。I/O路径上负担最重的缓存组件应放在离存储子系统的地方。,图 3.15 多级磁盘缓存,正常I/O操作期间装入的缓存,I/O请求,缓存控制器1:LRU+回写,缓存控制器2:预先读+透写,非易失存储,缓存内存 1,缓存内存 2,收集并发送到非 易失存储的写,有控制器中的预取执行的缓存装入,立即发送到非易失存储的写,图 3.16 SSD在I/O路径上的位置,服务器,桥控制器,主机I/O总线,主机I/O控制器,存储总线/网络,固态磁盘(SSD),6 固态磁盘(SSD),用半导体存储器代替慢速的机电设备特点:速度快,价格贵。非易失SSD:带后备电池的DRAM,闪存(读操作快,写操作与磁盘差不多)。,图 3.17 带有一个内部磁盘驱动器的SSD,SSD,I/O写入,内存存储,内部磁盘驱动器,镜像控制器,图3.18 标记命令排队的实现,主机I/O控制器,设备/子系统命令队列,目标设备/子系统,7 标记命令排队,图 3.19 使用标记命令排队的排序命令序列,接收的请求队列I/O序列号 块序列,排序,10-8 9-2 8-3 7-6 6-2 5-1 4-7 3-4 2-8 1-1,重排的请求(在排序后)I/O序列号 块序列,10-8 2-8 4-7 7-6 3-4 8-3 9-2 6-2 5-1 1-1,为了最优设备性能而重新排序I/O请求,8 I/O路径与系统性能,平衡CPU与I/O的性能 8.1 分析CPU和I/O性能增益的影响 例,一进程原来的运行时间为10秒钟,其中5秒钟为CPU花费的时间,5秒钟为I/O操作花费的时间。现安装新CPU,其速度是原来的4倍,系统CPU升级后,新CPU花费时间为原来的1/4,1.25秒。新进程时间=改善的CPU性能+I/O性能=1.25+5=6.25 原进程时间/新进程时间=10/6.25=1.6倍 假如,再用磁盘缓存技术使I/O性能提高一倍,即2.5秒 则,系统总性能的改善为:原进程时间/新进程时间=10/3.75=2.7倍 通过例子可以看出提高I/O性能对系统的整体性能影响很大.,8.3 从CPU最大值推测主机I/O总线性能,根据1983年以来的PC发展历史,可以推测系统I/O总线性能的最大值约为CPU吞吐量的5%。随着千兆的64位处理器的出现,可期望系统I/O总线的速度能达到400M/s,但常用的64位PCI总线只有256M/s的速度。1999年10月30日新发布的InfiniBand规范的双向I/O传输速度达到500M/s。,8.4 配置系统使I/O性能最优,8.2 I/O性能与CPU速度的关联,表 CPU最大的吞吐量,时钟速度(MHz)数据宽度 理论吞吐量 8MHz 8位 8MB/s 16MHz 16位 16MB/s 33MHz 32位 132MB/s 120MHz 32位 480MB/s 200MHz 64位 1.6GB/s 400MHz 64位 3.2GB/s,表 作为CPU吞吐量的函数估计的主机I/O总线性能,时钟速度 数据宽度 估计的I/O性能 8MHz 8位 0.4MB/s 16MHz 16位 1.5MB/s 33MHz 32位 6.5MB/s 120MHz 32位 24MB/s 200MHz 64位 80MB/s 400MHz 64位 160MB/s,图 3.20 桥控制器芯片连接的主机I/O总线,桥控制器1,CPU,内存,内存缓存,系统内存总线,桥控制器2,主机I/O控制器,主机I/O控制器,主机I/O控制器,主机I/O控制器,主机I/O控制器(扩展的),主机I/O总线,磁盘缓存的结构分类与工作原理 主机软件控制 存储子系统 主机I/O控制器对缓存的几种基本读写算法与特点 LRU缓存算法 预先读缓存算法 透写缓存算法 回写缓存算法结构与算法的综合,小 结,