Lazy loaded image
CMU-15-440
📖Lecture 8 Cache Part 3
Words 2034Read Time 6 min
2025-7-21
2025-7-21
type
status
date
slug
summary
tags
category
icon
password
原文

What Makes This Hard?

单副本语义实现的困难
Physical master copy may not exist 物理主副本可能不存在
  • hosts track who has most recent copy 主机跟踪谁拥有最新副本
  • more likely in P2P scenarios than client-server scenarios 在 P2P 场景中比在客户端-服务器场景中更有可能出现
  • also common in multiprocessor hardware caches 在多处理器硬件缓存中也很常见(CPU 缓存一致性 MESI)
 
如果各个节点是对等,没有主副本,当需要确保数据一致性时,各个节点需要通过交互来确认谁持有最新版本的副本。
 
Network may break between some users and master copy 某些用户和主副本之间的网络可能会中断
  • disconnected sites see no further updates 断开连接的站点没有进一步的更新
  • other sites don’t see updates by disconnected site 其他网站看不到断开连接的网站的更新
 
Intense read-and write-sharing across sites 跨站点的密集读写共享
多个站点之间频繁对同一批数据进行读取和写入操作(比如多个节点共享一份核心数据,且都需要频繁读写)
  • generates huge amount of cache propagation traffic 产生大量的缓存传播流量
    • 由于要保持各个站点数据一致性(一个站点修改了数据,其他站点的缓存也必须同步更新),频繁的读写会导致大量缓存同步数据在站点之间传输,产生巨大的传播流量。
  • interconnect becomes bottleneck for cache access 互连成为缓存访问的瓶颈
    • 站点之间的连接(如网络链路、内部通信通道)会因为大量同步流量被占满,称为缓存访问的瓶颈。
  • neither writer-bias(write-back) nor reader-bias(write-through) helps
    • 写偏见(回写)和读者偏见(直写)都无济于事
      write-back : 指缓存修改后不立即同步到主存,等空闲时批量写入。
      write-through: 修改缓存时立即同步到主存。
      如果大量的同步流量被占满,write-back 会导致同步延迟引发数据的不一致。而 write-through则会瞬间产生大量同步请求。
  • caches effectively useless 缓存实际上无用
    • 缓存本应通过“本地存储热点数据” 提升效率,但在这种场景(指的是跨站点的密集读写)下,缓存不仅无法提速,甚至可能因同步开销拖慢整体效率,也就相当于缓存失去了作用,
       

1. Broadcast Invalidations

广播无效
Basic Idea
Every potential caching site notified on every update 每次更新时,所有可能的缓存站点都会收到通知
  • No check to verify caching site actually contains object 不检查和验证站点是否包含该对象
    • 发送广播前,无论缓存站点是否缓存了该对象,
  • Notification includes specific object being invalidated - 通知包括被失效的特定对象
    • 通知中明确标注失效的具体对象
  • Effectively broadcast of address being modified 有效广播正在修改的地址
    • 告知所有缓存站点 这个地址的数据已变,如果你们的缓存如果有该对象,就不能使用了
At each cache site , next reference to object will cause a miss 在每个缓存站点,下次访问该对象时会触发缓存未命中
 
CPU 缓存一致性设计(MESI)就是如此。MESI 不仅可以广播失效还可以传输新的值。 总线传播比网络传播要更可靠、更快速(不是一个量级)。
广播的速度是一个显著的瓶颈。
广播失效机制在适度规模的硬件中表现优异。
 
Strengths 优势
  • very strict emulation of “one-copy” semantics 非常严格地模拟 "单拷贝 "语义
  • no race conditions if updater blocked until all caches invalidated 如果更新程序在所有缓存失效前被阻止,则不会出现竞争条件
  • simple to implement
