论文阅读笔记整理(持续更新)

KV存储

Replicating Persistent Memory Key-Value Stores with Efficient RDMA Abstraction

OSDI 2023 Paper 泛读笔记

针对使用RDMA优化PM KVS的复制,现有方法存在排队延迟和设备级写放大(DLWA)。本文提出了Rowan,通过RDMA单边动词处理PM KVS的复制写入。聚合来自不同服务器的并发远程写入,并以顺序(因此低DLWA)和单向(因此低延迟)的方式将这些写入降落到PM。(1)让接收器端的控制线程以递增的地址顺序将PM驻留缓冲区推入接收队列。发送方只需要为远程PM写入发出SEND,并等待接收方RNIC生成的ACK。(2)利用两个RNIC硬件功能,共享接收队列(SRQ)和多包接收队列(MP RQ),分别合并来自不同连接的写入并支持可变大小的写入。(3)最小化控制线程的任务来简化Rowan的控制路径。

Cooperative Concurrency Control for Write-Intensive Key-Value Workloads

ASPLOS 2023 Paper 泛读笔记

针对键值存储服务的优化,源系统为了高吞吐量,强制通过跨线程分区写入来避免同步,但会造成负载不平衡,在写为主的负载和读写倾斜的负载性能不佳。本文提出C-4,将写入请求分为两类:可以跨线程平衡的独立请求和必须排队的依赖请求。使用NIC动态分区独立写入,以增加当前KVS设计的负载平衡灵活性,并在KVS中添加软件层,将依赖写入压缩为批处理。

A Generic Service to Provide In-Network Aggregation for Key-Value Streams

ASPLOS 2023 Paper 泛读笔记

针对使用网络内聚合(INA)优化分布式键值存储,现有INA方案是一种同步聚合、而且缺乏系统范围的考虑因素。本文提出用于键值流的INA服务ASK,交换机和主机联合设计的系统,可编程交换机提供尽力而为的聚合服务,主机运行守护进程与应用程序交互。ASK针对流量特性、硬件限制和网络不可靠特性进行了深入优化:(1)协同设计交换机内存布局和主机分组,以实现矢量化,并支持可变长度密钥。(2)设计了主机滑动窗口方案和交换机重复数据消除逻辑,以实现可靠性和正确性,并通过重用主机服务中的持久连接,进一步提高了系统的可扩展性。(3)设计了影子复制机制,以周期性地从交换机获取中间结果,并重置交换机内存,从而使热键有第二次机会保留交换机内存。

In-Memory Key-Value Store Live Migration with NetMigrate

FAST 2024 Paper 泛读笔记

针对分布式键值存储在节点之间迁移键值数据,现有方法需要基于源或目的地或额外记录,在迁移过程中进行服务,造成额外延迟。本文提出NetMigrate,不使用额外资源进行迁移记录,核心思想是用网络跟踪迁移过程,因为网络可以查看集群中的所有数据移动。包括三个关键技术:(1)交换机资源有限的情况下跟踪迁移状态。利用概率数据结构,用布隆过滤器跟踪密钥是否已完成迁移,用计数布隆过滤器跟踪密钥当前是否正在迁移。(2)迁移过程中维护数据一致性。设计了一种错误处理方法,如果对数据所有权有绝对的信心,交换机将查询路由到相应的位置;否则,交换机会发出少量复制查询。(3)支持多样化的迁移策略。可以从源端调整其交换机上的数据结构和资源预算,以优化各种性能目标,例如最小化迁移时间和最大化查询吞吐量。

IonIa: High-Performance Replication for Modern Disk-based KV Stores

FAST 2024 Paper 泛读笔记

针对写优化键值存储(WO-KV)的副本管理。现有复制协议:浪费了高写性能,只提供了较低的写吞吐量,因为必须在单个线程上顺序写入;较差的读性能,将读取限制在只访问主副本。本文提出IONIA,利用了基于SSD的WO-KV存储的独特特性优化复制协议。(1)利用接口特性将并行执行推迟到后台,从而实现高吞吐量的一次往返(RTT)写入。(2)在任何副本上进行读取,同时无需强制写入所有副本。为了处理滞后的从副本,对于每个从副本的读取,IONIA在主副本处执行检查(一个元数据查询),以验证从副本返回的结果。(3)为了实现1RTT读取,IONIA将读取发送给从副本,同时将元查询并行发送给主副本。通过客户端一致性检查机制,主副本返回足够的关于正在读取的键的信息,而客户端则决定从副本结果是否为最新。

Calcspar: A Contract-Aware LSM Store for Cloud Storage with Low Latency Spikes

ATC 2023 Paper 泛读笔记

针对亚马逊EBS存储,探索其合同模型和延迟特性,发现超过付费IOPS的请求会显著增加延迟,而LSM存储又会放大工作负载的波动并产生内部请求拥塞。本文对亚马逊EBS下的LSM存储进行优化,来降低尾延迟:(1)利用波动感知缓存,通过热点感知进行主动预取,识别高负载时段的热点,并在低负载时段主动提取热点。通过偏移感知的被动缓存,在高负载期间利用时间局部性来挤出过时的预取数据,并在不发出额外请求的情况下适应热点转移。(2)利用拥塞感知的IOPS分配器为不同的内部请求分配优先级,采用多队列结构防止线程拥塞。通过机会压缩将不同LSM级别的写入请求分配到不同的优先级队列中,从而平衡读取放大和写入节流。

DEPART: Replica Decoupling for Distributed Key-Value Storage

FAST 2022 Paper 泛读笔记

对于KV存储中的副本管理进行优化,现有方法实验同一索引结构中管理所有副本,例如LSM-Tree,会导致复制冗余之外的大量I/O成本。本文提出副本解耦,将主副本和冗余副本分离。使用LSM树管理主副本,以便以更轻量级的方式保留LSM树的设计特性;使用两层日志来管理冗余副本,通过只追加的全局日志保证冗余副本写入速度,将全局日志根据用户需要拆分为多个本地日志,分别优化读(写)性能;按不同的密钥范围组织KV对,将恢复操作限制为仅访问KV对的相关范围,提升故障恢复性能。

Pacman: An Efficient Compaction Approach for LogStructured Key-Value Store on Persistent Memory

ATC 2022 Paper 泛读笔记

设计适合PM的日志结构键值存储Pacman,提出四个优化点:将压缩过程中的引用搜索卸载到服务线程,以减轻繁重的索引遍历开销;利用标记指针来减少高延迟的PM读取,将频繁访问的元数据存储在DRAM中,以减少小的随机PM写入,避免垃圾收集引入过多的PM访问;根据PM特性以批处理模式重新设计压缩管道,以降低持久性开销;以轻量级方式分离冷对象和热对象,以减少压缩中的PM数据复制。

DyTIS: A Dynamic Dataset Targeted Index Structure Simultaneously Efficient for Search, Insert, and Scan

EuroSys 2023 Paper 泛读笔记

针对复杂数据集的索引,如何同时高效的支持搜索、插入和扫描。本文提出DyTIS:基于可扩展哈希结构,利用数据集键分布的累积分布函数(CDF),并随着数据集的增长学习和调整其结构;通过自然键顺序对键进行分组,并在每个存储桶中按排序顺序维护键,以支持哈希索引的扫描操作;通过重映射函数,将非均匀密钥重新分配到均匀分布中,同时保持密钥的自然顺序。

ROART: Range-query Optimized Persistent ART

FAST 2021 Paper 泛读笔记

针对NVM场景下的持久存储设计,如何同时实现功能性(可变大小的key和范围查询)、性能(低持久性开销)、正确性(异常处理和内存安全)。作者提出基于基数树的持久索引:为了优化范围查询:提出叶子压缩方法,延迟了叶分割,并将多个叶节点压缩成一个叶数组;为了优化持久性开销:提出条目压缩,将关键字和子指针组合在一个8字节的条目中;为了优化持久性开销:选择性元数据持久化,以减少要持久化的元数据树量;为了优化持久性开销:提出最小有序分割,放松分割操作中的步骤顺序以减少sfence指令的数量;为了正确性:设计了快速的内存管理以防止内存泄漏,同时进行崩溃后垃圾收集,在恢复期间执行后台GC时,索引可以同时处理前台请求,实现立即重新启动服务。

KVIMR: Key-Value Store Aware Data Management Middleware for Interlaced Magnetic Recording Based Hard Disk Drive

ATC 2021 Paper 泛读笔记

针对基于IMR的HDD上的基于LSM-tree的KV存储优化。作者提出KV存储和HDD间的中间件:采用了压缩感知的路径分配方案,在保持数据文件(SSTables)同时最小化耗时的RMW,在压缩过程中有效地访问数据文件,补救了吞吐量下降,并提高了压缩效率;利用了合并RMW方法,以提高将KV存储系统的多路文件持久化到IMR路径的效率,其关键思想是将多个逐轨RMW重新排序为一个合并的RMW,同时仍确保崩溃一致性。

Differentiated Key-Value Storage Management for Balanced I/O Performance

ATC 2021 Paper 泛读笔记

同时优化LSM-tree的读、写、范围查询性能。作者提出使用传统的LSM树管理键,在LSM树的每个级别内具有完全排序,同时以一种协调的方式管理值,使其相对于键的完全排序具有部分排序的顺序,以保持高扫描性能;通过状态感知的惰性GC方案来实现高空间效率和高性能;提出了细粒度的KV分离,区分小型、中型和大型KV对的管理,以实现混合工作负载下性能平衡;提出了热感知多日志设计,用于有效管理大型KV对。

