標籤:
原創 2016-07-11 楊尚剛 Docker
快閃記憶體在這幾年儲存領域發展非常快,應用也越來越廣泛,如何能更好的使用快閃記憶體,本次分享講一些快閃記憶體相關的最佳化和應用。
快閃記憶體應用情境
資料庫
NoSQL
分布式儲存
CDN
公用雲端儲存
綜合上面幾種情境看,快閃記憶體主要適合有比較高的隨機IO需求和頻寬需求的情境。情境選擇上,也是要發揮快閃記憶體的長處。目前上面業務中 未來幾年發展比較快的會是在公用雲端儲存這一部分。就是某廠商雲端硬碟對比,可以看到快閃記憶體的價格已經很接近機械硬碟了,而單從每IOPS成本看,性價比會更高。
快閃記憶體概述
固態硬碟,不過可以從廣義理解,從2010年開始在互連網行業大規模應用,效能和穩定性已經得到大規模叢集線上驗證,應用情境已經非常廣泛。當然快閃記憶體的IOPS比傳統機械硬碟高几個數量級,但是更核心的還是在延遲降低上,優勢更大。
就很好的說明了,快閃記憶體在訪問延遲上的提升。
提到快閃記憶體,不得不提到快閃記憶體裡非常基礎的組件NAND。NAND分類現在也是非常多。
測試
我們為什麼要做測試呢?
所以說面對如此多的廠商和產品,如何做到更高效的測試 是一個很重要的問題。雖然現在大家都開始轉向雲端服務,直接接觸硬體產品並不多,但是雲廠商的測試依然是很重要的一部分。
測試很Low嗎?
是我們需要瞭解的儲存技術棧。
測試準則:
測試過程:
明確測試需求
明確測試目標
選擇測試載入器和測試模型
制定測試計劃
測試過程跟蹤
測試資料驗證
測試報告
測試載入器:
SysBench:
測試痛點:
重複工作很多
標準不統一
測試周期很長
人工成本高
測試期間異常處理
測試資料處理和測試報告
解決痛點首先就是正常化,主要是以下幾方面:
測試目標標準化
測試載入器標準化
測試流程標準化
測試報告標準化
自動化測試流程:
自動化測試架構
基於Python
包含整體標準測試流程
覆蓋主流測試載入器
資料處處理和產生報表
定製測試計劃
是測試流程圖
自動化的好處也是顯而易見的:
大大節省了人力
提高測試效率
測試的更加完整
有精力做更深入的測試最佳化
測試快閃記憶體需要注意的幾點:
我們需要的效能是steady state
OP
NAND
全盤寫
測試時間不能太短
效能抖動
監控
MySQL測試的一些問題:
系統層面的一些注意點:
檔案系統:Ext4 xfs
IO調度演算法
IO cpu affinity
Scsi-mq/blk-mq(新核心特性)
測試最佳化結合
InnoDB壓縮測試:
InnoDB內建壓縮
基於zlib庫
理論可以達到50%左右的壓縮比
但是效能有損失
CPU時間換儲存空間
對SSD壽命有好處
如何用好呢?
基於我們之前的測試過程,我們可以得到結論,InnoDB壓縮比在50%左右,對寫入效能損失比較大, 損失比例在70%左右。根據這個結論,我們就可以針對我們線上業務選擇是否需要使用InnoDB壓縮。
TokuDB:
這是我們測試結果,可以看到TokuDB更好的壓縮比和更好的寫入穩定性,當然代價就是更高的CPU消耗。
總結
以此圖結尾,不要只活在當下,要勇敢的接受新技術,勇於試錯,當然試錯成本和收益也要評估和可控的。其實很多技術理解透徹了,可能並沒有別人說的“邪惡”。
活動推薦
互連網情境下快閃記憶體最佳化測試和應用