1. 程式人生 > >基於快閃記憶體資料庫的CCF-LRU演算法優化

基於快閃記憶體資料庫的CCF-LRU演算法優化

2018.5.28

今天查看了關於flashdb中關於快取演算法的資料結構,發現了3dsim的資料結構是不一樣的,然後又去看了一遍3Dsim的資料結構,發現flashdb的資料結構實際是可以優化的。下面對這個點簡單的分析下。

首先來看下flashdb的資料結構
在這裡插入圖片描述
ftop是模擬記憶體的順序儲存
ptop是雜湊表
LRU連結串列是快取替換演算法
其中引入的frame_id可以看做是資料在記憶體中的地址。

首先資料通過pageid,通過雜湊索引判斷是否在記憶體中存在,然後通過雜湊索引找到記憶體的地址,然後記憶體的地址通過LRU連結串列維護替換演算法。這樣做是沒問題的,問題在於LRU維護的時候沒有必要用記憶體地址去在維護,因為如果通過額外的記憶體地址去維護,那麼實際在LRU連結串列中還得再遍歷一遍,這樣開銷很大,雜湊索引的目的也沒有實現。

3Dsim則只用兩個資料結構,記憶體中資料的存放除了資料之外,還有LRU連結串列維護的指標,然後通過一個平衡樹索引資料的地址,通過這個平衡樹則找到了資料節點所在的地址,通過這個地址則可以找到LRU連結串列的位置。不需要再次遍歷LRU連結串列的過程。

那麼flashdb這種資料結構可以修改嗎,應該如何修改?

答案是肯定的,修改也比較簡單,在陣列中存放的除了pageid,還可以存放LRU的前後指標即可。

那麼當雜湊索引到資料的地址時,就可以訪問資料的LRU的前後指標。
ok,
1、明天在看完整個flashdb的程式碼之後,對這個資料結構進行修改。
2、快取的讀寫流程很奇怪
3、看下CCF-LRU和AD-LRU演算法的原始碼

2018.5.29

1、開始著手修改快取的讀寫流程

對於快取來說,讀請求命中則直接讀資料,未命中,則發生替換演算法,從快取替換出一個空位,然後從快閃記憶體上讀一個數據到快取中。
對於寫請求來說,寫請求命中快取並直接合並資料,並置為髒,未命中則直接替換,首先從快閃記憶體上讀資料,然後合併髒頁寫回快閃記憶體,然後將新的資料頁寫入到快閃記憶體上。

2、在flashdb上實現CCF-LRU的演算法

現在具體的CCF-LRU演算法進行一個修改
ok
接下倆,主要是CCCF-LRU和AD-LRU演算法在flashdb和開源資料庫中修改

2018.5.11

1、修改完成,經過trace測試,效能確實有提升

效能對比
在這裡插入圖片描述


延時+擦寫+命中率都有提升
分析下原因,是否符合CCF-LRU的理論分析。
1、CCF理論上分析,會減少寫操作,儘量少的驅逐熱髒頁和熱乾淨頁,所以理論上,寫的次數會減少,擦除的次數會減少,快取命中率可以保持相當,然後總的延時會提高
2、從實驗的結果上看是符合的。寫操作均有下降,效能均有提升。
那麼從模擬器的角度完成了CCF-LRU的區分,下面開始著手在實際的資料庫真實環境下驗證實驗的必要性

2、對於PostgreSQL的學習

首先學習PostgreSQL 的基礎知識,和mysql相同的另外一種資料庫
瞭解PostgreSQL 資料庫的儲存引擎
看PostgreSQL 的原始碼,對原始碼進行修改

2018.6.5
本週任務:
首先學習PostgreSQL 的基礎知識,和mysql相同的另外一種資料庫
瞭解PostgreSQL 資料庫的儲存引擎
看PostgreSQL 的原始碼,對原始碼進行修改

2018.6.6
目前資料庫已經搭建完成,接下來的任務:
看pgsql的原始碼,修改其中的LRU部分。

2018.6.7
1、將pgsql資料庫的安裝測試寫成一個指令碼進行
主要是4個指令碼,一個是建立pgsql的資料庫,一個是用benchmark進行測試,一個是移除benchmark的測試資料,一個是停止刪除資料庫
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

2018.6.8
開始進行pgsql中快取這一部分原始碼的閱讀,首先了解快取的主要思想,然後將CF-LRU和CCF-LRU進行實現,希望最後對MySQL和PGsql進行一個分析對比,重點應該在快閃記憶體資料庫的優化上,資料庫和快閃記憶體的結合。

2018.6.11
完成了對pgsql部分快取程式碼的閱讀。
下面要進行的工作:

1、修改pgsql緩衝的替換演算法
2、測試修改後替換演算法的效能(主要是測試快取命中率的不同)
3、分析並比較MySQl和PgSQL的區別
4、寫簡歷並說明這個專案(快閃記憶體資料庫的研究)