ROLEX: A Scalable RDMA-oriented Learned Key-Value Store for Disaggregated Memory Systems

FAST 2023 Paper 泛读笔记

针对分离式内存系统中,KV存储性能不高的问题,由于内存节点资源有限,现有方法难以直接修改B树或学习索引的模型。作者提出提出了ROLEX,一种可扩展的面向RDMA的有序键值存储,使用分解存储系统的学习索引。包括几个优化点:插入和再训练操作解耦,使计算节点能够直接通过单边RDMA动词修改远程数据,而无需再训练模型,提高可扩展性;其他计算节点通过具有一致性保证的旧模型来识别新修改的数据;异步使用专用计算资源重新训练模型,以提高模型的准确性。

RubbleDB: CPU-Efficient Replication with NVMe-oF

ATC 2023 Paper 泛读笔记

在包含多个数据副本的KV存储系统中,如何减少压缩的CPU利用率。作者利用网络和NVME-oF,在单个节点上压缩,压缩后传输到其他复制节点上。为了实现文件系统的同步,提出为数据预分配固定的磁盘空间,通过维护映射表确保复制节点的文件系统同步。为了实现应用级同步,提出在副本之间应用版本编辑顺序的方法,确保各复制节点执行顺序一致,避免删除导致的节点间不一致问题。

All-Flash Array Key-Value Cache for Large Objects

EuroSys 2023 Paper 泛读笔记

针对AFA规模的KV缓存系统,用于大型对象。针对三个挑战:(1)庞大的元数据导致的高索引开销,(2)过期对象造成的空间浪费,(3)频繁的SSD故障导致的服务中断。为了解决这些问题并提高缓存命中率,提出三种技术:无视冲突的两级哈希表,使用紧凑的每个对象 16B 元数据,将整个哈希表存储在 SSD 中,将热门条目通过组相连缓存在 DRAM 中;近似TTL管理,将 TTL 相似的对象存储到同一空间,使用粗粒度分组快速识别过期对象;反应式容错机制,跨分片缓存空间处理故障,仅在故障显现时处理,将分片与故障隔离来保持高可用性,无需奇偶校验的开销。

Vigil-KV: Hardware-Software Co-Design to Integrate Strong Latency Determinism into Log-Structured Merge Key-Value Stores

ATC 2022 Paper 泛读笔记

针对生产环境的日志结构合并的键值存储(LSM KV),如何保证确定性的延迟。作者提出硬件和软件协同设计的框架:通过启用可预测的延迟模式(PLM)接口,在特定的时间窗口强制执行确定性的读取延迟;在系统级别上,通过在多个物理功能内部调度 PLM 的不同设备状态,来隐藏与 SSD 的内部任务和/或写服务相关的非确定性时间窗口;进一步调度压缩/刷新操作和客户端请求,将强大的延迟确定性集成到 LSM KV 中。

Tebis: Index Shipping for Efficient Replication in LSM Key-Value Stores

EuroSys 2022 Paper 泛读笔记

针对包含多个数据副本的KV存储系统,如何减少压缩和CPU利用率。作者提出只在主节点进行压缩,并将预构建的索引发送到备份节点,减少备份节点的I/O放大、CPU开销和内存利用率;提出备份节点上索引的高效重写机制,通过创建主备节点间段的映射,通过映射重写备份中的设备位置;利用RDMA进行数据传输,减少CPU开销和通信操作。

ChameleonDB: a Key-value Store for Optane Persistent Memory

EuroSys 2021 Paper 泛读笔记

针对PM环境下的KV系统,利用PM的两个特点:作为块设备以256B为单元写入,具有高读取性能。设计了ChameleonDB,为混合内存/存储设备设计的KV存储系统。使用LSM树结构以低写放大的方式高效地接收写入;利用DRAM中的哈希表,以绕过LSM树的多个层级,实现快速读取;在后台维护LSM多级结构,以实现快速的崩溃恢复;使用动态读取保护模式,使用混合结构吸收突发的写入工作负载,避免读取长尾延迟。

Improving Performance of Flash Based Key-Value Stores Using Storage Class Memory as a Volatile Memory Extension

ATC 2021 Paper 泛读笔记

利用存储类存储器SCM(类似PM)优化KV存储的成本,作为DRAM和闪存的中间硬件,保证性能的同时降低成本。作者对Facebook上的所有基于闪存的KV存储部署进行分析,确定优化目标,为优化读性能;确定了RocksDB最大的内存消耗组件,用于提供读请求的块缓存,设计利用DRAM和SCM的延迟差异的混合分层缓存。DRAM充当第一层缓存,存储频繁访问的数据,SCM充当第二层缓存,存储不太经常访问的数据;设计了管理DRAM和SCM之间数据传输的缓存接纳和内存分配策略。

日志结构存储

Leveraging NVMe SSDs for Building a Fast, Cost-effective, LSM-tree-based KV Store

TOS 2021 Paper 泛读笔记

针对如何利用NVMe SSD提升基于LSM树的KV存储。本文提出了SpanDB,适用于流行的RocksDB系统,以选择性的利用高速SSD。包括3个创新点:(1)协同利用DRAM、NVMe SSD和SATA SSD,将MemTable存储在DRAM,将预写日志(WAL)和LSM树顶层存储在NVMe SSD(速度磁盘,SD),将LSM树底层存储在SATA SSD(容量磁盘,SD)。(2)通过SPDK提供高速、并行的WAL写入。使用基于轮询I/O的异步请求处理,消除了不必要的同步,使I/O等待与内存处理重叠,自适应地协调前台/后台I/O。(3)为了简化SD和CD之间的数据迁移,引入TopFS,一种精简的文件系统,在SPDK I/O之上提供了文件接口包装。

Kreon: An Efficient Memory-Mapped Key-Value Store for Flash Storage

TOS 2021 Paper 泛读笔记

针对在SATA SSD和NVMe SSD上的LSM Tree优化问题,随机I/O不再是性能瓶颈,CPU和I/O开销限制LSM Tree的性能。本文提出Kreon,针对基于闪存的键值存储,利用I/O随机性换取低CPU开销和低I/O放大。(1)采用和LSM Tree类似结构,但每层内用B Tree组织,因此层间合并时只需部分合并,不需要对整个SSTable进行合并,从而降低I/O放大和CPU开销,但引入了更多小的随机I/O。(2)使用内存映射执行内存和设备之间的所有I/O,用内存映射取代了缓存查找,消除缓存开销和数据复制。但会导致许多小I/O,且不能提供任何类型的一致性、可恢复性。为此,本文实现了内存映射I/O路径kmmap,消除了在内核和用户空间中使用DRAM缓存,消除了内核和用户之间的数据拷贝,并消除了指针转换。

An LSM Tree Augmented with B+ Tree on Nonvolatile Memory

TOS 2024 Paper 泛读笔记

针对LSM树压缩的优化。本文提出了LAB-DB,在NVM上用一对B+树扩充现有的LSM树,利用NVM上的B+树进行原位更新,节省空间同时减少了压缩频率和压缩时间,从而降低了写入的压缩开销和读取的存储访问次数。

gLSM: Using GPGPU to Accelerate Compactions in LSM-tree-based Key-value Stores

TOS 2024 Paper 泛读笔记

针对LSM树压缩的优化。本文提出gLSM,充分利用GPGPU内部的并行性和计算能力来提高压缩性能。包括以下模块:数据传输管理、并行编码和解码、面向GPGPU的排序和重复数据消除、任务协作。本文实现了一个运行时驱动程序,以促进CPU和GPGPU之间的协作,并行执行CPU侧任务卸载和GPGPU侧压缩。同时设计了键值分离方法,以减少从CPU侧存储器到GPGPU对应存储器的传输数据量。

MiDAS: Minimizing Write Amplification in Log-Structured Systems through Adaptive Group Number and Size Configuration

FAST 2024 Paper 泛读笔记

针对日志结构存储GC开销高的问题,如何降低写放大。本文提出MiDAS,采用多组的链式结构,按年龄隔离数据块。(1)使用分析模型,更新间隔分布(UID)和基于马尔可夫链的分析模型(MCAM),根据工作负载I/O模式动态调整组的数量及其大小,从而最大限度地减少数据块的移动。(2)将热块隔离到专用的HOT组,其中的HOT大小根据工作负载进行动态调整,以最小化总体写放大。

Building an Efficient Key-Value Store in a Flexible Address Space

EuroSys 2022 Paper 泛读笔记

针对数据管理应用程序需要按序排序数据,但现有文件系统无法支持原地更新,导致大量的数据重写和为支持原地更新的额外间接层开销。本文提出基于B+Tree优化的FlexTree,将地址空间移动时间减少到 𝑂(log 𝑁) ;基于FlexTree提出FlexSpace,基于日志的空间管理以提高写入效率,基于数据访问局部性执行碎片整理以降低成本,基于逻辑日志记录 [50, 67] 以低成本提交元数据更新;在FlexSpace上实现了FlexDB,在持久的灵活地址空间中维护所有 KV 对的完全排序顺序,无需使用复杂的间接方式或进行密集的数据重写。

SpanDB: A Fast, Cost-Effective LSM-tree Based KV Store on Hybrid Storage

FAST 2021 Paper 泛读笔记

针对NVMe SSD和SATA SSD结合的异构存储系统,优化基于LSM-tree的KV存储。作者提出将大部分数据存储在SATA SSD上,将LSM树的顶层和预写式日志(WAL)存储在NVMe SSD上;通过SPDK实现快速且并行的访问,绕过Linux I/O堆栈,优化WAL写入;设计基于轮询I/O的异步请求处理流水线,去除了不必要的同步,将I/O等待与内存处理重叠,并自适应地协调前台/后台的I/O;根据KV工作负载自适应地对数据分区,利用SATA SSD的带宽缓解写放大。

