2023-9-1讨论班
FUSEE: A Fully Memory-Disaggregated Key-Value Store
当前在分布式内存上的KV存储主要通过单一服务器来管理元数据,本文主要是克服这一问题。
原先如此设计的原因主要是内存大的节点可能并不具有强大的计算能力以处理
所做的工作:
- 在内存结点上建立元数据的拷贝并直接管理
- 提出一个以客户端为中心的协议允许客户端并发地访问和修改多拷贝的索引
- 使用两层内存管理框架来分割客户端和内存结点管理内存的责任
一些需要解决的问题:
- 以客户端为中心的索引拷贝:一致性问题不易使用传统方法解决,因为内存结点的计算能力不强且需要良好的可拓展性
- SNAPSHOT协议,合作式解决一致性问题
- 远程内存分配:传统方法在完全分布式下无效;且客户端通信需要多个RTT
- 将计算任务分成轻重两类,分别交给相应内存结点
- 客户端失效带来的数据污染:(并没有完全理解实际场景)修改执行到一半客户端失效,被污染的数据却产生持久影响
- 使用log
一般来说在远端处理request的机器需要有多个cpu提供算力处理并发请求
- 云计算中心资源会有浪费,例如CPU资源已经用满,但是内存还有空余
- 容错不解耦
内存分离架构DM
- 计算资源和内存资源解耦——不同节点掌握的资源是不平衡的,可以使用RDMA(0 copy, kernel bypass)等高速网路连接
Is unsafe an Achilles’ Heel? A Comprehensive Study of Safety Requirements in Unsafe Rust Programming
- 定义了19个“安全”属性
- rust中调用了unsafe API的代码块需要加上unsafe关键字以通过编译
rust具有编译时的安全检查,作为面向系统级的编程语言,还是需要指针等数据结构与访问操作的。
unsafe是rust的关键字,CVE基本与unsafe有关