Wormhole Filters: Caching Your Hash on Persistent Memory——泛读笔记

EuroSys 2024 Paper 论文阅读笔记整理

问题

近似成员关系查询(AMQ)数据结构可以高效地近似确定元素是否在集合中,例如Bloom滤波器[10]、cuckoo滤波器[23]、quotient滤波器[8]及其变体。但AMQ数据结构的内存消耗随着数据规模的增长而快速增长,这限制了其处理大量数据的能力。原因在于:单个AMQ数据结构的内存消耗增加;多个AMQ数据结构同时运行。

AMQ数据结构的优化目标包括空间占用、吞吐量和重建开销。新兴的持久存储器提供了接近DRAM的访问速度和TB级的容量,有助于AMQ数据结构处理海量数据。然而,由于密集的随机访问和/或顺序写入,现有的AMQ数据结构在持久性存储器上表现不佳。

挑战

根据解决哈希冲突的方式,用于不同存储介质的现有AMQ数据结构通常可以分为两类,但都不适合移植到持久内存:

  • 使用全局技术来解决哈希冲突(如Bloom过滤器[10]和cuckoo过滤器[23])。在整个数据结构中分布元素来解决哈希冲突。但不可避免地导致对存储介质的大量随机访问,降低了持久存储器上数据结构的性能。一些工作试图缓解这个问题,如阻塞Bloom过滤器[55]和单个哈希阻塞Bloom滤波器[54],但会导致更高的误报率和更高的内存消耗[23,64]。

  • 使用局部技术来解决哈希冲突(如quotient滤波器[8]和计数quotient滤波器[51])移动冲突的位置的所有后续元素来解决哈希冲突。尽管只需要对存储介质进行顺序访问,但每次插入操作都会产生大量额外的写入请求,从而降低性能。

其他技术挑战:

  • 同时降低随机访问和顺序写入的次数,以便在持久内存上获得更高的性能。因为持久内存的顺序读取、随机读取、顺序写入和随机写入带宽分别比DRAM[31]慢3倍、8倍、11倍和14倍。

  • 有效地支持并发。如何设计正确高效的并发算法,利用多个核心的性能。

  • 减少支持恢复的开销。但程序异常结束且插入操作意外中断,部分更新的数据将持久存在AMQ数据结构中,当程序重新启动时,需要回滚部分更新的数据。以前的工作,如持久内存上的树和哈希表[31,42,44],使用日志记录技术从故障中恢复。然而,对于轻量级AMQ数据结构,日志记录的开销很高,大大降低了AMQ数据架构的性能。

本文方法

本文提出了一种新的AMQ数据结构,称为Wormhole Filters,通过减少随机访问和顺序写入,减少了日志记录的数量,以适用于持久内存。

  • 数据结构。提出了两种创新技术:距离指纹对和基于桶的虫洞哈希表。距离指纹对可以同时减少随机访问和顺序写入,还可以减少支持恢复的开销。基于桶的虫洞哈希表可以增强操作的缓存局部性。

  • 插入算法。提出了基于距离指纹对的持久内存插入算法。对于插入操作,虫洞过滤器通过移动少量相邻元素来解决哈希冲突,减少了插入期间对持久内存的随机访问和顺序写入的次数。此外,这种设计只需要顺序获取少量锁,从而实现对并发的支持。

  • 查找/删除算法。提出了基于桶的虫洞哈希表的持久内存查找/删除算法。虫洞过滤器可以以恒定的时间复杂度执行查找和删除操作,查找和删除操作只需要顺序访问少量的存储桶,这些存储桶可以被持久存储器的访问粒度所覆盖,从而实现高吞吐量。

  • 恢复算法。提出了轻量级的持久内存恢复算法。通过精心设计的桶结构和插入机制,减少了插入所需的日志记录数量,从而减少了支持恢复的开销。

理论分析和实验结果表明,Wormhole Filters的性能优于最先进AMQ数据结构。实现了最佳基线的23.26倍插入吞吐量、1.98倍正向查找吞吐量和8.82倍删除吞吐量。