Revisiting Secondary Indexing in LSM-based Storage Systems with Persistent Memory

ATC 2023 Paper 泛读笔记

针对PM上基于LSM的存储,如何高效支持二次索引。要解决的两个问题是:二次索引KV对很小,LSM树查找低效;二次索引KV对不唯一,需要搜索LSM树的所有级别,还需要检查主表来验证。为此设计PERSEID,有三个关键技术:为二级索引在PM上设计数据结构,实现高性能的插入和查询。利用基于PM的索引,并通过特定的值层来增强,该值层考虑了PM和二次索引的特性,用混合对数结构方法和B+-Tree叶节点的方式工作,对PM和二次索引友好;轻量级的混合PM-DRAM和基于哈希的验证方法,使用PM上的哈希表来记录最新版本的主键,在DRAM上采用了验证哈希表的小镜像,不仅节省了DRAM内存空间,还减少了缓存污染;设计两种优化,以加速非索引查询。直接定位带有附加辅助信息的KV对,减少索引操作,并通过匹配分层压缩策略绕过布隆过滤器检查。用多个线程并行查询。

REMIX: Efficient Range Query for LSM-trees

FAST 2021 Paper 泛读笔记

针对LSM树同时优化读写性能的问题,现有方法通过压缩提升读性能,但会导致读放大或写放大。作者利用新存储硬件的性能,随机读和顺序读性能相近,因此提出构建逻辑排序视图优化范围查询,因为减少了真正的压缩操作,同时减少了写放大。

ADOC: Automatically Harmonizing Dataflow Between Components in Log-Structured Key-Value Stores for Improved Performance

FAST 2023 Paper 泛读笔记

对LSM-KV中写停顿现象进行分析,发现之前的分析原因是有效的,但并不普遍适用。通过实验分析写停顿的原因是数据溢出,指由于数据流入其中一个组件而导致LSM-KV系统中一个或多个组件迅速扩展。提出了ADOC(自动数据溢出控制)的调整框架,在组件之间平衡和协调数据流,以调整系统配置:线程数和批处理大小,而不是简单地等待溢出的数据按默认方式消耗。从而缓解写停顿的问题。

分离式内存

DEX: Scalable Range Indexing on Disaggregated Memory

arXiv Paper 泛读笔记

针对分离式内存环境下的可扩展索引,面临基本的缓存、无原则的卸载和过度不一致的问题。本文提出用于内存分解的可扩展B+树DEX,包括3个技术:(1)计算端逻辑分区:每个计算服务器在逻辑上复制一部分密钥,内存服务器仍然存储全局可寻址的共享空间。(2)轻量级缓存:利用应用程序级别的信息进行路径感知缓存,在缓存中保留从根节点到较低级别节点的频繁访问路径。父节点缓存后允许子节点缓存,父节点在其所有子节点被逐出后再逐出。(3)机会主义卸载:运行时跟踪内存服务器上的资源可用性,当完成时间可以最小化时,才会卸载索引操作。

RACE: One-sided RDMA-conscious Extendible Hashing

TOS 2022 Paper 泛读笔记

针对分离式内存下的哈希设计,现有方法受限于远程访问的并发控制和锁争用、额外RDMA访问等。本文提出单边RDMA感知的可扩展哈希索引RACE,包括3个关键技术:(1)利用可扩展的调整大小方案,RACE哈希表由多个子表和用于索引子表的目录组成。将目录缓存在客户端,从而消除了对目录的额外RDMA访问。提供了简单高效的过时读取方案,以保证访问数据的正确性,并允许在调整大小期间执行请求。(2)将子表设计为单侧RDMA感知(RAC),实现了所有索引请求(搜索、插入、删除、更新)都可以使用单侧RDMA动词执行,同时在最坏的情况下具有恒定的时间复杂度。(3)利用无锁远程并发控制方案,实现了除插入失败外的所有索引请求都以无锁的方式并发执行。

Scaling Up Memory Disaggregated Applications with Smart

ASPLOS 2024 Paper 泛读笔记

对RNIC内部架构进行深入分析,发现内存分解应用吞吐量受到三个主要的瓶颈的限制:(1) 门铃寄存器的隐式争用;(2) 由于过多未完成的工作请求引起的缓存崩溃; (3) 由于CAS重试失败导致的IOPS浪费。针对3个问题作者分别提出解决方案:通过通用的线程感知RDMA资源(例如门铃寄存器)分配机制,来解决门铃寄存器的隐式争用;提出了一种基于信用的节流策略,其中深度阈值是根据当前工作负载自动确定的,解决由于过多未完成的工作请求引起的缓存崩溃;提出了一种自适应退避技术,抑制不成功的CAS(compare-and-swap)操作的并发性,解决CAS重试失败导致的IOPS浪费。

DiLOS: Do Not Trade Compatibility for Performance in Memory Disaggregation

EuroSys 2023 Paper 泛读笔记

针对基于分页的分离式内存系统优化。提出DiLOS:(1)为内存分解构建自己的数据路径,而不使用缓慢的内核交换子系统,显著降低延迟;(2)结合性能优化技术,如预取、后台写回和快速RDMA通信;(3)提供API以指南的形式集成应用程序语义,实现了两个指南示例:支持应用程序感知的预取器,使用指南作为提高性能的提示。减少带宽的内存回收器,在计算节点和存储器节点之间迁移页面时,使用来自用户级存储器分配器的提示来排除页面中未使用的区域。

分层内存

MTM: Rethinking Memory Profiling and Migration for Multi-Tiered Large Memory

EuroSys 2024 Paper 泛读笔记

针对多层大内存系统的页面管理,现有方法受限于内存分析开销高、页面迁移效率低、不支持大页的问题。本文提出MTM,应用程序透明的多层内存管理框架,包括3个技术:(1)将分析开销与分析机制联合。分析质量和开销可以根据空间和时间局部性的变化而成比例地分布,对于变化较大的内存区域,可以强制执行更多的页表条目(PTE)扫描或页面分析。(2)通用的页面迁移策略。基于内存分析建立所有层中所有内存区域的全局视图。提出快速升级和慢速降级策略:将热页直接提升到最高层,减少了数据在各层之间的移动;当页面从顶层迁移出时,移动到具有可用空间的下一个较低层。提出快速迁移机制:根据迁移页面的读/写模式,动态选择异步页面复制的方案和同步页面迁移方案,以最大限度地减少迁移时间。(3)引入大页感知。在内存区域的拆分/合并过程中页面对齐,完全支持大页和THP。

Wormhole Filters: Caching Your Hash on Persistent Memory

EuroSys 2024 Paper 泛读笔记

针对利用持久内存的近似成员关系查询(AMQ)数据结构(如Bloom过滤器),现有方法随机访问和顺序写入次数多,为了支持恢复开销高,不适用于持久内存。本文提出Wormhole Filters,设计了新数据结构距离指纹对和基于桶的虫洞哈希表,通过减少随机访问和顺序写入,减少了日志记录的数量,以适用于持久内存。

Unified Holistic Memory Management Supporting Multiple Big Data Processing Frameworks over Hybrid Memories

TOCS 2022 Paper 泛读笔记

针对混合存储器上运行的大数据处理系统,包括用于数据处理的Spark和用于数据存储的QuickCached,如何优化混合存储器的使用。本文基于对Spark和QuickCached的分析,发现数据有可静态观察的访问模式,如频繁访问、很少访问。因此提出Panthera,根据语义感知在混合内存上进行内存管理。(1)对Spark和QuickCached分别设计静态分析器,根据源码分析其变量的访问模式。(2)根据静态分析的标记,运行时在DRAM和NVM间进行内存分配和迁移。(3)运行时进行动态访问模式评估,根据评估结果动态迁移。

Re-architecting I/O Caches for Emerging Fast Storage Devices

ASPLOS 2023 Paper 泛读笔记

针对使用超快存储设备作为SSD的缓存层场景。本文提出了一个实验评估框架,以系统地检查新兴超快设备的I/O缓存模块的行为。提出了几种增加IOPS降低尾延迟的设计思路:(1)将缓存查找线程的数量和CPU核数量匹配并使用细粒度锁。(2)延迟提升未命中的块可以更好的利用后端SSD阵列。(3)延迟刷新缓存中的脏快,绕过缓存直接写入后端SSD,避免缓存争用。

Johnny Cache: the End of DRAM Cache Conflicts (in Tiered Main Memory Systems)

OSDI 2023 Paper 泛读笔记

针对DRAM和PMEM的分层内存系统,如何优化内存分配,基于硬件的分配方法,用DRAM作为PMEM的缓存,但缓存冲突率高。本文提出Johnny Cache,低开销冲突避免技术。(1)静态技术,在页面分配时避免页面间冲突。在分配新的PMEM物理页时,从DRAM缓存位置出发,先选择未使用的DRAM位置,随后将PMEM页分配到该位置。(2)动态技术,依赖于监视内存访问来区分冷热页面。当同一个缓存中出现两个热页,将其中一个热页重新映射到其他缓存上。

Memtis: Efficient Memory Tiering with Dynamic Page Classification and Page Size Determination

SOSP 2023 Paper 泛读笔记