Limitations 缺点
  • wasted traffic if no readers elsewhere 如果其他地方没有读者,就会浪费流量
    • 如果缓存中的值广播失效,而没有读取者,则浪费了同步所需的流量
  • updating process blocked until invalidation complete 更新过程受阻,直至失效完成
    • (更新者被阻塞至所有缓存失效)的机制,会让更新者在完成 “所有缓存站点确认失效该数据” 前,
      不允许后续操作(包括自身的后续修改或其他节点的读取)继续 。
  • not a scalable design 不是可扩展性的设计

2. Check on Use

Basic Idea
  • reader checks master copy before each use 读者在每次使用之前检查主副本
    • conditional fetch , if cache copy stable 有条件的获取,如果缓存复制稳定
  • has to be done at coarse granularity(e.g. entire file or large block) 必须在粗粒度(例如整个文件或大块)上完成
    • otherwise every read is slowed down excessively 否则每次读取都会过慢
  • at whole file granularity → “session semantics” 当以整个文件为粒度 → 会话语义
    • open{read|write} close → “session”
      approximation to strict one-copy semantics at bit-granularity 对位粒度的严格单副本语义的近似
       
读取前检查主副本,缓存有效则直接使用。
无需实时同步每一个细小修改,只需在 “打开 / 关闭” 时同步一次,既能保证 “会话内操作的一致性”(本地副本稳定),又避免了频繁检查主副本的开销,因此是对 “严格单副本语义” 的高效近似 —— 用可接受的 “一致性延迟”(需重新打开才见新修改)换来了读写效率的提升。
会话语义 = “整个文件粒度 + 会话周期”
 
Advantages 优势
  • strict consistency at coarse granularity 粗粒度的严格一致性
  • easy to implement, no server state 易于实现,无需服务器状态
  • servers don’t need to know of caching sites
Disadvantages
  • slows read access on loaded servers & high-latency networks 在服务器负载较高或网络延迟较大的场景中,会显著减慢读取访问的速度
  • check is almost always success - > frivolous traffic 检查几乎总是成功的 ->无意义流量
    • 由于检查结果 “几乎总是成功”(即缓存副本与主副本一致),这类检查会产生大量 “无意义的流量”
  • load on network and server
“Up to date” is relative to network latency "最新 "是相对于网络延迟而言的
notion image
因为没有锁定机制,在延迟高的客户端可能出现图中情况
Q:如果client 在本地访问并修改了一个文件,随后尝试将其发送到服务器,但此时文件已不再是最新版本,客户端该如何处理该文件?
A:在现今的系统中,如这里描述,它会毫不犹豫的覆盖那个文件。
 

Callback

Basic Idea
  • targeted notification of caching sites 缓存站点的有针对性的通知
  • master copy tracks sites with cached data 主副本跟踪具有缓存数据的站点
  • typically done at coarse granularity(e.g. entire file) 通常以粗粒度完成(例如整个文件)
    • can be made to work with byte ranges
  • on update ,all sites with cached data notified(”callback”) 更新时,通知所有具有缓存数据的站点(“回调”)
 
Advantages
  • excellent scalability for Unix workloads 对 Unix 工作负载具有出色的可扩展性
  • zero network traffic for read of cached-valid objects 读取缓存有效对象时网络流量为零
  • precursor to caching for disconnected operation 断开操作缓存的先驱
  • biases read performance in favor of write-performance 读取性能偏向于写入性能
 
Disadvantages
  • sizable state on server 服务器上有大量状态
  • complexity of tracking cached state on clients 客户端跟踪缓存状态的复杂性
  • silence ambiguous for client
    • network failure →lost callbacks
      periodic “keepalive” probes
      data cloud be stale between probes
  • NAT networks with masquerading firewalls
 
论文:Scale and performance in a distributed file system
 
📑
虽然课上教授讲的大多都以分布式文件系统为案例,但是也可以借鉴到以“小数据”缓存的案例上,需要自己发挥独立思考。
缓存不止是Redis这样的中间件,还包括 CPU cache line ,磁盘页缓存,buff pool 、 local cache 、http cache 、CDN cache等等。
上一篇
Lecture 7 Cache Part 2
下一篇
Lecture 9 Cache Part 4

Comments
Loading...