網際網路場景下快閃記憶體優化測試和應用
【編者的話】快閃記憶體在這幾年儲存領域發展非常快,應用也越來越廣泛,如何能更好的使用快閃記憶體,本次分享講一些快閃記憶體相關的優化和應用。
快閃記憶體應用場景
- 資料庫
- NoSQL
- 分散式儲存
- CDN
- 公有云儲存
綜合上面幾種場景看,快閃記憶體主要適合有比較高的隨機IO需求和頻寬需求的場景。場景選擇上,也是要發揮快閃記憶體的長處。目前上面業務中 未來幾年發展比較快的會是在公有云儲存這一部分。下圖就是某廠商雲盤對比,可以看到快閃記憶體的價格已經很接近機械硬碟了,而單從每IOPS成本看,價效比會更高。
快閃記憶體概述
固態硬碟,不過可以從廣義理解,從2010年開始在網際網路行業大規模應用,效能和穩定性已經得到大規模叢集線上驗證,應用場景已經非常廣泛。當然快閃記憶體的IOPS比傳統機械硬碟高几個數量級,但是更核心的還是在延遲降低上,優勢更大。
上圖就很好的說明了,快閃記憶體在訪問延遲上的提升。
提到快閃記憶體,不得不提到快閃記憶體裡非常基礎的元件NAND。NAND分類現在也是非常多。
測試
我們為什麼要做測試呢?
- 瞭解產品
- 瞭解自己
- 優化自己
- 優化成本模型
所以說面對如此多的廠商和產品,如何做到更高效的測試 是一個很重要的問題。雖然現在大家都開始轉向雲服務,直接接觸硬體產品並不多,但是雲廠商的測試依然是很重要的一部分。
測試很Low嗎?
- 測試很簡單?
- 沒科技含量?
- 測試很無聊?
上圖是我們需要了解的儲存技術棧。
測試準則:
- 明確目標
- 高效
- 完備性
- 可量化
- 可對比
- 產出
測試過程:
- 明確測試需求
- 明確測試目標
- 選擇測試工具和測試模型
- 制定測試計劃
- 測試過程跟蹤
- 測試資料驗證
- 測試報告
測試工具:
- IO層面:fio,sysbench,iometer,dd等
- OLTP:sysbench,TPC-C
- 輔助工具:tcpcopy,tcprstat,pt-log-player
SysBench:
- 開源的多執行緒效能測試工具
- 支援CPU IO Mutex OLTP等測試
- 可以lua指令碼定製測試用例
- 常用的insert select和oltp三種場景
測試痛點:
- 重複工作很多
- 標準不統一
- 測試周期很長
- 人工成本高
- 測試期間異常處理
- 測試資料處理和測試報告
解決痛點首先就是規範化,主要是以下幾方面:
- 測試目標標準化
- 測試工具標準化
- 測試流程標準化
- 測試報告標準化
自動化測試流程:
- 自動化測試框架
- 基於Python
- 包含整體標準測試流程
- 覆蓋主流測試工具
- 資料處處理和生成報表
- 定製測試計劃
下圖是測試流程圖
自動化的好處也是顯而易見的:
- 大大節省了人力
- 提高測試效率
- 測試的更加完整
- 有精力做更深入的測試優化
測試快閃記憶體需要注意的幾點:
- 我們需要的效能是steady state
- OP
- NAND
- 全盤寫
- 測試時間不能太短
- 效能抖動
- 監控
MySQL測試的一些問題:
- 測試資料集大小,至少要過億
- 和記憶體buffer比例,要看在小cache下的效能
- 物理讀
- 事務複雜度
- 多表併發
系統層面的一些注意點:
- 檔案系統:Ext4 xfs
- IO排程演算法
- IO cpu affinity
- Scsi-mq/blk-mq(新核心特性)
測試優化結合
InnoDB壓縮測試:
- InnoDB內建壓縮
- 基於zlib庫
- 理論可以達到50%左右的壓縮比
- 但是效能有損失
- CPU時間換儲存空間
- 對SSD壽命有好處
- 如何用好呢?
基於我們之前的測試過程,我們可以得到結論,InnoDB壓縮比在50%左右,對寫入效能損失比較大, 損失比例在70%左右。根據這個結論,我們就可以針對我們線上業務選擇是否需要使用InnoDB壓縮。
TokuDB:
- MySQL的一個儲存引擎,支援事務 ACID 特性
- 支援多版本控制(MVCC)
- 基於Fractal Tree Index,非常適合寫入密集場景
- 高壓縮比
- 原生支援Online DDL
- 主流分支都支援
- 收費 轉開源
這是我們測試結果,可以看到TokuDB更好的壓縮比和更好的寫入穩定性,當然代價就是更高的CPU消耗。
總結
- 現在不再是效能為王的時代
- 真正瞭解自己需求才是更重要的
- 發掘快閃記憶體效能,軟硬體結合
- 拓展快閃記憶體應用空間
- 做真正有價值的事情
- 如何做到更好的軟硬體結合(其實現在硬體是超前於一些軟體的)
以此圖結尾,不要只活在當下,要勇敢的接受新技術,勇於試錯,當然試錯成本和收益也要評估和可控的。其實很多技術理解透徹了,可能並沒有別人說的“邪惡”。
以上內容根據2016年7月5日晚微信群分享內容整理。分享人楊尚剛,熊貓TV DBA,前新浪高階資料庫工程師,負責新浪微博核心資料庫架構改造優化,以及資料庫相關的伺服器儲存選型設計。DockOne每週都會組織定向的技術分享,歡迎感興趣的同學加微信:liyingjiesz,進群參與,您有想聽的話題或者想分享的話題都可以給我們留言。
文章出處:http://dockone.io/article/1518?utm_source=tuicool&utm_medium=referral