Intel 加速分佈式計算系統的三個神器

Intel 爲了更好的賣他們家的cpu,花了很多力氣參與分佈計算社區的開發,好比spark。若是真正用好這些芯片提供的特性,確實能夠極大的提高分佈式計算系統的性能。數據庫

SIMD

圖片描述
傳統的計算指令輸入是兩個數,輸出是一個數。SIMD指令的輸入是兩個數組,輸出是也是數組。這就使得批量計算的效率大大提升了。Intel的CPU從最先的MMX指令,發展的SSE,以及如今的AVX,AVX2,這些指令均可以統稱爲SIMD指令。最初這些指令大部分是用於多媒體和圖形處理領域,如今也有計算引擎和數據庫系統開始利用這些SIMD指令進行加速。值得一提的是,顯卡的GPU也是相似SIMD的方式來工做的,因此也有數據庫開始利用GPU進行計算了。
圖片描述
這是一個利用了SIMD指令的數據庫系統的架構圖編程

DPDK

圖片描述
DPDK的做用就是利用Intel的高端網卡的特殊驅動,可使得在用戶態的普通程序繞過Linux內核,直接控制網卡收發IP包。若是利用 DPDK 在用戶態實現了原本由Linux內核實現的TCP協議棧。那麼就能夠用來提升相似 Kafka 這樣的純轉發的數據應用場景的網絡性能。數組

ADR

Intel最近演示了利用他們家的ADR技術如何加速etcd數據庫的寫入性能
圖片描述
圖片描述
這項技術的專利說明在這裏:https://www.google.com/patents/US20090089514
華爲公司在這個基礎上有一個新的專利:http://www.google.com/patents/CN103544080A?cl=zh
在專利說明裏清晰地描述了 ADR 的工做機制緩存

現今,爲了保證存儲系統中數據的可靠性,一般會在存儲系統中增長備電單元,從而保證在電源異常和/或存儲系統異常的狀況下,使得內存數據不丟失,同時現今主流的備點單元是NVDIMM(Non-Volatile DIMM,非易失性內存條)。該NVDIMM在保護數據時一般是經過通用的DIMM(Dual Inline Memory Modules,雙列直插式存儲模塊)接口與存儲系統鏈接。所以,當存儲系統電源發生異常時,CPLD(Complex Programmable Logic Device,複雜可編程邏輯器件)產生中斷到PCH(Platform Controller Hub,集成南橋)芯片,在PCH中觸發 ADR (Asynchronous Dram Refresh,異步內存刷新)流程,使得 CPU (Central ProcessingUnit,中央處理器)將cache緩存中的數據寫入NVDIMM中的DRAM(Dynamic Random AccessMemory,動態隨機存取存儲器)而後再將NVDIMM置爲self-refresh自刷新模式,從而使得NVDIMM完成備電切換,將DRAM數據拷貝到flash閃存中保存。性能優化

簡單來講就是把一塊 <100MB 的內存區域在斷電的時候自動刷到 NVDIMM 中,而 NVDIMM 是一種在斷電時內容不會丟失的內存(http://baike.baidu.com/item/NVDIMM)。這類技術能夠統稱爲 Persistent Memory(http://pmem.io/)。
在過去數據庫爲了提供durability,標準的作法都是把用戶的改動寫入一個叫作 Write Ahead Log (WAL)的日誌文件裏。而後調用操做系統的 fsync() 函數確保這個文件的內容已經被持久化到了磁盤上。而後再返回給用戶說寫入已經成功。即使WAL文件的寫入是順序寫,可是磁盤的fsync操做仍然是昂貴的。Persistent Memory技術能夠在未來被用於改善WAL的性能。Intel對etcd的性能優化就是一個很好的榜樣。網絡

相關文章
相關標籤/搜索