针对分层内存,现有方法对冷热页面划分不准确、不能动态调整页面大小。本文提出Memtis,可以动态确定页面位置和页面大小。(1)提出内存访问分析器。使用Intel PEBS(Processor Event-Based Sampling)工具实现,对LLC load misses和store指令进行采样,获取物理地址,统计页访问计数,将其表示在页面访问分布直方图中。(2)动态迁移冷热页面。根据页面访问分布直方图动态调整阈值,区分冷热页面,热页面常驻快速层,有额外空间容纳冷页面。将冷热变化页面计时迁入或迁出快速层。(3)动态确定页面大小。默认使用大页,根据访问频率评估大页的访问倾斜度和拆分收益,选取拆分收益大的大页进行拆分。

vTMM: Tiered Memory Management for Virtual Machines

EuroSys 2023 Paper 泛读笔记

针对虚拟化场景的分层存储系统,核心思想是将热页面放在快速内存,冷页面放在慢速内存,通过页面跟踪、分类和迁移来实现这一目标。本文提出了vTMM,包括4个创新点:(1)通过页面修改日志记录(PML)和多级队列设计来跟踪内存访问。只扫描PML记录的脏的客户页表(GPT),减少跟踪页面数量。采用多级队列,降低频繁访问页面的跟踪频率。(2)量化页面温度,并使用桶排序进行细粒度页面分类。页面的温度是其读写频率的加权组合,其中权重分别来自读和写的成本。根据页面温度进行桶排序,并根据VM快速内存的大小分配热集。(3)使用PML执行页面迁移。并行复制页面,在迁移后主动填充Intel扩展页表(EPT)的新映射,以避免EPT页错误引起的VMTraps。(4)通过二维页表透明地调整VM内存的大小来避免资源过度使用。用共享内存池来动态分区内存,动态迁移慢速内存的分配,提高了慢速内存的利用率和整体性能。

边缘计算

H-Container: Enabling Heterogeneous-ISA Container Migration in Edge Computing

TOCS 2022 Paper 泛读笔记

针对边缘计算场景中,如何支持异构集体系结构(ISA)的计算节点间迁移服务。本文提出了H-Container,支持跨不同ISA的计算节点,迁移本机编译的容器化应用程序。有三个优势:(1)高度兼容,不需要用户源代码,也不需要编译器工具链修改;(2) 易于部署,在用户空间实现,没有操作系统或系统管理程序依赖性;(3)基本上符合Linux,可以迁移大多数Linux软件,包括服务器应用程序和动态链接的二进制文件。针对广泛使用的x86-64和arm64 ISA,增强了Linux的用户空间检查点和恢复(CRIU)工具,并集成到Docker中,允许在不同ISA的主机之间迁移容器。引入了一种转译器,获取本机编译的应用程序二进制文件,并使用反汇编程序和提升工具将其转换为中间表示(IR)。并对IR进行检测,将其编译为多个ISA的本机编译二进制文件。这样的二进制文件是用额外的元数据构建的,这些元数据可以在运行时实现跨ISA迁移。

R2: A Distributed Remote Function Execution Mechanism With Built-In Metadata

TON 2023 Paper 泛读笔记

针对边缘计算场景,如何以分布式的方式选择最优执行者,以获得执行任务的最小端到端延迟。作者利用命名数据网络(NDN),设计了包括数据、函数名、函数参数的命名结构;根据客户端函数请求到数据源检索数据,同时根据检索过程中的数据摘要、节点状态、网络条件选择执行器;提出了停止条件,减少执行器的选择范围和选择时间。

数据库

Removing Double-Logging with Passive Data Persistence in LSM-tree based Relational Databases

FAST 2022 Paper 泛读笔记

针对基于LSM树的数据库,如何避免双重日志记录问题。作者提出了被动数据持久性方案(PASV),在LSM层完全删除预写日志(WAL),包括三个部分:创建了一个特殊的数据结构,称为Flush Flag,以传递关键的RDB层语义,包括关键数据持久点、每个KV项的逻辑序列号等;提出了被动内存缓冲区刷新策略,为每个LSM树传递一个刷新标志及其在存储引擎中的常规刷新操作,在不需要显式刷新内存缓冲区的情况下,避免刷新造成的性能影响;开发了基于Epoch的持久性(EBP)策略来确定全局数据持久性点,保证只需要执行部分数据恢复即可恢复必要的数据,并消除系统崩溃前已经持久化的冗余KV操作。

Distributed Transactions at Scale in Amazon DynamoDB

ATC 2023 Paper 泛读笔记

目标在不影响客户所期望的规模、可用性、耐用性和可预测性的情况下,将事务添加到DynamoDB。作者时间戳排序将事务设计为具有乐观并发控制的单次操作,以确保事务既可串行化又可扩展。同时实现各种事务要求:事务作为单一请求提交;事务依赖于事务协调器,而非事务操作则绕过两阶段协调器;事务原地更新项目;事务不获取锁;事务使用时间戳按顺序排序。

Evolution of Development Priorities in Key-value Stores Serving Large-scale Applications: The RocksDB Experience

FAST 2021 Paper 泛读笔记

对广泛使用的RocksDB发展方向进行总结 ,根据实际生产中面临的挑战不断优化RocksDB性能。资源优化目标从写放大演变到空间放大,再到CPU利用率;资源分配需要在不同的RocksDB实例之间进行管理;数据格式需要保持向前和向后兼容,以允许增量式的软件部署;需要适当支持数据库复制和备份;需要在系统的每一层次上更早地检测到数据损坏错误。

虚拟机

Efficient Memory Overcommitment for I/O Passthrough Enabled VMs via Fine-grained Page Meta-data Management

ATC 2023 Paper 泛读笔记

针对虚拟机内存过度使用场景,I/O透传导致的DMA故障问题。现有方法会由于内存备份/回收导致性能低,或不能保证DMA安全,或引入高通信开销。作者提出V-Probe,利用对客户代码的分析主动检测客户空闲页面,避免了与客户的通信开销;利用细粒度的页面元数据管理,不仅管理回收的空闲页面的内存映射,还监视它们对应的页面元数据,使得能够对客户端内存分配事件做出反应并防止潜在的DMA失败。

局限性:需要对客户端源码进行分析来检测客户空闲页面,在云场景不适用。

Making Dynamic Page Coalescing Effective on Virtualized Clouds

EuroSys 2023 Paper 泛读笔记

针对虚拟化云场景,在主机端和访客端有不同的TLB,当二者的页面无法对其时会显著降低TLB性能。本文提出Gemini,用于指导访客和主机中大页的形成和分配。一层的内存管理会感知到另一层的大页,并仔细管理与这些大页对应的内存区域。指导页面合并和大页分配时,首先考虑对应区域,然后再考虑其他内存区域。由于大页优先从这些区域形成和分配,因此可以增加由主机大页支持的访客大页,而不会加剧大页带来的不利影响。

故障检测

Model Checking Guided Testing for Distributed Systems

EuroSys 2023 Paper 泛读笔记

针对分布式系统的故障检测。作者提出Mocket,需要给定目标分布式系统的TLA+规范,分析规范生成的验证状态,为系统实现生成测试用例。将 TLA+ 规范映射到系统实现中的相应代码之后,进一步确定性地强制系统执行遵循从验证规范生成的测试用例。在系统测试期间,监视系统的运行时状态并将其与 TLA+ 规范中的相应验证状态进行比较。并发现目标分布式系统中的错误。

缓存

ScaleCache: A Scalable Page Cache for Multiple Solid-State Drives

EuroSys 2024 Paper 泛读笔记

随着SSD数量的增加,Linux存储栈中的页面缓存会限制SSD的并行性,瓶颈在于XArray中锁开销和串行化的脏页flush操作。本文提出ScaleCache,用于提升SSD可扩展性,主要包括两个技术:(1)提出基于XArray的页面缓存并发数据结构(ccXArray),以实现对页面缓存的无锁并发访问和更新。(2)提出直接页面刷新(dflush),以并行和机会主义的方式将脏页推送到存储设备。

TTLs Matter: Efficient Cache Sizing with TTL-Aware Miss Ratio Curves and Working Set Sizes

EuroSys 2024 Paper 泛读笔记

本文针对云环境中缓存大小调整工具的优化,如何在未命中率曲线(MRC)和工作集大小(WSS)算法中增加存活时间(TTL)信息。本文调整了Mattson、Olken和Shards算法来处理TTL,并扩展了HLL以适应过期对象的删除。进一步实现了高效的WSS估计和启用TTL的CounterStacks MRC生成算法。

CrossPrefetch: Accelerating I/O Prefetching for Modern Storage

ASPLOS 2024 Paper 泛读笔记

针对缓存预取,现有方法受限于接口有效性低、存在并发瓶颈、难以协调操作系统和应用程序间缓存状态。本文提出CrossPrefetch,跨层I/O预取机制,在操作系统和用户运行时之间设计跨层堆栈,操作系统向用户运行时提供缓存可见性,用户运行时提供并发和细粒度的预取。包括三个技术:(1)在用户空间和操作系统间分解任务:Cross-OS在文件缓存树旁维护每个inode位图,以评估预取的有效性;Cross-Lib接收信息,执行预读、导出文件的缓存位图状态、导出操作系统级遥测,通过信息优化并减少了预取系统调用。(2)将常规I/O和预取I/O隔离。为了适应线程共享和对文件区域的非冲突访问,通过范围树,使线程能够查询缓存状态,通过轻量级访问模式预测,Cross-Lib根据每个索引节点的缓存状态调整预取请求。(3)通过每文件缓存感知,根据可用的空闲内存在主动预取和逐出之间切换。Cross-OS允许更大的预取请求,根据可用内存动态调整预取限制。

Lightweight Robust Size Aware Cache Management

TOC 2022 Paper 泛读笔记

