存储 频道

缓存的更多讨论-磁盘缓存的算法(3)

 
3) 预先读缓存

      
预先读缓存的基本思想是:已经读入的数据将不再需要,而依次需要的是即将读入的几个数据块。换言之,预先读缓存根据过去从磁盘读入数据的情况,推测下一步将需要的数据。预先读的关键概念是预取。预取是在数据被请求之前就将它从非易失存储中读出,并把它放在易失的缓存内存中。然而,L R U仅缓存已经被请求的或写的数据,由此可以看出,预先读缓存与L R U缓存之间存在很大的差别。图5 - 11 显示了预先读的过程。
 
如果数据已经老化,或在近期内没有别的用处,它就从预先读缓存中丢弃。虽然这样做乍看起来似乎有点奇怪,却经常很好地用于预先读的应用。预先读缓存的目的是把大量的数据移到更靠近C P U的地方,并在此一并处理这些数据。这些类型的应用将数据总量作为一个整体处理,因而,在处理过程中不必改变个别数据块,也就没有必要在缓存中保留读数据块。
 
预先读的实现初看起来似乎很平常,但事实上,并不像想像的那样简单,它面临着几个困难的挑战。缓存总是与块数据传输打交道,对于磁盘文件或数据库系统组织是不可见的。由于文件被散布在整个磁盘各个地方,而预先读缓存却总是读出连续的数据块,所以经常错误地读出一些不需要的数据。
 
    综上所述,为了预先读缓存工作得更好,可以使用某些进程移动或重新分布磁盘数据,当然这种做法也可能产生问题。磁盘整理程序就是这样的例子,因为它总是力图把数据存放在一些更少、更连续的大块区域中,所以它能够提高预先读缓存性能。此外,对于存储子系统,重新配置更大的存储块也是有益的。
 
重新组织目录结构通常会增加该卷中的磁盘碎片数量,这是由于将一些目录结构拷贝到同一存储卷中的新位置的结果。同时,建立和删除大量文件也会给所在卷增添磁盘碎片。卷中的碎片越多,读缓存的性能就越差。
0
相关文章