总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/773648.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

管易云和金蝶云星空单据接口对接

管易云和金蝶云星空单据接口对接 数据源系统:金蝶云星空 金蝶K/3Cloud在总结百万家客户管理最佳实践的基础上,提供了标准的管理模式;通过标准的业务架构:多会计准则、多币别、多地点、多组织、多税制应用框架等,有效支持企业的运营…

400G SR4和800G SR8光模块在AI集群中的应用

人工智能(AI)技术的快速发展下,AI集群的计算能力和数据传输需求不断提升。为了满足这一需求,光模块技术也在不断进步。高速率光模块作为新一代高速光通信解决方案,正在逐步应用于AI集群中,为其提供更高效、…

【带你全面了解 RAG,深入探讨其核心范式、关键技术及未来趋势】

文末有福利! 大型语言模型(LLMs)已经成为我们生活和工作的一部分,它们以惊人的多功能性和智能化改变了我们与信息的互动方式。 然而,尽管它们的能力令人印象深刻,但它们并非无懈可击。这些模型可能会产生…

google::protobuf命名空间下常用的C++ API----message.h

#include <google/protobuf/message.h> namespace google::protobuf 假设您有一个消息定义为: message Foo {optional string text 1;repeated int32 numbers 2; } 然后&#xff0c;如果你使用 protocol编译器从上面的定义生成一个类&#xff0c;你可以这样使用它: …

[C++][设计模式][访问器]详细讲解

目录 1.动机2.模式定义3.要点总结4.代码感受1.代码一2.代码二 1.动机 在软件构件过程中&#xff0c;由于需求的变化&#xff0c;某些类层次结构中常常需要增加新的行为(方法)&#xff0c;如果直接在基类中做这样的更改&#xff0c; 将会给子类带来很繁重的变更负担&#xff0c…

快手矩阵管理系统:开启短视频营销的智能时代

在短视频内容营销的浪潮中&#xff0c;快手矩阵管理系统以其独特的优势和功能&#xff0c;成为品牌和个人创作者不可或缺的工具。本文将详细解析快手矩阵管理系统的核心功能&#xff0c;探讨它如何帮助用户高效管理多平台、多账号的内容发布和互动。 快手矩阵管理系统概述 快…

【Java EE】Spring IOCDI

Spring IOC & DI 文章目录 Spring IOC & DI一、Spring是什么&#xff1f;二、IOC(控制反转)2.1 通俗理解2.2 造汽车的例子理解IOC2.3 IOC详解1. 获取Bean2. 方法注解——Bean1. 应用场景&#xff1a;2. 应用方法&#xff1a;3. 注意要点&#xff1a; 特别注意: 四、DI4…

Superset超火的企业级可视化BI分析工具

Superset&#xff0c;听起来就像是超级集合&#xff0c;确实&#xff0c;它几乎集合了所有你需要的数据功能。简单说&#xff0c;它就是一个现代化、功能强大的数据可视化工具。 它支持各种数据库&#xff0c;有着丰富的可视化选项&#xff0c;可以用来创建漂亮的数据仪表盘&a…

【数据清洗中分段线性插值法原理】

数据清洗中分段线性插值法原理 一、什么是分段线性插值法&#xff1f;二、分段线性插值法的数学原理三、分段线性插值法的应用步骤1. 引入库2. 创建示例数据3. 应用分段线性插值法4. 可视化插值结果 一、什么是分段线性插值法&#xff1f; 分段线性插值法通过在已知数据点之间…

【C语言】return 关键字

在C语言中&#xff0c;return是一个关键字&#xff0c;用于从函数中返回值或者结束函数的执行。它是函数的重要组成部分&#xff0c;负责将函数的计算结果返回给调用者&#xff0c;并可以提前终止函数的执行。 主要用途和原理&#xff1a; 返回值给调用者&#xff1a; 当函数执…

[leetcode hot 150]第一百一十七题,填充每个节点的下一个右侧节点