针对不同大小的对象,如何使用统一的低开销缓存策略进行管理。本文扩展了忽略大小的W-TinyLFU缓存策略,来处理可变大小的项目。修改了3个部分:(1)新对象可能比Window Cache大,则直接提交给TinyLFU过滤器,以确定它是否可以进入Main Cache。(2)需要考虑多个潜在的Window受害者,他们的总大小足以为新对象腾出空间。(3)在TinyLFU中,可能有多个Window受害者,每个Window受害者都与总和大于其大小的(一个或多个)Main受害者进行比较。

Pattern-Based Prefetching with Adaptive Cache Management Inside of Solid-State Drives

TOS 2022 Paper 泛读笔记

针对SSD的预取,如何设计独立于操作系统和应用程序的数据预取机制。本文提出了支持自适应缓存管理的基于模式的预取 Cacher-SSD,在SSD的闪存转换层运行。主要包括两个技术:(1)从读请求的历史中挖掘I/O请求间的相关性,以得到经常一起读取的地址集合,在当前时间窗口中进行模式匹配以指导数据预取。(2)综合考虑读/写比率、历史预取精度,构建了一个数学模型,以支持自适应缓存管理。根据实际情况调整预取缓存和写入缓存的分区。

A Universal SMR-aware Cache Framework with Deep Optimization for DM-SMR and HM-SMR Disks

TOC 2023 Paper 泛读笔记

针对SMR设备的缓存框架,如何适应各种SMR设备,同时实现更高的读写性能。本文提出SMR感知缓存框架SAC+,同时适应DM-SMR和HM-SMR两种设备。通过分析将缓存优化目标设为最小化读取-修改-写入(RMW)计数,从而实现最佳的SMR I/O时间。整体将缓存分为两组:干净块(用于读请求)和脏块(用于读写请求),包括3个组件:(1)区域选择器:管理脏块,根据脏块的目标区域对脏块进行逻辑分组。执行驱逐时,基于可能释放块选择一个目标区域,并驱逐与该区域相关联的脏块。干净块直接用LRU进行管理。(2)组选择器:执行驱逐时,计算每个组的逐出成本,逐出最低成本组中的块。(3)SMR设备代理:使用设备访问接口将I/O请求路由到目标SMR设备,并向顶级提供统一的设备抽象。

Boosting Cache Performance by Access Time Measurements

TOC 2023 Paper 泛读笔记

针对缓存策略的优化,现有方法不会考虑不同环境下未命中的访问时间,最大化缓存命中率不一定能最小化平均访问时间。本文测量了缓存命中和未命中的访问时间,由此设计访问时间感知缓存策略,对TinyLFU和LRU进行优化,允许访问频率低但未命中访问时间高的项替代频率高但未命中访问时间低的项,实现降低整体平均访问时间。

FIFO Queues are All You Need for Cache Eviction

SOSP 2023 Paper 泛读笔记

针对缓存算法优化,本文发现在偏斜工作负载中的大多数对象只会在短窗口内访问一次。设计了S3-FIFO,通过一个小的FIFO队列,过滤掉大多数进入主缓存的对象,从而提供有保证的降级速度和高的降级精度。使用三个FIFO队列:小FIFO队列(S)、主FIFO队列(M)、幽灵FIFO队列(G)。S使用10%的缓存空间,M使用90%的高速缓存空间,G存储与M相同数量的幽灵条目(无数据)。首次访问插入S队列频率为0,再次访问频率加一,S满时根据访问次数逐出到G或M队列。G中元素再次访问时插入M队列,长时间没访问则逐出。M中元素每次访问则访问频率加一,M满时循环减少访问频率并逐出频率为0的元素。

Adaptive Online Cache Capacity Optimization via Lightweight Working Set Size Estimation at Scale

ATC 2023 Paper 泛读笔记

针对在线环境下如何提高缓存效率。本文设计轻量级的数据结构Cuki,在低开销下,用滑动窗口在线估计动态工作集大小(WSS)和项目重复率(IRR),利用逐项目的细粒度跟踪机制增加准确率。对算计进行细粒度并发控制,通过机会老化,降低高并发场景中的锁争用风险。采用分段锁和基于两阶段的插入机制,保证并发访问的数据一致性。利用Cuki在线估计缓存未命中率曲线(MRC),从而在线调整缓存大小以适应当前工作负载。

FrozenHot Cache: Rethinking Cache Management for Modern Hardware

EuroSys 2023 Paper 泛读笔记

本文对缓存算法进行优化,发现多数工作负载中数据高度倾斜,且短期热点稳定。本文提出FrozenHot,将缓存空间划分为两部分:冻结缓存和动态缓存。冻结缓存通过消除缓存管理和锁,以最小的延迟为热对象的请求提供服务。冻结缓存不随时更新,而是定期重建以适应工作负载的变化,使用轻量级后台控制器,根据访问模式、并发级别和缓存大小自适应地选择冻结缓存大小。动态缓存利用现有的缓存设计来实现工作负载自适应。

网络存储系统

Rio: Order-Preserving and CPU-Efficient Remote Storage Access

EuroSys 2023 Paper 泛读笔记

针对网络存储系统由于顺序执行导致CPU和IO性能下降。本文提出Rio,一个保序网络存储堆栈。允许异步处理有序写入、合并连续有序请求、使用顺序保留技术来强制执行持久性顺序。原理是添加了特殊结构,嵌入在原始请求中,使乱序执行的请求随时可以重建原始顺序。

提出两个建议:I/O堆栈应该利用现代NIC和SSD的异步接口(即多个深层硬件队列和异步DMA引擎),以充分利用其高带宽;尽管块合并对于超低延迟SSD上的本地I/O堆栈来说是昂贵的,但值得在块合并中投入一些CPU周期,以显著减少网络上的控制操作(例如,RDMA SEND),并进一步提高CPU和I/O效率。

调度

Halife: An Adaptive Flowlet-based Load Balancer with Fading Timeout in Data Center Networks

EuroSys 2024 Paper 泛读笔记

针对数据中心网络的负载均衡问题,现有基于flowlet的方法受限于FTV,难以同时适应不同负载。本文提出Halflife,它利用衰退的FTV,根据交换机转发的包的数量衰减FTV,从而在不同的工作负载下迅速重新路由传输。对长流自然地被分配较小的FTV,使它们更灵活地调度寻求更高的总吞吐量;短流会自动获得更大的FTV,避免无序问题;而且长流的FTV较小,可以快速移动到其他路径,从而减少拥塞。

Multi-objective Optimization of Data Placement in a Storage-as-a-Service Federated Cloud

TOS 2021 Paper 泛读笔记

针对云联盟场景下,在多个云中如何进行数据放置的问题。本文将数据放置建模为多目标约束优化问题,提出了CDP-NSGAIIR,基于NSGAII的具有注入和修复功能的约束数据放置数学模型。考虑以下参数:本地基础架构、联合云环境、客户工作负载、SLA、存储迁移和延迟成本。包括两个关键技术:(1)注入,旨在提高初始解的质量。将多目标优化问题聚合和加权为一个线性函数,转为单目标优化问题,用CPLEX计算精确解,并注入NSGAII的初始种群。(2)修复,确保解决方案服从问题约束,在每次迭代中修复所有个体,将不可行的解转化为可行的解,大大缩短了NSGAII的执行时间。

Apache Nemo: A Framework for Optimizing Distributed Data Processing

TOCS 2021 Paper 泛读笔记

分布式数据处理的调度和通信优化问题,如何利用资源和数据特性,进行细粒度优化并保证正确性。本文提出了 Nemo,用于分布式数据流处理的优化框架,包括三个关键技术:(1)将应用转变为中间表示(IR)的有向无环图(DAG),其中顶点表示逻辑运算,边表示表示数据依赖性。提供了两种类型转换方法:重塑方法可以插入一组Nemo所知的语义;注释方法设置每个顶点和边的执行属性,以配置细粒度的调度和通信。(2)编译器优化过程,将IR DAG作为输入并调用其转换方法,可以组合并应用于不同的应用程序。(3)运行时扩展,与底层运行时集成以应用IR DAG转换。当通过运行时DAG调度IR DAG的IR顶点时,调度器扩展应用了各种调度策略。在作业执行期间重写运行时DAG,以应用运行时优化。

It’s Hard to Share: Joint Service Placement and Request Scheduling in Edge Clouds with Sharable and Non-sharable Resourc

ICDCS 2018 Paper 泛读笔记

针对移动边缘计算场景中,不同用户的资源需求包括可共享资源和不可共享资源,如何在这种条件下实现最优的服务放置和请求调度。本文通过大量证明表明以上问题是NP难的;于是提出了贪婪服务布局与最大流相结合的方法,得到最优的1/2近似的整体解;进一步提出贪婪服务放置与贪婪请求调度相结合的启发式算法;基于线性规划(LP)松弛和舍入的启发式算法。

Joint Optimization of Chain Placement and Request Scheduling for Network Function Virtualization

ICDCS 2017 Paper 泛读笔记

在网络功能虚拟化(NFV)场景的调度,实现最大化服务中每个节点的平均资源利用率,最小化每个请求的平均响应延迟。本文将VNF链放置问题作为NP难的装箱问题的一个变体,并基于开放Jackson网络的概念对请求调度问题进行建模。针对两个需求分别提出方法,提出优先级驱动的加权算法 BFDSU 来提高资源利用率,提出启发式算法 RCKK 来减少响应延迟。

局限性:两个方法是分开的,不能同时实现高资源利用率和低延迟两个目标。

Understanding and Optimizing Workloads for Unified Resource Management in Large Cloud Platforms

