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.pswp.cn/web/41616.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/41616.shtml
英文地址,請注明出處:http://en.pswp.cn/web/41616.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MSPM0G3507——串口0從數據線傳輸變為IO口傳輸

默認的跳線帽時這樣的,這樣時是數據線傳輸 需要改成這樣,即可用IO口進行數據傳輸

windows系統本地端口被占用的問題

第一步:查找所有運行的端口 按住“WindowsR”組合鍵,打開命令窗口,輸入【cmd】命令,回車。在彈出的窗口中輸入 命令【netstat -ano】,再按一下回車鍵 Win系統端口被占用-查找所有運行的端口 第二步:查看…

opencv_C++學習筆記(入門30講)

文章目錄 1.配置開發環境2.圖像讀取與顯示3.圖像色彩空間轉換4.圖像對象的創建與賦值5.圖像像素的讀寫操作6.圖像像素的算數操作7.滾動條-調整圖像亮度8.滾動條-調整對比度和亮度9.鍵盤響應操作10.圖像像素的邏輯操作11.圖像的通道分離和合并12.圖像色彩空間轉換13.圖像的像素值…

阿里云存儲的降本增效與運維

小浩負責公司存儲架構層,需要確保存儲層不會成為公司業務系統的性能瓶頸,讓數據讀寫達到最佳性能。那么小浩可以從哪些方面著手優化性能呢?他繼續求助系統架構師大雷。 小浩:雷哥,PD反饋公司系統最近響應很慢&#xff…

HTTP模塊(一)

HTTP服務 本小節主要講解HTTP服務如何創建服務,查看HTTP請求&響應報文,還有注意事項說明,另外講解本地環境&Node環境&瀏覽器之間的鏈路圖示,如何提取HTTP報文字符串,及報錯信息查詢。 創建HTTP服務端 c…

lspci

【原】Linux之PCIE三種空間解析 PCIe學習筆記——2.PCIe配置空間 PCIE學習(2)PCIE配置空間詳解 開發者分享 | 使用 lspci 和 setpci 調試 PCIe 問題 b : 字節 w:word L: 4byte

LLM - 詞表示和語言模型

一. 詞的相似度表示 (1): 用一系列與該詞相關的詞來表示 (2): 把每個詞表示一個獨立的符號(one hot) (3): 利用該詞上下文的詞來表示該詞 (3): 建立一個低維度的向量空間,用深度學習方法將該詞映射到這個空間里(Word Embedding) 二:語言模型 (1): 根…

Postman中數據文件的高效使用:測試自動化與數據驅動測試實踐

摘要 Postman 是一個強大的 API 開發工具,它不僅支持 API 的設計、開發和測試,還提供了數據驅動測試的功能。通過使用數據文件,我們可以模擬不同的測試場景,實現測試的自動化和重復執行。本文將詳細介紹如何在 Postman 中使用數據…

PHP-實例-CSRF

1 需求 按照用途分類: 會話(會話ID和會話令牌 二選一) 會話ID:服務器側自動生成,自動存儲在cookie中,需要在服務器側存儲會話令牌:服務器側手動生成,手動存儲在cookie中&#xff0…

7月07日,每日信息差

第一、6 月份,北京、上海、廣州和深圳的新建商品住宅成交量分別環比增加 21%、66%、48% 和 38%,均創年內新高 第二、2024 年世界人工智能大會上,上海向四家企業發放了首批無駕駛人智能網聯汽車示范應用許可,這些企業可以在浦東部…

Redis源碼整體結構

一 前言 Redis源碼研究為什么先介紹整體結構呢?其實也很簡單,作為程序員的,要想對一個項目有快速的認知,對項目整體目錄結構有一個清晰認識,有助于我們更好的了解這個系統。 二 目錄結構 Redis源碼download到本地之后,對應結構如下: 從上面的截圖可以看出,Redis源碼一…

52-5 內網代理2 - LCX端口轉發(不推薦使用LCX)

環境搭建: 本地開3臺虛擬機:kali(必須)、windows2012與2008 (可換成其他windows虛擬機) kali - 網絡配置成橋接模式 windows2012 - 設置兩個網卡,NAT與橋接模式 注意:windows2012要關閉防火墻,要不然其他主機ping不通 關閉防火墻后再開啟遠程桌面連接 windwos20…

去O化神器 Exbase

隨著去O化進程推動,很多舊業務依賴的oracle數據庫,都需要實現做數據庫的替換,當下能很好兼容Oracle,并實現異構數據庫之間轉換的工具并不多。這里給大家推薦一個商業工具數據庫遷移工具exbase(北京海量)&am…

昇思MindSpore 25天學習打卡營|day18

DCGAN生成漫畫頭像 在下面的教程中,我們將通過示例代碼說明DCGAN網絡如何設置網絡、優化器、如何計算損失函數以及如何初始化模型權重。在本教程中,使用的動漫頭像數據集共有70,171張動漫頭像圖片,圖片大小均為96*96。 GAN基礎原理 這部分原…

想知道你的電腦能不能和如何升級RAM嗎?這里有你想要的一些提示

考慮給你的電腦增加更多的RAM,但不確定從哪里開始?本指南涵蓋了有關升級Windows PC或筆記本電腦中RAM的所有信息。 你需要升級RAM嗎 在深入研究升級RAM的過程之前,評估是否需要升級是至關重要的。你是否經歷過系統滯后、頻繁的BSOD錯誤或應用程序和程序突然崩潰?這些癥狀…

從零開始的python學習生活

pycharm部分好用快捷鍵 變量名的定義 與之前學習過的語言有所不同的是,python中變量名的定義更加的簡潔 such as 整形。浮點型和字符串的定義 money50 haha13.14 gaga"hello"字符串的定義依然是需要加上引號,也不需要寫;了 字符…

Django 常見的操作符

在filter() 方法,exclude() 方法中使用大于,小于,模糊匹配等操作符。 常見的操作符如下: 操作符含義示例等于Book.objects.filter(price10)! 或 __ne不等于用于查找字段不等于特定值的記錄。但更常用exclude()方法。__gt大于用于…

React Redux使用@reduxjs/toolkit的hooks

關于redux的學習過程需要幾個官網,有redux官網,React Redux官網和Redux Toolkit的官網。 其中后者的中文沒有找到,不過其中的使用在React Redux官網的快速入門中有介紹。 現在一般不使用connect借接口了。 對于借助Redux Toolkit的React Redu…

Linux GUN(gcc/g++) 版本升級教程

Linux gcc/g 升級命令: // 查看當前安裝的版本 ll /usr/bin/gcc* ll /usr/bin/g*// 更新源 sudo apt update // 安裝新版本 sudo apt install g-10 gcc-10 // 應用新的版本 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 10 sudo update-altern…

【網站推薦】Developer Roadmaps 開發者學習路線

你是否想學習某門技術而苦苦找不到學習路線。本文推薦一個網站,解決學習路徑問題。 roadmap.sh 旨在創建路線圖、指南和其他教育內容,以幫助指導開發人員選擇路徑并指導他們的學習。 技術路線包括了前端后端安卓iosUI設計等內容,一些技術比如…