Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >阵列Cache写机制:Write-through与Write-back区别

阵列Cache写机制:Write-through与Write-back区别

作者头像
党志强
发布于 2020-02-11 03:15:16
发布于 2020-02-11 03:15:16
5.4K0
举报
文章被收录于专栏:敏而好学敏而好学

Write Through和Write Back

   Write Through和Write Back是阵列卡Cache的两种使用方式,也称为透写和回写。当选用write through方式时,系统的写磁盘操作并不利用阵列卡的Cache,而是直接与磁盘进行数据的交互。而write Back方式则利用阵列Cache作为系统与磁盘间的二传手,系统先将数据交给Cache,然后再由Cache将数据传给磁盘。    在配置阵列的时候,如果不是很清楚的话,默认就可以了,系统会根据磁盘类型进行默认设置。

   生产环境中的配置要根据具体的业务类型及环境进行配置,比如:如果有外置UPS电源,选Write Back,如果没有外置电源,并且对数据安全性要求很高,不要求太高性能,就选Write Through。 Write caching 或 write-through    write-through意思是写操作根本不使用缓存。数据总是直接写入磁盘。关闭写缓存,可释放缓存用于读操作。(缓存被读写操作共用)    Write caching可以提高写操作的性能。数据不是直接被写入磁盘;而是写入缓存。从应用程序的角度看,比等待完成磁盘写入操作要快的多。因此,可以提高写性能。由控制器将缓存内未写入磁盘的数据写入磁盘。表面上看,Write cache方式比write-through方式的读、写性能都要好,但是也要看磁盘访问方式和磁盘负荷了。 write-back(write cache)方式通常在磁盘负荷较轻时速度更快。负荷重时,每当数据被写入缓存后,就要马上再写入磁盘以释放缓存来保存将要写入的新数据,这时如果数据直接写入磁盘,控制器会以更快的速度运行。因此,负荷重时,将数据先写入缓存反而会降低吞吐量。 Starting and stopping cache flushing levels    这两个设置影响控制器如何处理未写入磁盘的缓存内数据,并且只在write-back cache方式下生效。缓存内数据写入磁盘称为flushing.你可以配置Starting and stopping cache flushing levels值,这个值表示占用整个缓存大小的百分比。当缓存内未写入磁盘的数据达到starting flushing value时,控制器开始flushing(由缓存写入磁盘)。当缓存内未写入磁盘数据量低于stop flush value时,flushing过程停止。控制器总是先flush旧的缓存数据。缓存内未写入数据停留超过20秒钟后被自动flushing.    典型的start flushing level是80%。通常情况下,stop flushing level也设置为80%。也就是说,控制器不允许超过80%的缓存用于write-back cache,但还是尽可能保持这一比例。如果你使用此设置,可以在缓存内存更多的未写入数据。这有利于提高写操作的性能,但是要牺牲数据保护。如果要得到数据保护,你可以使用较低的start and stop values。通过对这两个参数的设置,你可以调整缓存的读、写性能。经测试表明,使用接近的start and stop flushing levels时性能较好。如果stop level value远远低于start value,在flushing时会导致磁盘拥塞。 Cache block size    这个值指缓存分配单元大小,可以是4K或16K。选择合适的值,可以明显的改善缓存使用性能。 如果应用程序更多时候访问小于8K的数据,而将cache block size设置为16K,每次访问仅使用一部分cache block。在16K的cache block里总是存储8K或更小的数据,意味着只有50%的缓存容量被有效使用,使性能下降。对于随机I/O和小数据块的传送,4K比较合适。另一方面,如果是连续I/O 并使用大的segment size,最好选择16K。大的cache block size意味着cache block数量少并可缩短缓存消耗延时。另外,对于同样大小的数据,cache block size大一些,需要的缓存数据传送量更小。

其他相关说明:

保护内存里的数据

   备援电池的功能是确保万一当主电源故障或突然断电时内存里的数据不流失,因此如何确保备援电池的正常运行就显得格外重要。备援电池在2种情况下,系统视为无法正常运行以保护内存里的数据。一是坏掉的时候,背板的LED灯将亮起红灯。一是电池充电的时候,背板的LED灯将亮起黄灯。备援电池的使用寿命是根据充电的次数及电力释放的周期而变化的,这取决于用户本身对盘阵的使用情况,一般而言我们建议最好在盘阵使用了12个月之后更换备援电池模块(BBU)。备援电池在正常情况下充满电的时候是3.5V,当其电力降至2.7V的时候将自动进入充电状态,此时系统因为保护内存数据不流失的电力消失,自动地将数据的写入切换成“Write-Through”模式;当充完电后,又自动切换回“Write-Back”模式。这个动作是在事件启动装置(Event Trigger)功能来执行的,在安装管理软件的时候,事件启动装置对备援电池的管理初始值是打开的(Enable)。如果你没有更改过初始设置,那么上述的动作就会正常的运行。如果备援电池已经坏掉,不能正常保护内存里的数据时,而事件启动装置对备援电池的管理是设定在关闭的状态下,我们建议你手动将数据写入模式更改为“Write-Through”模式,以免数据写入没有电力保护的内存中而主电源故障或突然断电时,这些正在写入的数据就遗失了。