EuroSys 2023 Paper 泛读笔记

对大型数据中心的统一调度工作负载进行了全面的分析,提出了生产工作负载的一些特征:统一调度尽力而为(BE)和延迟敏感(LS)应用程序,可以提供性能保证和高资源利用率;目前生产环境总体资源利用率很低,平均不到30%;现有调度器有很长的调度延迟,并且调度延迟遵循重尾分布;现有的资源预测器不准确,往往会严重高估;同一应用程序中的任务表现相近,可以根据相应物理主机上的资源争用来很好地分析任务的运行性能;通过机器学习算法,可以根据QPS、pod资源利用率、主机资源利用率、相对于pod和主机资源使用率,来配置每个延迟敏感应用的压力停止信息(PSI)。

设计了一个统一调度器Optum,关键之处在于基于机器学习实现了准确的资源使用预测。基于此构建了一个全局优化框架,以最大限度地提高资源利用率,同时确保应用程序性能。同时优化可扩展性,降低调度开销。

DREAM: A Dynamic Scheduler for Dynamic Real-time Multi-model ML Workloads

ASPLOS 2024 Paper 泛读笔记

针对实时多模型ML(RTMM)工作负载设计调度器,需要同时考虑多种挑战:异构的ML模型;动态性;数据和控制依赖性;设备计算和能量受限;实时要求。本文提出调度器DREAM,可以有效地处理RTMM系统中实时性、并发性、多模型、多任务的挑战。(1)对于实时性和并发性,提出了MapScore评分指标,同时考虑了紧迫性和公平性。(2)对于级联模型的复杂依赖,跟踪输入帧内和多个帧之间的模型依赖性。(3)对于动态性,开发了具有可调参数的动态调度方法,快速有效地适应工作负载的变化。(4)支持各种基于加速器的ML系统,包括具有异构大小和数据流的多加速器。(5)提出抢先丢帧方法,当预计会违反截止日期时,该方法会提前丢帧,有助于跨帧和模型进行全局优化。(6)超网切换,利用权重共享超网,在重系统负载下动态切换到较轻的模型变体来改进ML系统调度器。 

AlNiCo: SmartNIC-accelerated Contention-aware Request Scheduling for Transaction Processing

ATC 2022 Paper 泛读笔记

针对事务处理中大量请求如何调度到多核CPU。本文提出了AlNiCo,基于SmartNIC的请求调度的事务处理系统。采用软硬件结合的方式:(1)以硬件友好的方式描述争用,将系统状态分为三种类型,在SmartNIC上通过向量计算调度目标CPU。(2)软件反馈,软件定期采样全局状态,并更新NIC上的调度器,从而处理热点变化负载。

Layer Aware Microservice Placement and Request Scheduling at the Edge

IEEE INFOCOM 2021 Paper 泛读笔记

针对边缘计算场景中基于容器的微服务技术,基于容器的特点,不同微服务可以分层并且共享共同的基本层。本文提出层感知的微服务放置和请求调度(LA-MPRS),将同一位置的容器进行层共享,将问题公式化为整数线性规划问题,设计了保证近似率的迭代贪婪算法进行请求调度。

Staged Memory Scheduling: Achieving High Performance and Scalability in Heterogeneous Systems

ACM SIGARCH Computer Architecture News 2012 Paper

针对集成CPU-GPU系统,避免来自不同核请求间相互干扰。本文提出分级内存调度程序(SMS):首先根据行缓冲区的位置对请求进行分组。第二阶段仅关注应用程序间请求调度。这两个阶段强制执行有关性能和公平性的高级策略。最后一个阶段由简单的每个组FIFO队列(每个组内没有进一步的命令重新排序)和仅处理低级DRAM命令和定时的直接逻辑组成。

生产环境系统

Thesios: Synthesizing Accurate Counterfactual I/O Traces from I/O Samples

ASPLOS 2024 Paper 泛读笔记

针对大型数据中心中,如何以部分采样的I/O轨迹合成准确的全分辨率I/O轨迹。本文提出Thesios,利用多个下采样I/O轨迹合成全分辨率I/O轨迹。合成代表性I/O轨迹:(1)利用现有的采样基础架构,收集下采样I/O轨迹。(2)组合具有相似磁盘特征的磁盘的I/O样本。利用I/O轨迹分析磁盘特征,如容量、热/冷数据比率、填充度。(3)重新加权I/O跟踪,以避免偏差和偏斜,并补偿由于突发而丢失的样本,生成服务器级别I/O跟踪。(4)为获得磁盘级别的到达时间和延迟,考虑排队延迟和特定于请求序列的基于优先级的重排序。合成假设的全分辨率I/O轨迹:使用轻量级服务器模拟器进行评估,或使用成熟的服务器模拟器执行轨迹重放。

Hybrid Block Storage for Efficient Cloud Volume Service

TOS 2023 Paper 泛读笔记

针对生产环境中的云服务,如何在不影响性能的情况下降低成本。本文提出了分布式SSD-HDD混合存储结构Ursa,将主副本存储在SSD上,将备份副本复制到HDD上,不使用SSD作为缓存层。包括以下技术:(1)通过自适应日志,将小型随机写入转换为日志追加,异步合并到HDD,从而弥补SSD和HDD之间的性能差距。(2)为了提高效率,大型顺序写入直接在HDD上执行(绕过日志)。(3)设计了高效的范围优化合并树(ROMT)来索引日志,将连续范围的键组合为单个复合键{offset,length},支持快速日志查询。(4)对磁盘并行性优化,利用Ursa中的多级并行性,包括:磁盘上的并行I/O;盘间分条、无序执行和无序完成;在网络流水线中,提高IOPS和吞吐量。(5)设计Ursa的复制协议,以满足强一致性要求。还设计了功能丰富的控制器和高效的机制,用于在线组件升级和并行开发。

Block-level Image Service for the Cloud

TOS 2024 Paper 泛读笔记

针对容器启动的优化,本文提出了针对分离式基础架构的数据加速图像服务(DADI),包括以下优化点:(1)远程镜像的细粒度按需传输。(2)具有高效编解码器和压缩感知缓存的在线解压缩。(3)基于拉取的预取机制,允许主机以图像层的粒度预先读取必要的图像数据。(4)基于P2P的去中心化图像共享架构,以平衡所有参与主机之间的流量。(5)用于处理突发工作负载的拉推协作块预取。

What’s the Story in EBS Glory: Evolutions and Lessons in Building Cloud Block Store

FAST 2024 Paper 泛读笔记

对生产环境中的阿里EBS的设计进行总结。EBS开发的三个阶段:EBS1,虚拟磁盘(VD)到物理磁盘原地更新,对虚拟磁盘的独占管理;EBS2,日志结构设计,VD分段;EBS3,使用在线EC/压缩来减少流量放大,融合写入引擎(FWE)和基于FPGA的硬件压缩。

总结开发过程中的经验教训:(1)在延迟、吞吐量、IOPS和容量方面实现高弹性。构建了EBSX,由持久内存支持的单跳架构,最小化平均延迟。使用I/O专用线程来减轻尾部延迟。在前端BlockClient中,将处理从内核转移到用户空间,在FPGA中进行硬件卸载来优化堆栈。在后端BlockServer中,利用高并行度实现高效的吞吐量/IOPS控制。(2)最小化单个、区域和全球故障事件的爆炸半径来提高可用性。开发了联合块管理器将VD组织成小型组,并使用控制管理器进行协调。在数据平面上,构建逻辑故障域,以限制段迁移的目的地。(3)识别各种硬件卸载方案的动机和权衡。BlockClient从FPGA卸载开始,转向基于ASIC的解决方案。BlockServer最初选择FPGA来加速EC/压缩,转向多核ARM CPU作为后续方法。

I/O

Optimizing Write Performance for Checkpointing to Parallel File Systems Using LSM-Trees

SC 2023 Paper 泛读笔记

针对高性能计算系统的I/O性能,现有方法的写性能成为瓶颈。本文提出基于日志结构合并树的I/O库 LSMIO,使用LSM树作为写存储后端,在其上增加了FStream接口、ADIOS2接口, 实现比现有I/O库更高的写性能。

BypassD: Enabling fast userspace access to shared SSDs

ASPLOS 2024 Paper 泛读笔记

针对现代存储设备下,访问存储设备时软件开销过高的问题。本文提出了新的I/O体系结构BypassD,用于快速、用户空间访问共享存储设备。(1)在应用程序地址空间中构建页表,将虚拟地址映射到文件数据位置。用户空间I/O请求使用虚拟地址访问设备,并依靠硬件进行翻译和保护。(2)扩展IOMMU硬件,SSD使用IOMMU来检查访问并检索这些映射,使现有应用程序不需要修改即可使用BypassD。

文件访问遵循两条路径:如打开和附加之类的元数据操作由内核文件系统处理。文件读取和写入直接从用户空间发送到设备。在文件打开期间,内核将文件内容映射到应用程序地址空间,通过虚拟地址读/写文件数据。整个机制对应用程序是透明的。

zIO: Accelerating IO-Intensive Applications with Transparent Zero-Copy IO

OSDI 2022 Paper 泛读笔记

