cache policy

cache policy

近期在做ceph cache-tier 相关的事情, 在cache-tier 里面cache有多种更新策略

其实更缓存相关的系统里面, 都存在这几种策略, 比如操作系统的page cache, 业务层使用memcache, redis 作为后端数据库的缓存的时候, 也都要考虑缓存和后端存储的数据一致性问题. 其实就是更新操作的时候, 什么时候去更新缓存, 什么时候去更新后端存储的问题?

那么这个时候一般会有3种策略

  1. no-write
  2. write-through
  3. write-back
  • no-write

no-write 的实现方式是写入数据的时候是直接将数据写入到后端存储, 并且标记cache 中的数据是无效的, 那么后续的某一次读取发现无效以后, 会发起一次读取请求, 将后端存储中的数据更新到cache 中, 并且标记有效

这个策略其实很少使用

  • write-through

write-through 实现方式是写入的时候将cache 和 后端存储的数据一起更新, 这种方法最能够保证cache 数据的一致性. 并且也是简单的方法, 但也是性能最低的一个方法

  • write-back

write-back 也是linux page cache采用的方式, 我觉得也是最通用的一种方式, 在write-back 策略里面, 写入操作是直接更新到cache 里面的, 后端存储不会马上更新. 然后这些需要更新的page 会被标记成dirty, 放到一个dirty list 里面, 然后周期性的有pdflush(2.6.32 以后就是flush per device)进行将cache 里面的数据刷回后端存储, 然后这些page 就不在标记dirty.

write-back 方案可以看成是write-through 的一个优化版本, 其实就是通过lazy write 一次写入比较大的数据来提高这个写入的性能, 但是带来的问题可能就是缓存中的数据有可能丢失了. 所以在linux 里面可以通过fsync 来强制某一次的写入写到磁盘, 也就是从write-back 变成write-through了


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Cache内外策略指的是在设计计算机系统中,处理缓存的一种策略。在计算机系统中,缓存是为了提高数据访问的速度而引入的一种技术。内外策略则是指在设计缓存系统时,根据数据的访问特性来决定哪些数据应该存放在内部缓存(内部高速缓存)中,哪些数据应该存放在外部缓存(外部主存)中。 内外策略的目的是最大程度地提高数据访问的效率。通常情况下,内部缓存的容量较小,但速度较快,而外部缓存的容量较大,但速度相对较慢。由于内存和外存之间的访问速度差异,内外策略的设计就显得非常重要。 在内外策略中,可以根据数据被访问的频率和访问的局部性来进行划分。对于频繁访问的数据,可以将其存放在内部缓存中,以加快访问速度;而对于不频繁访问的数据,可以将其存放在外部缓存中,以节省内部缓存的空间。 另外,内外策略还可以根据数据的使用规律来进行划分。比如,如果数据被连续地使用,可以将其存放在内部缓存中,以减少内外存之间的数据传输次数;而如果数据被随机地使用,可以将其存放在外部缓存中,以节省内部缓存的占用。 总之,内外策略的设计是为了最大程度地提高数据访问效率。不同的应用场景可能需要不同的内外策略,需要根据具体情况进行选择和调整。通过合理设计和配置内外策略,可以在保证系统性能的同时,充分利用缓存技术带来的优势。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值