减少延迟    当关闭内存“Write-Back”功能时就进入了“Write-Through”的模式,这时候主机数据是不会写入内存而直接写入硬盘的。在“Write-Through”模式下,所有的硬盘将与其相关的主机以适当的方式存取数据块,而大多数的时候硬盘处于接受写命令的状态。此时盘阵只要从主机接收到写入的命令,硬盘的读写头就会去寻找读写的位置,并等待硬盘处于可写入的状态,这个等待的现象就是所谓的延迟(Latency Time),而硬盘经常处于等待写入的状态,增加了延迟的时间,不但缩短硬盘的使用寿命,并且系统也比较耗电。当打开内存的“Write-Back”功能时,从主机写入硬盘的数据先被写在内存里,在内存写满数据时盘阵控制器会将存在于内存的数据大量地写入硬盘。这个内存“Write-Back”的模式将主机写入的命令以写入内存来取代,可以大幅减少硬盘延迟的时间,并且相较于“Write-Through”模式,在大多数的时候提供更佳的写入政策。

引用:http://www.jb51.net/hardware/zonghe/99315.html

http://blog.sina.com.cn/s/blog_3fe2463d0100lexr.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2014/04/24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
缓存使用过程中的几种策略总结及优缺点组合分析
今天翻译一篇关于缓存策略的文章,原文标题是Cacheing Strategies and How to Choose the Right One,同事推荐看的,觉得总结的不错,鉴于很多同学都懒得看英文的,所以皮皮就用蹩脚的水平试着翻译一波,如何觉得还凑合,记得点个“在看”,^-^。
用户1516716
2019/08/13
9840
缓存使用过程中的几种策略总结及优缺点组合分析
Intel OpenCAS缓存加速方案
配置文件在utils/opencas.conf中,包括cache的配置和core devices的配置
用户4700054
2022/08/17
2.5K0
Intel OpenCAS缓存加速方案
一文介绍kafka为什么这么快
关于Kafka的一个灵魂拷问:它为什么这么快?或者说,为什么它能做到如此大的吞吐量和如此低的延迟?
大数据老哥
2021/09/16
4420
一文介绍kafka为什么这么快
Linux下块设备缓存Bcache设置
Bcache是Linux内核块设备层cache,支持多块HDD使用同一块SSD作为缓存盘。它让SSD作为HDD的缓存成为了可能。由于SSD价格昂贵,存储空间小,而HDD价格低廉,存储空间大,因此采用SSD作为缓存,HDD作为数据存储盘,既解决了SSD容量太小,又解决了HDD运行速度太慢的问题。
happy123.me
2021/04/25
5.7K0
Raid0、 Raid1、 Raid5、 Raid10的原理、特点、性能区别[通俗易懂]
RAID ( Redundant Array of Independent Disks )即独立磁盘冗余阵列,简称为「磁盘阵列」,其实就是用多个独立的磁盘组成在一起形成一个大的磁盘系统,从而实现比单块磁盘更好的存储性能和更高的可靠性。
全栈程序员站长
2022/09/17
90.3K0
Raid0、 Raid1、 Raid5、 Raid10的原理、特点、性能区别[通俗易懂]
MIPS架构深入理解4-Cache机制
现代CPU中,为了提高CPU的执行效率,高速缓存必不可少。关于Cache工作原理可以参考我之前的文章
Tupelo
2022/08/15
2.8K1
MIPS架构深入理解4-Cache机制
聊聊page cache与Kafka之间的事儿
关于Kafka的一个灵魂拷问:它为什么这么快? 或者说,为什么它能做到如此大的吞吐量和如此低的延迟?
王知无-import_bigdata
2019/08/16
5.4K0
聊聊page cache与Kafka之间的事儿
深入理解计算机系统(第三版)/ CSAPP 杂谈,第6章:储存器层次结构
SRAM 贵,稳定,集成度低,用于高速缓存存储器 DRAM 较便宜,不稳定,集成度高,需要定时重新读写和纠错码,用于主存和帧缓冲区 DRAM 的存储单元(超单元)以二元阵列排列而不是线性排列,这样可以节省管脚。请求某个超单元先发送行,此时会将行缓存到内部行缓冲区;然后发送列,此时将该行该列的超单元数据返回给请求者。传统的 DRAM 会将剩余的数据丢掉,而 FPM DRAM会缓存整行。这两种DRAM早就已经停产了,现在主流是 DDR3/4 SDRAM。 可擦写编程器 EEPROM 掉电数据不
sickworm
2019/02/27
8980
Page Cache与Page回写
Page cache是通过将磁盘中的数据缓存到内存中,从而减少磁盘I/O操作,从而提高性能。此外,还要确保在page cache中的数据更改时能够被同步到磁盘上,后者被称为page回写(page writeback)。一个inode对应一个page cache对象,一个page cache对象包含多个物理page。
233333
2019/01/03
1.6K0
读源码——Guava-Cache
今天,听同事介绍了Cuava-cache,这是个老牌缓存了,虽然近来被Caffine的出现遮盖了风头,但依然不能掩盖它往日的辉煌,至少在我们团队,还有很多项目在使用它,索性就以它为基础,对缓存做一次总结。
早安嵩骏
2020/08/11
9020
x86系统cache locking的原理
cmpxchg 本身不是原子的,需要加 lock 才是原子的,而 lock 是通过锁内存总线来实现原子性的。
JavaEdge
2020/05/27
4.4K2
Mysql专栏 - Linux底层交互和Raid存储架构
在专栏之前的几篇文章中,我们总结了缓冲池,缓存页,redo log,undo log,以及数据页和数据行在底层是如何进行存储的,后续介绍了表空间,段,区等概念。这一节比较特殊,讲述的是和Linux有关的交互原理,因为多数的mysql都是部署在linux的服务器上面,本节会简单介绍一下linux是如何处理mysql的请求的,以及linux系统会带来哪些问题
阿东
2021/09/10
9170
深度解析:cache的基本概念原理扫盲
本文转自 周贺贺,baron,代码改变世界ctw,Arm精选, armv8/armv9,trustzone/tee,secureboot,资深安全架构专家,11年手机安全/SOC底层安全开发经验。擅长trustzone/tee安全产品的设计和开发。
鸽芷咕
2024/05/26
1.2K0
深度解析:cache的基本概念原理扫盲
老曹眼中的MySQL调优
对于全栈而言,数据库技能不可或缺,关系型数据库或者nosql,内存型数据库或者偏磁盘存储的数据库,对象存储的数据库或者图数据库……林林总总,但是第一必备技能还应该是MySQL。从LAMP的兴起,到Mariadb的出现,甚至PG的到来,熟练的MySQL技能都是大有用武之地的。
半吊子全栈工匠
2018/08/22
5030
记一个bootloader的cache问题
最近往一个armv7板子的bootloader中移植了解压算法,移植本身还比较顺利,但移植完了发现,功能是正常的,但效率大打折扣。解压同样的数据,耗时大约是uboot的10倍。
zqb_all
2019/12/27
7770
CPU体系结构之cache小结
What is cache? CPU缓存(Cache Memory)位于CPU与内存之间的临时存储器,它的容量比内存小但交换速度快。在缓存中的数据是内存中的一小部分,但这一小部分是短时间内CPU即将访
刘盼
2022/07/21
1.3K0
CPU体系结构之cache小结
数据库缓存的常用设计模式
在DEM的某需求中涉及缓存模式的设计,终于要用到我少得可怜的数据库知识了,顺便做个总结
Kevinello
2022/08/19
1.2K0
数据库缓存的常用设计模式
【考研408&计算机组成原理】存储系统之Cache考点
目前暂时只接入了微信,如果大家对这个问答系统感兴趣的话可以在我的主页里找到我的微信号
苏泽
2024/06/28
4130
【考研408&计算机组成原理】存储系统之Cache考点
innodb与ext4缓存交互分析
这里我们使用术语“缓冲”(一般为buffer)来表示对数据写的暂存,使用术语“缓存”(一般为cache)来表示对数据读的暂存。顾名思义,由于底层存储设备和内存之间速率的差异,缓冲是用来暂“缓”对底层存储设备IO的“冲”击。缓存主要是在内存中暂“存”从磁盘读到的数据,以便接下来对这些数据的访问不用再次访问慢速的底层存储设备。
mingjie
2022/05/12
1.3K0
innodb与ext4缓存交互分析
深入理解Linux 的Page Cache
大家好,我是 Peter,昨天群里有小伙伴咨询page cache的问题,看到网上有篇不错的文章,分享给大家。如果大家有想看的内容,欢迎给我留言。
刘盼
2021/08/25
4.2K0
深入理解Linux 的Page Cache
相关推荐
缓存使用过程中的几种策略总结及优缺点组合分析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档