题目&#xff1a; 给定一个二叉树&#xff1a; struct Node {int val;Node *left;Node *right;Node *next; } 填充它的每个 next 指针&#xff0c;让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点&#xff0c;则将 next 指针设置为 NULL 。 初始状态下&#x…

【图卷积网络】GCN基础原理简单python实现

基础原理讲解 应用路径 卷积网络最经典的就是CNN&#xff0c;其 可以提取图片中的有效信息&#xff0c;而生活中存在大量拓扑结构的数据。图卷积网络主要特点就是在于其输入数据是图结构数据&#xff0c;即 G ( V , E ) G(V,E) G(V,E)&#xff0c;其中V是节点&#xff0c;E是…

C语言 指针和数组——指针的算术运算

目录 指针的算术运算 指针加上一个整数 指针减去一个整数 指针相减 指针的关系比较运算 小结 指针的算术运算 指针加上一个整数 指针减去一个整数 指针相减 指针的关系比较运算 小结  指针变量 – 指针类型的变量&#xff0c;保存地址型数据  指针变量与其他类型…

关于SQL NOT IN判断失效的情况记录

1.准备测试数据 CREATE TABLE tmp_1 (val integer);CREATE TABLE tmp_2 (val integer, val2 integer);INSERT INTO tmp_1 (val) VALUES (1); INSERT INTO tmp_1 (val) VALUES (2); INSERT INTO tmp_2 (val) VALUES (1); INSERT INTO tmp_2 (val, val2) VALUES (NULL,0);2.测…

swiftui中设置建议最多5个tabItem项,多个tabItem项会被自动折叠起来

在swiftui中设置底部的菜单栏的时候&#xff0c;最多建议设置5个&#xff0c;如果超过了&#xff0c;会被自动折叠到More中&#xff0c;点击More就会出现类似list的样式显示&#xff0c;不是很友好。 最多按照5个默认设置的话&#xff0c;就会正常全部显示出来&#xff1a; 测…

(七)glDrawArry绘制

几何数据&#xff1a;vao和vbo 材质程序&#xff1a;vs和fs(顶点着色器和片元着色器) 接下来只需要告诉GPU&#xff0c;使用几何数据和材质程序来进行绘制。 #include <glad/glad.h>//glad必须在glfw头文件之前包含 #include <GLFW/glfw3.h> #include <iostrea…

红海云签约海新域集团,产业服务运营领军企业加速人力资源数字化转型

北京海新域城市更新集团有限公司&#xff08;以下简称“海新域集团”&#xff09;是北京市海淀国有资产投资集团有限公司一级监管企业&#xff0c;致力于成为国内领先的产业服务运营商。集团积极探索城市和产业升级新模式&#xff0c;通过对老旧、低效等空间载体重新定位规划、…

2024年新考纲下的PMP考试有多难?全面解读!

一、PMP考试是什么&#xff0c;PMP证书有什么用&#xff1f; PMP&#xff08;Project Management Professional&#xff09;是指项目管理专业人士。PMP考试由美国PMI发起&#xff0c;旨在严格评估项目管理人员的知识和技能&#xff0c;以确定其是否具备高品质的资格认证。 PM…

c进阶篇(四):内存函数

内存函数以字节为单位更改 1.memcpy memcpy 是 C/C 中的一个标准库函数&#xff0c;用于内存拷贝操作。它的原型通常定义在 <cstring> 头文件中&#xff0c;其作用是将一块内存中的数据复制到另一块内存中。 函数原型&#xff1a;void *memcpy(void *dest, const void…

手机如何充当电脑摄像头,新手使用教程分享(新)

手机如何充当电脑摄像头&#xff1f;随着科技的发展&#xff0c;智能手机已经成为我们日常生活中不可或缺的一部分。手机的摄像头除了拍摄记录美好瞬间之外&#xff0c;其实还有个妙用&#xff0c;那就是充当电脑的摄像头。手机摄像头充当电脑摄像头使用的话&#xff0c;我们就…