闲话Cache:始篇
Caching(缓存)在现代的计算机系统中是一项最古老最基本的技术。它存在于计算机各种硬件和软件系统中,比如各种CPU, 存储系统(IBM ESS, EMC Symmetrix…),数据库,Web服务器,中间件等。它的一个重要的作用就是用于弥补不同速度的硬件之间的存取速度的差距,cache可以完全通过硬件实现(算法也是通过硬件实现的),也可以通过在更快硬件上通过软件控制来实现。
EMCSymmetrix之所以如此的昂贵,就是因为在这个系统中,提供了一个640G全相连的高速数据缓存(DRAM缓存),完全用硬件实现,就像一个放大版的CPU一级缓存。
Caching技术对于现代计算机系统之所以如此重要,就是在于,任何一个小的改进都会对整个计算机系统产生巨大的影响。因为cache具备一个特性,用最高的性价比可以实现我们希望得到的系统整体性能。
比如,磁盘和内存相比,磁盘具有大容量的特性,而内存具有高性能,但是对于同等容量,磁盘相比于内存来说非常廉价。这也就是我们不可能把所有磁盘都替换成内存(先不考虑永久存储的特性),即便这样我们可以获得非常高的I/O速度。那么如何解决这两者之间的不匹配?就是利用缓存技术。利用内存介质为磁盘做一层缓存。这样就可以在不多花额外费用的同时,得到速度和容量的平衡。
同样的道理存在于内存和CPU缓存之间。下图是Intel Core i7 5500系列各部件的访问速度:
|
访问速度 |
|
|
L1 Cache Hit |
4 cycles |
|
L2 Cache hit |
10 cycles |
|
L3 Cache hit, line unshared |
40 cycles |
|
L3 Cache hit, shared line in another core |
65 cycles |
|
L3 Cache hit, modified in another core |
75 cycles |
|
Remote L3 cache |
100~300 cycles |
|
Local RAM |
60 ns |
|
Remote RAM |
100 ns |
从这里我们可以看到缓存对于系统性能的重要性。但是我们要达到理想的性能,还必须提高缓存的命中率,这样缓存才可以最大限度的得到利用。
闲话Cache:始篇的更多相关文章
- (36)Spring Boot Cache理论篇【从零开始学Spring Boot】
Spring Boot Cache理论篇 在上一篇中我们介绍了Spring Boot集成Redis的实战例子,里面使用到了Spring Cache,那么什么是Spring Cache呢,本章将会做一个 ...
- SpringBoot日记——Cache缓存篇
通常我们访问数据的情况如下图,数据存缓存就取缓存,不存缓存就取数据库,这样可以提升效率,不用一直读取数据库的信息: 开始记录: 关于SpringBoot缓存的应用 1. 首先在pom.xml文件中添加 ...
- 奇妙的go语言(開始篇)
[ 声明:版权全部.欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 从前接触脚本语言不多,可是自从遇到go之后,就開始慢慢喜欢上了这个脚本语言.go语言是goog ...
- (翻译)Google Guava Cache
翻译自Google Guava Cache This Post is a continuation of my series on Google Guava, this time covering G ...
- 57. Spring 自定义properties升级篇【从零开始学Spring Boot】
之前在两篇文章中都有简单介绍或者提到过 自定义属性的用法: 25.Spring Boot使用自定义的properties[从零开始学Spring Boot] 51. spring boot属性文件之多 ...
- 54. spring boot日志升级篇—logback【从零开始学Spring Boot】
在<44. Spring Boot日志记录SLF4J>章节中有关相关的介绍,这里我们在深入的了解下logback框架. 为什么要使用logback ? --在开发中不建议使用System. ...
- 52. spring boot日志升级篇—log4j多环境不同日志级别的控制【从零开始学Spring Boot】
在上一章节中我们介绍了,仅通过log4j-spring.properties对日志级别进行控制,对于需要多环境部署的环境不是很方便,可能我们在开发环境大部分模块需要采用DEBUG级别,在测试环境可能需 ...
- JS-正则表达式实战篇(Angel著)
JS-正则表达式实战篇(Angel著) 大家会看到我最新的系列博客都是spring boot怎么突然来了一个js的呢,而且这个貌似对大家而言好像很简单的嘛,所以在写之前我说说我写这一篇文章的初衷.公司 ...
- TGL站长关于常见问题的回复
问题地址: http://www.thegrouplet.com/thread-112923-1-1.html 问题: 网站配有太多的模板是否影响网站加载速度 月光答复: wp不需要删除其他的模板,不 ...
随机推荐
- activity_main.xml与fragment_main.xml
见: http://blog.sina.com.cn/s/blog_3e28c8a50101fqvw.html http://blog.sina.com.cn/s/blog_3e28c8a50101f ...
- 用于科创的git log美化输出
git log --reverse --pretty=format:'%cd %s' --date=short > a.txt 更好的: git log --reverse --pretty=f ...
- Spring3.0将全面支持REST
Rod Johnson上个月底说,Spring 3.0全面支持REST风格的Web服务. "We're really seeing extensive interest and growth ...
- UIView动画学习笔记
UIView的动画是通过修改控件的属性来达到动画的效果,如:渐变, 移动. 废话不多说,直接上代码: - (void)loadView{ [super loadView]; _leftView = [ ...
- springmvc 入门级教程
1.先看下目录结构 2.引用所需的jar文件 3.web.xml 配置如下 <?xml version="1.0" encoding="UTF-8"?&g ...
- $(document).Ready()方法 VS OnLoad事件 VS $(window).load()方法
$(document).Ready()方法 VS OnLoad事件 VS $(window).load()方法接触JQuery一般最先学到的是何时启动事件.在曾经很长一段时间里,在页面载入后引发的事件 ...
- Python 异常相关参考
Python所有的异常都是从BaseException类派生的,常见的错误类型和继承关系如下: BaseException +-- SystemExit +-- KeyboardInterrupt + ...
- php获取上传多个文件缺失
我们的一个页面编辑发布后台出现了图片无法上传保存的情况,经过调试对比发现,原来是file表单数量过多导致,减少file表单的数量即可上传成功.为了满足需求不减少file表单数并保证上传成功,于是更改了 ...
- ansible安装及问题解决
本文主要用来安装ansible,在进行安装的时候,也可以使用其他的版本进行安装,本文主要讲述安装ansible的步骤,还有常用问题的解决. 1.查看python版本 由此可以看到python的版本为2 ...
- 设计模式 外观 Facade
外观模式的作用是简化接口.它提供一个统一的接口用来访问子系统的一群接口.通过这个高层接口使子系统更容易使用. 同时,通过外观将客户从组件的子系统中解耦. Head 1st中使用了家庭影院的例子来说明外 ...