修改pgsql緩衝的替換演算法,按照之前文件上寫的,修改緩衝區的LRU成為CF-LRU,CF-LRU的思想就是減少快閃記憶體的寫,儘可能的替換乾淨頁。
那麼就是在之前連結串列中,按照以下的法則尋找髒頁即可
1、設定乾淨頁區域,在乾淨頁區域中尋找乾淨頁,替換,如果整個區域都是髒頁,則替換LRU端的髒頁
2、如果在乾淨頁區域找到了乾淨頁,則直接替換乾淨頁即可。
在這裡插入圖片描述
修改的程式碼如下:
在這裡插入圖片描述

進行測試:
修改之後用benchmark的測試結果:
在這裡插入圖片描述
在這裡插入圖片描述

修改之前用benchmark的測試結果:
在這裡插入圖片描述
在這裡插入圖片描述

結果的分析

由於CFLRU考慮的是快閃記憶體讀寫代價不一致的問題,儘量去將髒資料儲存在緩衝中,這樣會導致一部分熱資料被當成乾淨頁替換下去,所以這種方法會在一定程度上降低緩衝命中率,但是同時大量減少了寫操作的次數,即降低了代價高的寫,快取區為命中就要去快閃記憶體上讀,增加了讀操作

所以這是一種以讀換寫的思想,整體的效果如下:

1.首先是最後的響應時間

在這裡插入圖片描述
相比LRU,300和450s,提升的效能為20%~33.3%。

2.從替換下去的寫操作

在這裡插入圖片描述
CCFLRU顯然是最少的

從快取的命中率看

在這裡插入圖片描述
快取命中率有所下降。

相關推薦

基於記憶體資料庫CCF-LRU演算法優化

2018.5.28 今天查看了關於flashdb中關於快取演算法的資料結構,發現了3dsim的資料結構是不一樣的,然後又去看了一遍3Dsim的資料結構,發現flashdb的資料結構實際是可以優化的。下面對這個點簡單的分析下。 首先來看下flashdb的資料結構

記憶體資料庫事務恢復優化

事務處理事資料庫最獨特的地方,事務操作可以保證資料庫處理操作的原子性、一致性、隔離性和永續性,推動了資料庫在商業領域的成功應用。 事務恢復時資料庫支援事務的重要功能,可以保證資料的一致性和正確性,資料庫在實際的執行過程中,會不可避免的發生各種故障,那麼必須建立有效的事務恢復的措施。在快閃

記憶體資料庫索引優化

快閃記憶體資料庫的索引是資料庫特有的一種加快查詢的方法,這種方法可以 有效的提高資料庫查詢的效能,基本上每一種資料庫都會有索引的功能,那麼索引的帶來的額外的元資料開銷也是非常大的。 目前的索引組織的資料結構都是按照磁碟的特性,用來設計對應的資料結構,當底層的儲存

記憶體資料庫查詢優化

在關係型資料庫中,會涉及到大量的查詢操作,查詢操作往往還涉及不同表之間的連線操作,而連線操作需要大量的IO開銷,傳統的資料庫的查詢優化都在順序IO上優化,到快閃記憶體上,快閃記憶體的隨機讀和順序讀效能都很出色,那麼面對隨機讀效能好的優勢,在查詢和連線索引上,資料

記憶體資料庫概念

現在開始對快閃記憶體資料庫進行一個簡單的學習,目的是瞭解如何結合SSD特性和資料庫的結合優化。 設計一個面向快閃記憶體的資料庫只要有以下這三個方面: 主要是分為3點: 1、設計專門針對資料庫的FTL演算法,資料庫相比傳統的檔案系統的負載更為隨機化,如何優化是一

記憶體儲存的資料庫加速場景應用

華為OceanStor Dorado V3 是面向企業關鍵業務打造的全快閃記憶體儲存系統 ,採用 專為快閃記憶體 設計 的FlashLink技術 。      l 專為快閃記憶體設計的儲存系統,通過創新的FlashLink技術,提供0.5毫秒穩定時延,業務效能提升3倍。      l Hyp

浪潮VMware全記憶體超融合,軟硬一體打入關鍵系統

在2018年第三季度的Forrester Wave超融合基礎架構(HCI)報告中,處於領導者象限的VMware獲得了產品戰略標準類別的最高分。Forrester認為,VMware vSAN在過去三年快速發展,不僅增加了豐富的功能,還與VMware軟體更加緊密的整合在一起。對於VMware客戶而言,vSAN是一

記憶體儲存的VDI場景應用

華為OceanStor Dorado V3是面向企業關鍵業務打造的全快閃記憶體儲存系統,採用專為快閃記憶體設計的FlashLink技術。      專為快閃記憶體設計的儲存系統,通過創新的FlashLink技術,提供0.5毫秒穩定時延,業務效能提升3倍。      HyperMetro免

