磁盘缓存专题之一 缓存命中和缓存未命中&缓存与缓冲间的差异

不论什么时候,只要系统带有多个设备,而这些设备的性能又各不相同,就存在从慢速设备到快速设备不断更换工作地点以改善系统性能的可能性,这就是缓存的基本思想。即数据从一个地点拷贝到另一个地点,使之检索起来更快。虽然这是一个简单概念,但却包含着许多奇思妙想。

简单地说,为满足某种预期的未来需要所做的准备即缓存。缓存是一种人类的本性,为了保证充分的物品供应量,需要预先进行计划,然后选择一个能够提供最快服务的地方,存放它们,这就是所谓的可靠物资管理。它也是计算机系统的核心概念,即将需要的信息放在可以最快访问的地方,其描述如图。

 

缓存的概念可以用于几种设备,这些设备包括:

• 比正常内存更快的高速内存缓存。

• 比磁盘驱动器更快的、由内存芯片组成的磁盘缓存。

• 比通过Internet访问更快的、由磁盘实现的Internet缓存。

本专题主要涉及的是磁盘缓存。通常,用于缓存的内存是易失内存,假如电源切断,存放在缓存中的数据内容将会丢失。从这个意义上说,缓存内存是一个临时存储,但磁盘设备和子系统所使用的缓存是非易失存储。易失(内存)和非易失存储关系如图所示

本篇主题如下:

缓存命中和缓存未命中

缓存与缓冲间的差异

缓存命中和缓存未命中

当I / O操作开始从磁盘缓存而不是从非易失存储中检索数据时,(如磁盘设备或子系统)缓存命中发生。除了提供来自内存的快速响应之外,缓存命中还缩短了I / O路径的距离。如图所示。

另一种情况是,虽然搜索了缓存,但没有发现数据,因此数据必须从非易失存储读取,这就是缓存未命中。由于搜索缓存时需要花费时间,所以缓存未命中增加了I / O操作的时间。缓存未命中工作过程如图所示:

如果缓存实现不理想,将产生很高的未命中率,由于每次缓存未命中都需要花费额外的时间,所以导致系统性能的下降。用于描述缓存相对精确度的术语叫缓存命中率,缓存命中率是缓存命中数除以I / O请求总数所得的结果。对于开放系统服务器,如UNIX、Win NT及NETWare系统等,通常的命中率率不超过50 %。顺便指出,由于大型计算机系统使用的数据访问方法不同,它能到达更高的命中率(90 %)。

缓存命中率的计算如下:

缓存与缓冲间的差异

“缓存”和“内存”有时可以互换使用。然而,磁带驱动器中的内存通常并不是缓存,而是缓冲。虽然它们的物理组成是一样的,但缓冲只起临时存储数据的作用,由此数据从一个位置或设备传到另一个位置或设备。一般地,缓冲是在生命期较短的进程控制下工作,一旦数据传输完毕,这些进程将立即释放内存地址。一种常见类型的缓冲是F I F O缓冲,即一种先进先出结构,其结构如图所示:

另一方面,缓存内存由一个或更多的系统算法所控制,这些算法在一个长时间里维护和管理着内存资源,缓存的数据可以长时间地保存在缓存中。

在协调性能有差异的控制器和设备工作方面,缓冲常常能够发挥作用,这种方式的缓冲可以看作是某种转换器。主机I / O控制器上的芯片可以快速地通过I / O路径传输数据,它们的性能可以达到纳秒级,而对于磁盘和磁带驱动器这样一类的机电存储设备,其数据的传输速度只能在微秒范围内。因此,设备制造商把缓冲内存放入设备中,以减少访问延迟,以适合主机控制器的性能。这样,主机控制器可以同时地在多个设备上实施重叠操作,图显示了这种重叠过程。

另一方面,缓存利用更复杂的智能技术决定它将存储什么数据。缓冲是由相对简单的内存芯片构成,这些芯片不停地卸出和填充,但是磁盘缓存算法运用复杂的逻辑处理:那些数据应存放在缓存中,那些数据应从缓存中撤出。根据应用的不同,这些缓存的算法变化很大。

缓存算法既可以在主机软件中实现,也可以在存储子系统或在主机控制器中实现。当缓存由一块电子线路实现时,它被称为缓存控制器,除了管理磁盘缓存内存中的内容外,它还可以控制子系统中的磁盘操作,这些操作的细节是下一章的主要论题。图显示了带有一个缓存控制器和缓存内存的磁盘缓存结构:

之前在社区发布了一系列的文章,后来因为图片问题,很多的文章无法看了,朋友都反应了这个问题,现在发布出来,持续的更新,请大家顶起来 :http://www.itpub.net/thread-1703788-1-1.html

按需下载 打包下载 http://www.jb51.net/books/59793.html

作者:小洋,燕洋天

时间: 2024-11-05 21:49:14

磁盘缓存专题之一 缓存命中和缓存未命中&缓存与缓冲间的差异的相关文章

磁盘缓存专题之一 缓存命中和缓存未命中&缓存与缓冲间的差异_MsSql

不论什么时候,只要系统带有多个设备,而这些设备的性能又各不相同,就存在从慢速设备到快速设备不断更换工作地点以改善系统性能的可能性,这就是缓存的基本思想.即数据从一个地点拷贝到另一个地点,使之检索起来更快.虽然这是一个简单概念,但却包含着许多奇思妙想. 简单地说,为满足某种预期的未来需要所做的准备即缓存.缓存是一种人类的本性,为了保证充分的物品供应量,需要预先进行计划,然后选择一个能够提供最快服务的地方,存放它们,这就是所谓的可靠物资管理.它也是计算机系统的核心概念,即将需要的信息放在可以最快访问