针对IO密集型应用的零拷贝IO。本文提出zIO,关键思路是:应用程序通常只修改其处理的数据的一部分。(1)乐观地假设大多数数据保持不变。为了保持一致性,中间数据区域保持未映射状态,如果应用程序试图修改任何中间数据区域,zIO通过页面故障拦截访问,并对页面执行复制和重映射。为了处理未对齐的内存区域,zIO执行未对齐区域的复制,只保留未映射的页面对齐部分。(2)避免数据跟踪开销损害应用程序性能,zIO根据每个IO动态决定何时跟踪和何时复制。如果IO缓冲区的大小小于16KB,则zIO会复制该缓冲区。zIO跟踪页面错误的平均数量,并消除每个缓冲区的复制字节。如果访问的字节与从副本中消除的字节的比率超过6%,zIO会复制缓冲区。(3)使用内核旁路IO堆栈,消除跨IO堆栈API的副本。内核旁路堆栈使用共享内存实现,允许zIO在IO从IO设备到达时跟踪,并消除副本。(4)利用非易失性存储器(NVM)实现:乐观输入持久化。如果从IO堆栈接收的输入由应用程序通过存储堆栈持久化在NVM中,则实现副本到存储的端到端透明消除。为此扩展了zIO以识别NVM映射。如果原始数据已经存在于NVM中,则可以消除到NVM的数据拷贝。

I/O Passthru: Upstreaming a flexible and efficient I/O Path in Linux

FAST 2024 Paper 泛读笔记

许多新的存储功能/接口不能很好地适应块层,并且由于Linux中缺乏适当的系统调用接口而面临采用变化。因此,之前只有两种选择:(1)在可能存在的块接口上使用同步NVMe直通,(2)切换到内核旁路解决方案。本文在内核中添加新的直通路径来创建一个新的替代方案。此路径将NVMe字符接口与io_uring相结合。并将此路径集成到各种用户空间库/工具,说明如何简化FDP SSD、端到端数据保护和计算存储的启用。还在io_uring中引入了ioctl的替代方案。io_uring_command基础设施确保io_uring功能不仅限于现有机制(即经典的读/写或其他已建立的系统调用),而且还可以应用于新的原语。

崩溃恢复

Snapshot: Fast, Userspace Crash Consistency for CXL and PM Using msync

ICCD 2023 Paper 泛读笔记

针对故障原子性msync()的优化,现有方法存在:写放大;脏页跟踪开销;上下文切换开销。本文提出了Snapshot:(1)使用基于编译器的注释,透明的跟踪用户空间中的更新,避免了上下文切换开销,并在调用msync() 时将其与可字节寻址的备份存储副本同步。(2)在DRAM中保留应用程序数据的副本,降低访问延迟。(3)仅在调用msync() 时自动跟踪和同步更改,从而提供了崩溃一致性保证。

RDMA

Flor: An Open High Performance RDMA Framework Over Heterogeneous RNICs

OSDI 2023 Paper 泛读笔记

针对异构RNIC场景,如何避免异构带来的PFC依赖性、异构RNIC的互连性、硬件绑定的拥塞控制方案。本文提出了Flor,通过软硬件协同设计将RDMA传输的数据路径和控制路径分离。通过软硬件协同设计加强了可靠连接(RC)传输,以克服基于硬件的低效率GoBack-N重传。利用不可靠连接(UC)传输支持无序需求。采用不可靠数据报(UD),实现RoCEv2的选择性重传[36]。负载感知动态分块模块在性能和软件控制粒度之间进行平衡。实现了类似于Swift的基于RTT的拥塞控制算法,将RTT测量精度提高了10倍。还可以采用新兴的拥塞控制方案和传输协议的优化,而不是等待数月或数年的硬件升级。

TeRM: Extending RDMA-Attached Memory with SSD

FAST 2024 Paper 泛读笔记

优化用SSD扩展RDMA连接的内存,现有方法在处理页面故障时效率低。本文提出了TeRM,主要思想是消除关键路径中的RNIC和CPU页面故障。(1)消除RNIC页面故障。对于SSD驻留页面,使RNIC页表指向包含预定义模式的保留物理页面。对于读取请求,客户端首先通过RDMA read获取数据,并识别页面是否在SSD上。然后,客户端使用RPC从服务器检索SSD驻留页面,但不需要对内存驻留页面进行任何额外操作,从而在常见情况下确保快速远程访问。(2)消除CPU页面故障,提出了分层IO。通过文件IO接口而不是内存load/store接口访问SSD扩展的虚拟内存。当数据缓存在物理内存中时,通过缓冲IO读/写SSD扩展的虚拟内存,否则通过直接IO绕过页面缓存。(3)由于直接I/O导致服务器上的数据放置不变,难以适应热点。设计了一种动态热点提升机制,依赖于客户端和服务器的协作。

Low-Latency Communication for Fast DBMS Using RDMA and Shared Memory

ICDE 2020 Paper

针对数据库系统的网络瓶颈,本文提出低级别、低延迟消息库(L5),用于数据库系统的高性能通信层。L5提供了统一的通信接口,以解决直接存储器访问的自适应切换问题。使用基于InfiniBand的RDMA进行数据中心内通信。使用共享内存进行机器内通信,实现高性能通信。

文件碎片

Filesystem Fragmentation on Modern Storage Systems

TOCS 2023 Paper 泛读笔记

本文针对文件系统碎片化问题,现有方法整理碎片引入的I/O开销过高。本文实验分析了现代存储设备上碎片化导致的性能和公平性下降,主要原因是请求分裂,即碎片化将单个系统调用拆分为多个小的随机I/O。因此提出了新的碎片整理工具FragPicker,分为两阶段执行。(1)在系统调用层跟踪I/O信息,对数据段访问计数,确定最影响性能的数据段。(2)确定数据块是否分段,若分段则分配新空间进行实际数据迁移。

We Ain’t Afraid of No File Fragmentation: Causes and Prevention of Its Performance Impact on Modern Flash SSDs

FAST 2024 Paper 泛读笔记

针对SSD上的文件碎片进行分析,碎片导致读写性能下降的原因是die碰撞。SSD的固件根据闪存die的写入顺序,以循环方式在闪存die上分配其闪存页。在发生文件碎片时,存储连续文件块的页面不能放置在连续die上,而是分配给任意die,导致性能下降。本文提出了NVMe协议的扩展,结合写入命令为页到die的映射提供提示。通过提示,用于追加写入的页面将映射到上一个文件块的页面所分配到的die之后的die。此外,用于对现有文件块进行重写操作的页面也会破坏页面到die的映射模式,该页面将被映射到原始页面所在的同一die。

数据传输

Datacenter RPCs can be General and Fast

NSDI 2019 Paper 泛读笔记

本文实现了eRPC,一种快速、通用的RPC系统,实现了与无损RDMA结构或专用网络硬件相当的性能。在三个关键指标上表现良好:小消息的消息速率;大消息的带宽;对大量节点和CPU核心的可扩展性。存在两个关键技术:(1)针对常见情况进行优化,当消息很小时,网络没有拥塞,RPC处理程序很短,尽可能避免处理大型消息、拥塞和长时间运行的RPC处理程序需要昂贵的代码路径。在重传、节点故障和速率限制的情况下实现零拷贝传输的技术。降低内存占用,NIC内存占用与集群中的节点数量无关。(2)将每个流限制为最多一个未处理数据,有效防止了由交换机缓冲区溢出引起的数据包丢失。

Zero-Change Object Transmission for Distributed Big Data Analytics

ATC 2022 Paper 泛读笔记

针对JVM虚拟机间数据传输的对象序列化和反序列化(OSD)开销。本文提出零变化对象传输(ZCOT),包括三个创新点:(1)引入名为交换空间的全局共享抽象。采用了分布式类数据共享(DCDS)机制,使交换空间中的对象对所有JVM都是可解释的。(2)引入元数据服务器,用于存储对象的位置,并在JVM之间建立数据传输通道。支持基于组的对象管理,减少元数据服务器和JVM之间的流量。与单个JVM中触发的垃圾回收(GC)集成,并减少了GC暂停时间。(3)提出了重复数据消除机制,利用交换空间抽象来存储已发送对象,并避免不必要的对象传输。扩展了分布式内存管理模块,以考虑组间依赖关系,避免重复数据消除在不同的数据集之间引入依赖关系。

Cornflakes: Zero-Copy Serialization for Microsecond-Scale Networking

SOSP 2023 Paper 泛读笔记

针对数据序列化传输,如何为微秒级应用程序设计更高性能的序列化库。需要同时实现:类似API、内存安全、内存透明、低延迟。本文提出了Cornflakes,混合序列化库堆栈,灵活选择分散聚集或内存副本进行序列化。(1)对现代Mellanox NIC进行的实验发现,分散聚集I/O可以提高512字节以上的缓冲区序列化性能。(2)提供了一个透明的混合序列化API,它保证了对零拷贝I/O使用无需保护,同时确保了拷贝和零拷贝的有效执行。(3)当字段至少有512字节时,在DMA安全内存中透明的使用零拷贝,其他使用复制。

SSD

CSAL: the Next-Gen Local Disks for the Cloud

EuroSys 2024 Paper 泛读笔记

本文针对云本地磁盘,探讨利用QLC SSD的可能性,通过三次初步实验分析了主要的性能瓶颈:(1)QLC SSD采用粗粒度的逻辑到物理(L2P)映射(64KB),比传统NVMe SSD中的4KB L2P条目大得多,导致高设备级写入放大。(2)使用闪存转换层(FTL)管理QLC内部的地址映射,导致垃圾收集的NAND级写放大,因为不同寿命的数据混合在一起。本文提出CSAL,使用大约3GB的DRAM用于内存数据结构,使用HP-SSD作为写缓冲区,使用大容量分区命名空间(ZNS)QLC SSD进行持久化。包括两个技术:(1)两级L2P表,以实现细粒度(4KB)数据访问,减轻设备级写放大。(2)周期性执行压缩,将冷数据聚合为对底层ZNS QLC SSD的大顺序写入来回收写入缓冲区空间,减少NAND级别的写入放大。