記憶體儲存的伺服器虛擬化場景應用

華為OceanStor Dorado V3是面向企業關鍵業務打造的全快閃記憶體儲存系統,採用專為快閃記憶體設計的FlashLink技術。 專為快閃記憶體設計的儲存系統,通過創新的FlashLink技術,提供0.5毫秒穩定時延,業務效能提升3倍。 HyperMetro免閘道器雙活,RPO=

當心花招,關注全記憶體效能

效能 , 是儲存系統永不停止的追求。在宣傳自身高效能方面,廠商都 各出奇招 ,在效能 引數上 也是參差不齊,如 cache全命中 IOPS、 256K I/O 頻寬、100 %寫 時延,這一切 都是 為了向用戶 傳遞 自身效能 最高 ,無懼 業務 高峰期 壓力的 形象。但到底怎樣才是真的 高

Infortrend全記憶體陣列GSa 5000, 資料中心的一場“完美風暴”

EonStor GSa 5000系列是專為資料中心設計的全快閃記憶體統一儲存陣列,具有超高效能。搭載Intel Xeon E5 8核處理器,塊級IOPS可以達到700K,OLTP IOPS 也可以達到300K,同時響應時間保持在0.5毫秒以下。 而且GSa的韌體EonOne嵌入了智慧硬碟恢復(IDR)以及S

Android Automotive 中的記憶體磨損管理 emmc

Android Automotive 中的快閃記憶體磨損管理 Android Automotive 內部儲存裝置使用了支援上千次清空/寫入週期的嵌入式多媒體卡 (eMMC);如果 eMMC 發生故障,系統可能會變得無法使用。由於汽車的使用壽命較長(通常為 10 年以上),因此 eMMC 必須非常穩定可靠。

oracle exadata celldisk 記憶體盤受損導致效能下降

2018年12月7日早上接應用反饋oracle 一體機上的業務無法正常運轉,系統超卡;由於一體機中跑著好幾個11g的例項,全部例項的業務都反映很慢,速進行硬體方面的檢視。 檢視oracle資料庫告警日誌以及asm告警日誌發現數據磁碟都有在資料同步的動作,並且alter日誌中發現有壞塊;再進一步通

HC12微控制器上的記憶體核心程式設計

HC12微控制器上的快閃記憶體核心程式設計 作者       Sven Deckardt 限制       草案檔案 摘要    

記憶體卡被建立pv報錯

背景:某機器有2塊快閃記憶體卡,利用LVM,將其掛載到一個目錄供測試使用; 之前廠商已經安裝了快閃記憶體卡對應的驅動,fdisk可以看到快閃記憶體卡資訊,但是在pvcreate建立時,遭遇如下錯誤: # pvcreate /dev/dfa Device /dev/dfa not found (or ig

記憶體flash讀寫原理

首先講述的是基本原理,因為前面總結了很多基本原理,所以這個位置比較粗略的帶過。 1、基本原理 從圖上可以看出,Vt為開啟電壓,對於N溝道的cmos,當門極加的電壓逐漸變大的時候,多數載流子被門極所吸引,向上移動,形成N型溝道,N型半導體即被導通,有導通電流。開始有導通電流的門極所加

記憶體flash進階知識

這一章關於快閃記憶體主要是SLC, MLC, TLC, 3D flash的比較,主要點如下: 1、FLASH的寫步驟ISPP 2、在寫資料之前要進行隨機化編碼 3、slc、mlc、tlc效能的比較 4、一個具體的flash讀寫的體系結構 5、目前定義的flash的IO介面規範 6

記憶體flash基礎原理

轉載自ssdfans 1、快閃記憶體基本介紹 Flash儲存是儲存界的新人和紅人。Flash儲存系統由於其優異的效能、高效的儲存密度和出色的節能特性使得Flash儲存有望替代機械磁碟成為企業級儲存的核心。未來很有可能所有的資料都會儲存在Flash儲存介質上面,包括銀行、中小企業、網際

網際網路場景下記憶體優化測試和應用

【編者的話】快閃記憶體在這幾年儲存領域發展非常快,應用也越來越廣泛,如何能更好的使用快閃記憶體,本次分享講一些快閃記憶體相關的優化和應用。 快閃記憶體應用場景 資料庫 NoSQL 分散式儲存 CDN 公有云儲存 綜合上面幾種場景看,快閃記憶體主要適合有比較高的隨機IO需求和頻寬需求的場景。場景選

單卡12.8TB記憶體卡到底怎麼用?

作者介紹 蔣健,雲趣網路科技聯合創始人,11gOCM,多年Oracle設計、管理及實施經驗,精通資料庫優化,OracleCBO及並行原理,曾為多個行業的客戶的Oracle系統實施小型機到X86跨平臺遷移和資料庫優化服務。雲趣鷹眼監控核心設計和開發者,資深PythonWeb開發者。 一、概述 通常,D