另一种加强性能的技术是标记命令排队。简言之,标记命令排队即设备可以接受从主机I / O 控制器传来的多个命令,并组织这些命令,使该磁盘驱动器的操作效率达到最高。通过给每个特定的请求标记一个序号,主机控制器和设备可以跟踪这个I / O请求,
迄今,缓存主要用于提高单台主机的性能。然而,像网络上的其他资源一样,缓存也可以作为一个独立的实体,由几个系统和子系统共享。总有一天缓存内存的共享和管理将是非常有价值的功能。目前某些专门的缓存厂商已经生产出这类产品,提供多端口、多主机、多目标缓存的能力,如Imperial Te c h n o l o g y 公司。
本月关注度指数为123.0,相比2月份有较明显的提升。随着春节过后企业业务逐步步入正轨,预计4月份相比三月份关注度指数还会有小幅度上扬。
L R U在主机I / O控制器中也能很好地工作,正像在存储子系统中一样。主机I / O控制器的缓存比子系统中的缓存更快,但不如主机内存缓存速度快。像L R U其他的实现方案一样,将数据装入缓存所花费的额外开销很少
历史上,关于实现缓存的研究和开发有很多,但大多数是在主机I / O控制器上进行的,它可能比其他各种类型实现的总和还要多。这个结果来源于系统和子系统的主要生产公司,如D E C、I B M、惠普和S T K等,这么多年来,这些公司开发出大量的主机控制器,它们既与主机操作系统实现密不可分,也与子系统的实现密不可分。
L R U缓存可以成功地在设备/子系统中实现,但这种L R U缓存的实现并没有内在的优势。事实上,当在主机内存中实现L R U缓存时,其性能可能会更好。然而,L R U放在子系统中也没有任何错,且可以获得很大的性能改善。如前所述,假如服务器的C P U使用率已经很高(超过7 5 %),或没有适当的内存来建立缓存,那么,在存储子系统中实现缓存则更有意
实现磁盘缓存的另一个常见的位置是磁盘子系统。正像在主机系统中实现一样,它也需要在存储子系统中安装额外的内存。然而,与一般的内存相比,这个额外的内存往往相当地昂贵。图5 - 1 8显示了设备/子系统中的缓存实现。
当应用请求数据时,数据传入L R U缓存。为处理而恢复的数据也由缓存数据装入器拷贝到缓存存储。在传输数据并将其装入主机内存的过程中,L R U很少影响系统的性能。从这个意义上说,在主机内存中实现L R U缓存是极端有效的。
磁盘缓存可能处于I / O路径的不同位置。我们将探讨最常见的一些位置,分析它们对主机系统的影响,以及对存储总线或网络传输能力的影响。
回写缓存有时也称为后写缓存,是为了性能缘故而实现的优化。它的基本思路是:为了给应用提供更快的响应,后写缓存首先将几个I / O写操作集中起来,然后一次性地把它们写入非易失存储器,而不是产生一个写请求就执行一个写操作
下面考虑使用L R U的示例,并假定某个应用正在更新数据。由于在缓存中可能存储了过时数据。这里过时数据是指被存储的数据,但不表示最新的版本。当应用修改数据时,过时的数据也必须要修改,无论它存放在哪里—在磁盘上,或者在磁盘和缓存内存里。图5 - 1 3显示了两种情况:第一种情况是数据仅存放在磁盘上;第二种情况是数据既存放在磁盘上,也
预先读缓存大多用于顺序I / O模式的应用,如文件服务、备份及数据仓库等。对于像图形处理这样的应用,预读缓存可以提供非常有益的性能优势。一般地说,哪里存在顺序访问的大文件,哪里就需要预读缓存技术。
预先读缓存的基本思想是:已经读入的数据将不再需要,而依次需要的是即将读入的几个数据块。换言之,预先读缓存根据过去从磁盘读入数据的情况,推测下一步将需要的数据。预先读的关键概念是预取。预取是在数据被请求之前就将它从非易失存储中读出,并把它放在易失的缓存内存中。
在应用连续地访问和修改同样数据的情况下,L R U缓存能够带来最大的利益。事务处理系统就是这种应用的一个例子。L U R缓存可以为许多E R P(企业资源规划)应用和工具提供性能优势。同时,L R U还能够为使操作处理频繁和多用户关系数据库应用提供性能优势。图5 - 1 0表示使用L R U缓存的通用的、多用户关系数据库系统。
磁盘缓存建立在几种不同的算法上,这些算法取决于I / O操作是读还是写。缓存的实现不像在气体容器中倒入一瓶辛烷助推器,而获得辅助加速。事实上,磁盘缓存并不是使设备的运行速度更快,而是尽量缩短I / O路径的距离,尽可能地用内存的性能代替设备的性能。
缓存”和“内存”有时可以互换使用。然而,磁带驱动器中的内存通常并不是缓存,而是缓冲。虽然它们的物理组成是一样的,但缓冲只起临时存储数据的作用,由此数据从一个位置或设备传到另一个位置或设备。一般地,缓冲是在生命期较短的进程控制下工作,一旦数据传输完毕,这些进程将立即释放内存地址。一种常见类型的缓冲是F I F O缓冲,即一种先
当I / O操作开始从磁盘缓存而不是从非易失存储中检索数据时,(如磁盘设备或子系统)缓存命中发生。除了提供来自内存的快速响应之外,缓存命中还缩短了I / O路径的距离。如图5 - 3所示。