ZNSwap: un-Block your Swap

ATC 2022 Paper 泛读笔记

针对ZNS SSD上的交换子系统设计,现有方法垃圾回收开销高、性能差。本文提出ZNSwap,引入了与交换逻辑共同设计的主机端ZNGC。(1)将每个4K块的反向映射信息、与交换出的页面内容一起写入的逻辑块元数据中,避免了反向映射开销。(2)细粒度空间管理。利用了对操作系统内部页面有效性结构的直接访问,没有与TRIM相关的昂贵开销。(3)动态ZNGC优化。动态调整存储在交换设备中的交换页面数量,提高了以读为主和混合读写工作负载的性能。(4)灵活的数据放置和空间回收策略。允许定制磁盘空间管理策略,以根据特定系统的交换需求定制GC逻辑。(5)准确的多租户计算。ZNSwap与cgroup机制集成,将GC开销显式地归因于不同的租户,从而提高了它们之间的性能隔离。

HDD

A Scheduling Framework that Makes any Disk Schedulers Non-work-conserving solely based on Request Characteristics

FAST 2011 Paper 泛读笔记

针对断续工作型磁盘调度器的优化,现有方法在无法获取进程信息时、面对磁盘阵列时,效果不佳。本文提出流调度,只基于请求本身局部性。(1)分析请求到达时间、到达请求位置、挂起请求位置。在观察到一致模式后,调度框架指导调度器遵循模式。同时,保留了连续工作型调度器的机制,以避免请求服务中的长延迟甚至饥饿。(2)提出了磁盘阵列断续工作型调度方案。创建了一个与磁盘阵列相对应的虚拟磁盘,并在其上应用框架,以评估针对特定请求流跨磁盘协调调度的潜在好处。当评估结果为肯定时,将对所有磁盘进行协调调度。

内存管理

NVAlloc: Rethinking Heap Metadata Management in Persistent Memory Allocators

ATC 2022 Paper 泛读笔记

针对持久内存上的内存分配/回收,现有方法有三个问题:对堆元数据的小写入导致缓存行刷新;分配器的堆元数据倾向于在持久内存中随机访问;静态slab分离导致持久内存碎片。本文提出NVAlloc,提出三个创新点:(1)使用从数据块到其相应堆元数据的交错内存映射,以及线程本地缓存中链表的交错布局,以避免重复访问同一CPU缓存行。(2)添加了一个持久记账日志,以顺序模式存储小的元数据更新,从malloc()和free()的关键路径中完全删除了随机元数据访问。(3)支持slab变形,两个尺寸类中的块可以共同位于一个slab中,利用低内存使用率的slab中的可用空间。

近数据处理

OmniCache: Collaborative Caching for Near-storage Accelerators

FAST 2024 Paper 泛读笔记

针对协同使用主机和近存储加速器的系统,如何协同利用主机和设备的cache和计算能力,提升整体I/O和数据处理性能。本文提出 OmniCache,结合近存储加速器、主机 CPU、各自的内存,来加速 I/O 和数据处理。包括三个创新点:(1)近缓存 I/O:水平缓存设计,同时利用主机缓存和设备缓存,提高 I/O 的缓存利用率,降低读写放大。(2)用于并发 I/O 的协作缓存:允许应用单独使用主机缓存或设备缓存,减少缓存驱逐导致的停滞。为了定位数据位置,引入了 OmniIndex,主机管理的索引机制,使用细粒度范围锁的每个文件间隔树,使线程能够同时访问主机和设备缓存中的非冲突块。(3)动态卸载的协同处理:通过监控硬件和软件指标,计算主机和设备上的执行时间,将请求卸载到执行时间少的部分执行,使用缓存缓冲中间处理状态。

ABNDP: Co-optimizing Data Access and Load Balance in Near-Data Processing

ASPLOS 2023 Paper 泛读笔记

针对使用3D堆叠存储器的近数据处理(NDP)问题,现有方法难以同时实现最小化远程数据访问和计算负载平衡。本文提出ABNDP,利用软硬件协同优化来同时缓解这两个问题。(1)在硬件方面,使用了分布式DRAM缓存,在每个处理单元缓存远程存储器的数据。对处理单元分组(camp),每组缓存一份数据,缓存数据由附近的多个处理单元共享。进一步对不同的camp位置使用倾斜映射,减少缓存冲突。(2)在软件方面,采用混合任务调度策略,同时考虑远程访问成本和负载不平衡影响。可以调度到camp缓存附近,更好地分散热数据上的繁重计算,并减少任务中的总远程访问距离。

局限性:同一份数据缓存在多个DRAM,缓存一致性的开销应该较高,适用于数据修改较少的负载。

HPC存储系统

Taming Metadata-intensive HPC Jobs Through Dynamic, Application-agnostic QoS Control

CCGrid 2023 Paper 泛读笔记

针对HPC存储系统中数据和元数据工作流的QoS控制。本文提出PADLL,作为存储中间件,采用了软件定义存储的思想,构建数据平面和控制平面。(1)数据平面:在计算节点启动的多阶段组件,在应用程序和共享文件系统之间调节I/O请求,拦截POSIX调用并动态地限制指向PFS的调用。(2)控制平面:充当具有全系统可见性的全局协调器,根据工作负载和系统变化在作业之间动态分配存储资源(即元数据速率、I/O带宽),确保始终满足QoS。(3)PADLL允许系统管理员通过控制算法指定QoS策略。

加密

Boomerang: Metadata-Private Messaging under Hardware Trust

NSDI 2023 Paper 泛读笔记

针对端到端加密(E2EE)消息传递系统,如何保护通信元数据,例如通信人和通信时间。本文提出Boomerang,利用了对安全飞地的信任假设,提出消息混洗、工作负载分配、针对水平扩展和主动攻击的遗忘算法。

多核架构

Complexity Effective Memory Access Scheduling for Many-Core Accelerator Architectures

MICRO 2009 Paper

多核架构下请求排序,单个核内请求有局部性,核间请求交织时破坏了局部性。本文设计了DRAM请求调度解决方案,采用了互连网络仲裁方案,保留了单个存储器请求流的行访问局部性。

重复数据删除

Eliminating Storage Management Overhead of Deduplication over SSD Arrays Through a Hardware/Software Co-Design

ASPLOS 2024 Paper 泛读笔记

针对SSD阵列上重复数据删除的优化,本文提出了软硬件协同设计方案 ARM-Dedup,将重复数据删除卸载到SSD FTL中,以实现轻量级和高性能的重复数据消除。包括三个技术:(1)将用户空间逻辑页码(userLPN)与存储空间逻辑页码(storLPN)统一,由SSD FTL管理userLPN/storLPN到物理页码(PPN)的映射。(2)增强FTL功能,SSD为主机端重复数据消除引擎提供阵列范围的重映射原语。一旦主机端重复数据消除引擎检测到重复的页面写入,就会将其重映射到本地或远程SSD中的PPN,将地址映射和storLPN GC功能从重复数据消除引擎中删除,合并到SSD FTL中。(3)将存储管理与重复数据消除引擎脱钩会损害数据的一致性,对逻辑页的更新可能导致指纹索引中的相应条目变得无效。添加了基于版本控制的指纹验证机制以避免此问题。

模型训练框架

ScheMoE: An Extensible Mixture-of-Experts Distributed Training System with Tasks Scheduling

EuroSys 2024 Paper 泛读笔记

针对模型训练的MoE层,现有方法受限于通信瓶颈和任务调度方法,在GPU集群上扩展性不佳。本文提出ScheMoE,包括3个创新点:(1)将操作模块化,包括数据压缩、集体通信和专家计算。(2)基于模块化操作,提出了一种自适应最优调度算法来处理通信和计算任务,以提高训练效率。(3)设计了新的A2A算法,即Pipe-A2A,对节点内通信和节点间通信进行流水线传输,同时利用节点内带宽和节点间带宽来提高通信效率。

地址管理

Address Scaling: Architectural Support for Fine-Grained Thread-Safe Metadata Management

IEEE Computer Architecture Letters 2024 Paper 泛读笔记

针对运行时监控工具如Valgrind中的Memcheck的优化,现有方法会为监视的每个字节的应用程序数据维护元数据,导致额外元数据访问开销、一致性开销。本文提出Address Scaling,核心思想是在同一缓存行中维护数据及其相应的元数据。在虚拟和物理地址之间引入了缩放地址,将数据及其相应的元数据连续存储,并映射到物理地址的同一缓存行中。

FPGA

ACCL+: an FPGA-Based Collective Engine for Distributed Applications

OSDI 2024 Paper 泛读笔记

针对基于FPGA的通信库,现有方法不能支持多种传输协议、灵活性不足、可移植性不足。本文提出FPGA上的自适应集体通信库ACCL+。包括四个技术:(1)可跨不同平台,支持UDP、TCP以及RDMA,使FPGA应用程序能够启动FPGA到FPGA的直接集体通信。可以作为CPU应用程序的集体卸载引擎,将CPU从网络任务中解放。(2)提供了具有显式缓冲区分配的类MPI集体API和具有直接通道到通信层的流式集体API。(3)为了可移植性,采用了模块化的系统架构,将特定于平台的IO管理和运行时与集体实现解耦,并结合了特定于平台和网络协议的适配器和驱动程序。(4)为了灵活性,开发了独立于平台和协议的集体卸载引擎,支持在不重新编译硬件的情况下修改集体实现。

  • 10
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

妙BOOK言

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值