大量图片本地缓存-客户端访问网站缓存所有图片,再次访问时先读取缓存图片,若被清除,再从服务器下载

问题描述 客户端访问网站缓存所有图片,再次访问时先读取缓存图片,若被清除,再从服务器下载 标题已经说的很清晰了.一个功能 我网站上有大量的图片,然后为了减少服务器负担,需要将客户访问过的页面图片缓存在客户端,再次访问时,判断本地缓存是否存在该图片,若有则直接读取本地缓存的图片:若无,在服务器上重新加载一次并添加缓存. 一些博客什么的都查过了,多多少少不适用.... 大神们,最好可以提供一个简易的demo.....万分感激! 解决方案 这个浏览器会自动判断的不要你操心. 解决方案二: 服务器设置图

怎样对从ehcache缓存中取出的对象修改而不改变缓存中的对象

问题描述 怎样对从ehcache缓存中取出的对象修改而不改变缓存中的对象 使用缓存放入了对象,取出来修改属性后,发现缓存中的对象也修改了,也就是说缓存的是引用吗,如果想要对取出的对象操作而不改变缓存中的对象,要怎么做. List<Record> list = cache.get(cacheName, key); for(Record r:list){ if(r=="某条件"){ list.remove(r); } } System.out.println(list); 第一

Web缓存基础:术语、HTTP报头和缓存策略

Web缓存基础:术语.HTTP报头和缓存策略 简介 对于您的站点的访问者来说,智能化的内容缓存是提高用户体验最有效的方式之一.缓存,或者对之前的请求的临时存储,是HTTP协议实现中最核心的内容分发策略之一.分发路径中的组件均可以缓存内容来加速后续的请求,这受控于对该内容所声明的缓存策略. 在这份指南中,我们将讨论一些Web内容缓存的基本概念.这主要包括如何选择缓存策略以保证互联网范围内的缓存能够正确的处理您的内容.我们将谈一谈缓存带来的好处.副作用以及不同的策略能带来的性能和灵活性的最大结合.

mybatis缓存和hibernate缓存的理解问题和区别。类缓存和查询缓存的理解和区别

问题描述 mybatis缓存和hibernate缓存的理解问题和区别.类缓存和查询缓存的理解和区别 Hibernate的一级缓存的目的是为了方便管理实体类的状态(临时状态.持久化状态.游离状态.删除状态).Hibernate的目的二级缓存是为了减少sql语句.那么mybatis的一级缓存和二级缓存的目的是为了什么? Hibernate的二级缓存通常使用ehcache,通常配置的是实体类,所以ehcache里面配置实体类是属于类缓存吗? 类缓存到底在什么地方优化?怎样减少sql语句? 查询缓存到底

ASP.NET缓存全解析4:应用程序数据缓存

ASP.NET缓存全解析文章索引 ASP.NET缓存全解析1:缓存的概述 ASP.NET缓存全解析2:页面输出缓存 ASP.NET缓存全解析3:页面局部缓存 ASP.NET缓存全解析4:应用程序数据缓存 ASP.NET 缓存全解析5:文件缓存依赖 ASP.NET 缓存全解析6: 数据库缓存依赖 ASP.NET 缓存全解析7:第三方分布式缓存解决方案 Memcached和Cacheman System.Web.Caching 命名空间提供用于缓存服务器上常用数据的类.此命名空间包括 Cache 类

基于 Hibernate缓存的Ehcache让实体对象集合对象缓存

考虑到效率和对数据库的压力,使用缓存或者内存缓存,可以提高反应速度和减轻数据库压力.hibernate中支持的比较多,在hibernate给的文档"提升性能"章节有详细介绍: hibernate支持缓存类型和介绍: 后面三个还支持集群,比较强大. 现在详细介绍Ehcache使用: Ehcache所需要的jar包(配合hibernate使用): 加入配置文件: <ehcache> <!-- Sets the path to the directory where cac

一起谈.NET技术,ASP.NET缓存全解析4:应用程序数据缓存

ASP.NET缓存全解析文章索引 ASP.NET缓存全解析1:缓存的概述 ASP.NET缓存全解析2:页面输出缓存 ASP.NET缓存全解析3:页面局部缓存 ASP.NET缓存全解析4:应用程序数据缓存 ASP.NET 缓存全解析5:文件缓存依赖 ASP.NET 缓存全解析6:数据库缓存依赖 ASP.NET 缓存全解析7:第三方分布式缓存解决方案 Memcached和Cacheman System.Web.Caching 命名空间提供用于缓存服务器上常用数据的类.此命名空间包括 Cache 类,

缓存技术之——Yii2性能优化之:缓存依赖

Yii中的缓存依赖,简单来说就是将缓存和另外一个东西绑定在一起,如果另外一个东西发生变化,那么缓存也将发生变化.有点儿类似于JS中的触发事件(但是也不那么像),缓存的变动是依赖的东西所导致的. 依赖可以是文件.数据库.甚至是一些表达式.功能十分强大. Yii提供了5中依赖方法,我们这里介绍其中的3种常用依赖. 1.文件依赖 顾名思义就是将缓存和文件绑定在一起.如果文件的内容发生变化,那么缓存将会收到影响.(Yii判断的标准是文件的最后修改时间) 我们通过实例来演示一下这个过程. 1.首先获取缓存