簡介:近日,智能數據庫和DAS團隊研發的智能調參ResTune系統論文被SIGMOD 2021錄用,SIGMOD是數據庫三大頂會之首,是三大頂會中惟一一個Double Blind Review的,其權威性毋庸置疑。
近日,智能數據庫和DAS團隊研發的智能調參ResTune系統論文被SIGMOD 2021錄用,SIGMOD是數據庫三大頂會之首,是三大頂會中惟一一個Double Blind Review的,其權威性毋庸置疑。 算法
ResTune論文的錄用,說明了咱們在智能化數據庫管控方向的技術積累和深度,也是阿里雲自治數據庫和智能化運維里程碑式的一步。目前,智能調參功能已經在數據庫自治服務(DAS)上落地,是業界第一個正式上線的數據庫配置參數智能調參功能,進一步說明了阿里雲自治數據庫方向的技術領先性。數據庫
1. 概述後端
調參服務在阿里豐富的業務場景中有着普遍的應用,如數據庫系統的性能與配置參數優化、機器學習模型/深度神經網絡的超參選擇、推薦系統和雲調度系統中參數的自適應調節、工業控制和供應鏈中的仿真優化和參數優化等。如何在生產環境中支持客戶實際需求,是學術界AI for system的一個研究熱點。數組
今年,由達摩院-數據庫與存儲實驗室-智能數據庫團隊研發的ResTune智能調參工做(ResTune: Resource Oriented Tuning Boosted by Meta-Learning for Cloud Databases,地址:安全
https://dl.acm.org/doi/pdf/10.1145/3448016.3457291__),主要針對OLTP數據庫系統的性能參數進行調優,涉及RDS MySQL、RDS PostgreSQL、PolarDB MySQL、PolarDB-O等數據庫系統,該工做發表在數據庫領域的頂級會議SIGMOD2021(Research Track),並在阿里雲數據庫自治服務DAS產品中技術落地。 性能優化
2. 背景網絡
數據庫系統如MySQL提供200多個配置參數,不一樣的參數組合與不斷變化的業務負載特徵,共同決定着數據庫系統的性能和資源使用。針對集團內的業務,一般DBA會根據不一樣的業務,按人工經驗手動選擇一組適合的參數。隨着數據庫上雲的加速,業務愈來愈多樣化,僅僅依賴於DBA人工調參遇到水平擴展的瓶頸制約。同時,因爲DBA經驗的差別性,很難對多種多樣的業務負載都找出最優參數。雲廠商要作到「客戶第一」,自動化的調參功能相當重要:在不一樣的實例環境下對時間上不斷變化的多樣業務負載,自適應的提供個性化的優化參數。架構
數據庫系統調參須要同時考慮性能(如Transactions per second/TPS、Latency)和資源使用(CPU、Memory、IO)的狀況。性能優化當然重要,但真實負載的TPS每每受用戶的request rate所限,很難達到峯值性能。圖1是兩個參數下不一樣取值的TPS和CPU利用率,能夠看到,在TPS最高的紅色區域對應的CPU利用率變化較大,從15%到75%。而在TPS相同的狀況下,資源利用率有很大優化空間。從成本角度,TCO(Total Cost of Ownership)是雲數據庫的重要指標,也是雲數據庫的主要優點。app
優化資源使用對減小云數據庫的TCO,提升成本優點有着重要意義。事實上,咱們發現雲上大多數實例都存在Over-Provision的狀況。此外,資源使用太高可能會形成雲數據庫的異常和資源爭搶帶來的性能降低;優化數據庫的資源使用可以有效減小甚至避免此類狀況引起的故障,提升穩定性。運維
3. 挑戰
咱們分析了調參的目標是同時考慮優化資源使用率和性能,上文也提到性能如TPS每每會被客戶端的request rate所限而達不到峯值性能。所以,咱們須要找出資源利用率最小的數據庫配置參數,而且知足SLA的要求。
另外一方面,調參自己須要儘量快(否則違背了下降資源使用),一般的調參系統須要上百步迭代來找出好的配置,每一步迭代約3-5分鐘回放workload,這樣一般須要天級別的時間進行調參訓練。但若是想解決在線troubleshoot的需求,每每須要在1個小時內找出問題,進行恢復。做爲雲廠商,咱們基於已有業務負載調參的歷史數據,採用知識遷移學習,可有效加速調參過程,從而儘量快地找出好的數據庫參數配置。
4. 相關工做
數據庫調參是最近研究相對熱門的領域,在過去幾年中有很多工做發表。這些工做按照技術思路主要能夠分爲三大類:基於搜索的啓發式方法、基於貝葉斯優化的方法、基於強化學習(Reinforcement Learning)模型的方法。
- 基於搜索的啓發式方法:該類方法一般基於啓發式思路,經過給定的規則算法進行搜索來找出優化參數,這一工做的表明是BestConfig[3]系統。這類方法依賴於對workload以及參數對性能影響的先驗假設,但在實際中特別是雲場景,每每很難爲每一個workload進行特殊優化和特徵工程。這類方法在搜索一組新參數的時候,沒有考慮到以前採樣到數據的分佈,所以效率不高。
- 基於貝葉斯優化的方法:該類方法的表明是iTuned[4]和CMU的Andy Pavlo實驗室的SIGMOD17工做OtterTune[5]。貝葉斯優化將調參看做是一個黑盒優化問題,經過代理函數模擬參數和目標間的函數,並設計採集函數來最小化採樣步數。這類方法沒有考慮以優化資源爲目標的調參,只考慮了優化峯值性能。在實際中,除了壓測和大促的極端場景,一般用戶對TPS是無感的,TPS每每達不到峯值,所以僅考慮性能做爲目標還不夠。OtterTune系統還提出了基於Internel Metric(數據庫狀態表的指標)的mapping的方案來利用已有數據,這種mapping方法利用來自同一硬件類型的歷史數據,沒有充分利用雲廠商豐富的數據資源。另外一方面,這種方式依賴於預測出來的Internel Metric的類似性計算,在數據點較少的狀況下容易不許確。
- 基於強化學習的方法:這類方法是最近數據庫調參的熱門方向,主要包括SIGMOD18的工做CDBTune[6]和VLDB19的QTune[7]工做。經過將Internal Metrics(state)到Knobs(action)的關係抽象成一個policy neural network和一個value network來反饋,將數據庫調參問題轉化成一個馬爾科夫決策過程,不斷地自我訓練,學習出最優參數。一方面,這類工做沒有考慮優化資源。另外一方面,更重要的是調參問題並非一個帶狀態的馬爾科夫決策過程,由於參數直接決定了數據庫性能,不須要複雜的狀態空間, 不一樣於強化學習須要經過解bellman equation來優化模型累計得到的Reward。在這些工做中,每每須要上千步迭代找出好的參數,這難以知足咱們在生產環境中進行調參的要求。
5. 問題定義和算法概述
咱們將問題定義成帶限制的優化問題以下,其中限制條件常數可經過設定爲默認配置參數下的TPS和Latency值。
ResTune將最優化資源使用並知足SLA轉化成帶限制的優化 (Constrained Bayesian Optimization) 問題。相比於傳統的貝葉斯優化算法,這裏採用了帶限制的 EI 函數 (Constrained EI, CEI),咱們將限制信息加入了經常使用的 EI 效用函數(Acqusition Function)。詳見論文的第五章內容。
另外一方面,爲了更好地利用已有數據,ResTune還設計了靜態權重和動態權重相結合的高斯加權模型。經過ensemble歷史的高斯過程模型,加權平均出目標workload的surrogate函數。這裏最核心的問題是如何定義權重。
在冷啓動時(沒有觀察數據時),靜態權重學習會根據任務工做負載的 meta-feature 距離分配權重。meta-feature 的計算須要經過工做負載的分析,獲得工做負載特徵向量。
當積累了必定數據(如10條數據)後,ResTune使用動態權重學習策略,經過偏序關係(以下圖所示,儘管TPS絕對值不一樣,可是曲面趨勢相同,所以偏序關係也相似),比較歷史學習器的預測與目標任務的真實觀察結果之間的類似程度。使用動態分配策略,權重會隨着對目標工做負載的觀察次數的增長而動態更新。經過這兩種策略,ResTune最終獲得了一個元學習器(Meta-Learner),它能夠做爲經驗豐富的代理模型,更多的細節能夠參考論文的第六章內容。
6. ResTune系統設計
ResTune將調參問題抽象成帶限制的優化問題,即最小化資源使用率,同時知足SLA的限制。下圖給出了ResTune的系統架構設計。ResTune 系統包括兩個主要部分:ResTune Client 和 ResTune Server。
- ResTune Client 運行在用戶VPC環境中,負責目標任務的預處理和推薦參數配置的執行,由 Meta-Data Processing 模塊和 Target Workload Replay 模塊組成。
- ResTune Server 運行在後端調參集羣中,負責在每次訓練迭代中推薦參數配置,包括 Knowledge Extraction 模塊和 Knobs Recommendation 模塊。
一次調參任務中的一個迭代步流程以下:當一個調參任務開始後,系統首先對目標數據庫進行拷貝,並收集一段時間內的目標工做負載到用戶環境用於將來的回放。
在每一輪迭代中,目標任務首先經過 Meta-Data Processing 模塊獲得 meta-feature 與 base model,做爲 Knowledge Extraction 模塊的輸入;Knowledge Extraction 模塊負責計算當前任務與歷史任務 base model 集成時的靜態與動態權重,並對 base models 進行加權求和獲得 meta model;在 Knobs Recommendation 模塊根據 Meta Learner 推薦一組參數配置;Target Workload Replay 模塊對推薦參數進行驗證,並將結果寫入目標任務的歷史觀察數據。
以上訓練過程重複若干迭代步,當達到最大訓練步或提高效果收斂時終止。目標任務訓練結束後,ResTune會當前任務的 meta-feature 與觀察數據收集到 Data Repository 做爲歷史數據。
每一個模塊的具體功能以下:
- Meta-Data Processing: 在調參任務初始啓動時,元數據處理模塊分析目標任務的工做負載,使用 TF-IDF 方法統計 SQL 保留字做爲目標任務的特徵向量 (meta-feature);在每輪迭代中,元數據處理模塊以歷史觀察數據爲輸入,通過歸一化處理後,對資源(CPU, memory, IO等)利用率、TPS、Latency 擬合高斯模型,做爲目標任務的基模型。
- Knowledge Extraction: 爲了提取與利用歷史知識,咱們提出了採用高斯模型加權求和的集成方式,即元模型 M 的關鍵參數 u由基模型加權計算獲得。在計算基模型權重時採用了靜態與動態兩種方式。在初始化時,權重的計算採起靜態方式,以特徵向量做爲輸入,經過預訓練的隨機森林,獲得資源利用率的機率分佈向量,最終以據機率分佈向量之間的距離做爲任務類似性,決定靜態權重。當數據量充足後,ResTune使用動態權重學習策略,比較基學習器的預測與目標任務的真實觀察結果之間的類似程度。 使用動態分配策略,權重會隨着對目標工做負載的觀察次數的增長而更新。經過這兩種策略,咱們最終獲得元學習器,它能夠做爲經驗豐富的代理模型。
- Knobs Recommendation: 參數推薦模塊根據元模型推薦一組參數配置;採集函數咱們使用了帶限制的 EI 函數 (Constrained EI, CEI),其根據限制狀況重寫了 EI 的效用函數:當參數不知足 SLA 限制時效用置0,且當前最佳參數定義爲知足 SLA 限制的最佳參數。CEI 採集函數可以更好的引導探索知足限制的最優區域。
- Target Workload Replay: 目標工做負載回放模塊首先推薦參數應用在備份數據庫上,並觸發工做負載的回放,通過一段時間的運行驗證後,驗證結果(包括資源利用率、TPS、latency)與推薦參數將一塊兒寫入目標任務的觀察歷史。
7. 實驗評測
咱們在多個場景下對比了 ResTune 和其它 SOTA (state-of-the-art)系統的性能與速度。
7.1. 單任務場景
首先,在單任務場景下,咱們選定CPU利用率做爲優化目標,驗證了 ResTune 解決帶 SLA 限制的優化問題的效果。這裏咱們測試了Sysbench、Twitter、TPC-C和兩個真實的workload:Hotel Booking和Sales。能夠看出,ResTune方法在全部負載上均可以獲得最佳效果與最佳效率。
7.2. 遷移場景
因爲雲數據庫上存在大量用戶各類實例,所以咱們提出的方法可否在不一樣工做負載、不一樣硬件之間遷移相當重要。一樣以CPU利用率做爲優化目標,咱們測試了不一樣機器硬件之間的遷移效果,能夠看到咱們提出的元學習算法帶來了顯著的訓練速度提高和訓練效果提高。使得整個ResTune的調參過程能在30-50步左右完成,而非遷移場景一般須要幾百個迭代步。
相似的,在不一樣工做負載之間的遷移實驗中,咱們的元學習方法也帶來了顯著的訓練速度提高。
7.3. Memory和I/O資源優化
除CPU資源外,咱們測試了內存資源、IO資源的調參優化效果。下圖能夠看出,對於IO資源優化調參任務,ResTune 下降了 84% - 90% IOPS;對於內存資源優化調參任務,ResTune 將內存利用從 22.5G 降低至 16.34G。咱們在論文中還估算了TCO的成本減小。
8. DAS業務落地
智能調參技術在DAS(Database Autonomy Service)產品上進行了落地。咱們分爲不一樣階段和細化功能進行上線。主要包括模板功能和基於壓測的智能調參功能。阿里雲是業界第一個上線調參功能的廠商,領先於騰訊和華爲。
8.1. 模板參數功能
模板參數功能是咱們一期上線的調參場景。在此以前,雲上RDS MySQL數據庫僅有一套統一的參數模板,這很難知足雲上各不相同的用戶業務負載。所以,咱們選取了不一樣種類的benchmark,在用戶使用最頻繁的RDS Instance類型上調參的離線訓練。
咱們將用戶負載分爲典型的6種場景如交易、社交網絡、壓測等,經過離線訓練咱們給每一種典型場景訓練出了最優配置,並提供給用戶根據其業務特徵進行選擇。這樣咱們將以前的RDS的統一一套參數模板擴展到了多種典型的OLTP業務場景。
下表列出了咱們離線調參訓練的結果,在不一樣workload上有13%-50%的提高。這裏咱們以TPS性能做爲優化目標。
Workload名稱 |
RDS默認配置下的TPS |
調參後的TPS |
提高百分比 |
TPCC(訂單處理) |
620 |
940 |
<span>↑52%</span> |
Smallbank(銀行業務處理) |
17464 |
22109 |
<span>↑26.6%</span> |
Sysbench(壓力測試) |
7950 |
10017 |
<span>↑26%</span> |
Twitter(社交網絡) |
41031 |
48946 |
<span>↑19.2%</span> |
TATP(通訊) |
18155 |
21773 |
<span>↑19%</span> |
YCSB(壓力測試) |
41553 |
55696 |
<span>↑34%</span> |
Wikipedia(知識百科) |
600 |
678 |
<span>↑13%</span> |
8.2. 基於壓測的智能調參功能Cloudtune 以上基於模板參數功能驗證了雲上用戶對智能調參功能的需求。事實上,除了特別專業的用戶,大部分用戶較難很是準確地把握其業務特徵。所以,用戶沒法選出最合適其workload特色的一組參數模板。 爲了解決用戶痛點,咱們在DAS上線了基於壓測的智能調參功能。主要經過收集並回放用戶真實workload(在用戶VPC環境進行保證安全性),來針對用戶業務負載,定製化地訓練出性能最優的參數配置。這個功能咱們叫作Cloudtune智能調參。 如前文ResTune的架構設計,咱們首先須要在用戶VPC環境準備一個用戶數據庫RDS目標實例,而後啓動一個壓測肉機進行用戶環境真實workload的回放,並採集目標實例上的性能數據進行調參訓練。DAS Master用戶打通線上VPC環境和後端網絡環境。後端DAS App負責調參的主控邏輯,主要操做在用戶VPC環境的回放壓測,從而獲取相應Metric(資源使用率、TPS、Latency等),而後經過調用Cloudtune Microservice來進行迭代訓練,Cloudtune Service經過算法模型給出下一個採樣配置和目前爲止找出的最好配置參數。
9. 將來工做 目前上線的調參功能是經過拉庫回放的方式,對用戶來講是一種離線的操做,且相對繁瑣。咱們正在爲幫用戶簡化去這個過程進行在線動態調參。 在線動態調參技術的挑戰和要求更高,首先,參數調節效果要求穩步提高,不能讓系統運行時出現性能猛烈的降低,不能影響線上實時的服務;其次,爲了保證線上穩定性和調節過程快速收斂,在線動態調參須要針對不一樣的workload自動選擇關鍵的相關參數進行調節;最後,目前的工做假設用戶負載變化不頻繁,一旦用戶負載變化就須要從新進行調參。爲了提升用戶體驗,要結合workload的檢測支持自適應的調參服務。
10. 智能數據庫其餘研究工做簡介 智能數據庫團隊以數據庫運維和內核智能化爲主要方向,深度融合人工智能、機器學習和數據庫專家經驗,使數據庫具有自治能力,實現自感知、自優化、自修復與自安全,保障服務的穩定、安全及高效。對外提供業內首個智能數據庫管控平臺Database Autonomy Service (DAS) 。 相關工做還包括異常SQL檢測之大海撈針、一鍵智能壓測與基於壓縮感知的數據庫生成、採樣算法和SQL workload外置優化、圖多模數據異常檢測與根因診斷、索引推薦、冷熱數據分離、基於實例知識圖譜的智能調度、NLP2SQL人機交互接口、計算平臺一體化、One-sided RDMA內存池化系統研發等。例如,DAS團隊在VLDB2020上發表的工做Leaper[2]有效地進行數據預取和Cache淘汰,解決了LSM-Tree存儲引擎架構的性能抖動,是學術界將機器學習模型集成到在OLTP數據庫內核的重要嘗試。 最近DAS基於統計與醫療數據分析中的生存分析設計了全新的冷熱數據分層算法,集成至Polar X Engine中,測試顯示性能提高10%,存儲成本降低25%。一樣在VLDB2020年發表的慢SQL診斷工做,DAS解決了海量SQL請求中近90%的CPU密集型的異常問題。
參考文獻 [1] Zhang, Xinyi, Hong Wu, Zhuo Chang, Shuowei Jin, Jian Tan, Feifei Li, Tieying Zhang, and Bin Cui. "ResTune: Resource Oriented Tuning Boosted by Meta-Learning for Cloud Databases." In Proceedings of the 2021 International Conference on Management of Data, pp. 2102-2114. 2021. [2] Yang, Lei, Hong Wu, Tieying Zhang, Xuntao Cheng, Feifei Li, Lei Zou, Yujie Wang, Rongyao Chen, Jianying Wang, and Gui Huang. "Leaper: a learned prefetcher for cache invalidation in LSM-tree based storage engines." Proceedings of the VLDB Endowment 13, no. 12 (2020): 1976-1989. [3] Y.Zhu,J.Liu,MengyingGuo,YungangBao,WenlongMa,ZhuoyueLiu,Kunpeng Song, and Yingchun Yang. 2017. BestConfig: tapping the performance potential of systems via automatic configuration tuning. Proceedings of the 2017 Symposium on Cloud Computing (2017). [4] SongyunDuan,VamsidharThummala,andShivnathBabu.2009.TuningDatabase Configuration Parameters with ITuned. Proc. VLDB Endow. 2, 1 (Aug. 2009), 1246–1257. [5] Dana Van Aken, Andrew Pavlo, Geoffrey J. Gordon, and Bohan Zhang. 2017. Automatic Database Management System Tuning Through Large-scale Machine Learning. In Acm International Conference on Management of Data. 1009–1024. [6] Ji Zhang, Yu Liu, Ke Zhou, Guoliang Li, Zhili Xiao, Bin Cheng, Jiashu Xing, Yangtao Wang, Tianheng Cheng, Li Liu, Minwei Ran, and Zekang Li. 2019. An End-to-End Automatic Cloud Database Tuning System Using Deep Reinforce- ment Learning. In Proceedings of the 2019 International Conference on Management of Data (Amsterdam, Netherlands) (SIGMOD ’19). Association for Computing Ma- chinery, New York, NY, USA, 415–432. [7] Guoliang Li, Xuanhe Zhou, Shifu Li, and Bo Gao. 2019. QTune. Proceedings of the Vldb Endowment (2019) [8]Tan, J., Zhang, T., Li, F., Chen, J., Zheng, Q., Zhang, P., ... & Zhang, R. (2019). ibtune: Individualized buffer tuning for large-scale cloud databases. Proceedings of the VLDB Endowment, 12(10), 1221-1234.
*
7月7日14點
數據庫自治服務DAS年度重磅發佈DAS自治勝似閒庭信步數據庫自動駕駛進入規模化時代 掃描
下圖二維碼或點擊「
這裏」預定觀看直播
> 本文內容由阿里雲實名註冊用戶自發貢獻,版權歸原做者全部,阿里雲開發者社區不擁有其著做權,亦不承擔相應法律責任。具體規則請查看《阿里雲開發者社區用戶服務協議》和《阿里雲開發者社區知識產權保護指引》。若是您發現本社區中有涉嫌抄襲的內容,填寫侵權投訴表單進行舉報,一經查實,本社區將馬上刪除涉嫌侵權內容。