4月29日,信服云研發技術專家Frank.Lee在信服云《Tech Talk · 云技術有話聊》系列直播課上進行了《高業務負載虛擬機熱遷移的挑戰和優化實踐》的分享,詳細介紹了原生QEMU在高業務負載虛擬機熱遷移場景里面臨的挑戰、導致高業務負載虛擬機熱遷移困難的原因、信服云的優化實踐經驗分享等內容。以下是他分享的內容摘要,想要了解更多可以關注“深信服科技”公眾號回顧本期直播。
一、虛擬機熱遷移技術介紹
熱遷移是指把虛擬機從一個物理主機(源主機)遷移到另一個物理主機(目的主機),分為:只遷移虛擬機運行位置的同存儲熱遷移、同時遷移虛擬機運行位置和存儲位置的跨存儲熱遷移。在熱遷移過程中,虛擬機業務不會中斷,最后的停機遷移階段,虛擬機會有短暫的停頓,熱遷移完成后,虛擬機會在目的主機上繼續運行。
隨著越來越多的用戶將核心業務部署到云平臺,用戶對業務的停機時間要求越來越高,甚至提出了零停機的能力要求。尤其是在物理主機維護、云平臺熱升級、云平臺調度集群內虛擬機運行位置等場景中,虛擬機熱遷移操作的性能影響、遷移結果、資源消耗、遷移時長都會影響云平臺的使用體驗。
二、挑戰和優化實踐
挑戰1:算法效率低下
原生QEMU熱遷移內存數據使用的壓縮算法是zlib,它單核的壓縮性能低,QEMU壓縮線程的CPU消耗高。這些會導致:性能無法滿足高負載場景,在帶寬受限場景下可能無法熱遷移完成,會嚴重消耗物理主機的CPU資源,導致物理主機其它業務系統性能下降。
信服云提出了QEMU熱遷移壓縮算法替換為lz4的優化實踐方法,這使得速率提升7倍以上,CPU消耗降低80%。
挑戰2:臟數據放大
QEMU在遷移磁盤數據時,會通過BITMAP來記錄磁盤臟數據塊,原生QEMU的磁盤BITMAP對應數據塊的粒度大小是1M,假設某個數據塊中有4K數據發生修改,BITMAP也會將整個數據塊(1M大小)標記為臟,后續就需要遷移這1M的數據,由此帶來了磁盤臟數據放大問題。
針對這個挑戰,信服云實現了磁盤熱遷移BITMAP數據塊粒度動態調整機制,將BITMAP數據塊粒度做成遷移前動態可配置,BITMAP數據塊粒度默認值從1M改為64K。
挑戰3:CPU空耗
原生QEMU進行跨存儲熱遷移,在增量迭代遷移階段,熱遷移流程會遍歷磁盤每個數據塊,檢測其狀態是否為臟;在磁盤熱遷移進入到增量迭代的最后階段,如果磁盤數據塊總量比較多,而剩余臟數據塊量比較少時,熱遷移線程的CPU大量消耗在干凈數據塊的無效遍歷。在Oracle場景的實測結果,這里會導致60%以上的CPU額外消耗。
信服云改進了磁盤臟數據塊的檢索機制, 對磁盤臟數據塊維護一個多級檢索位圖;磁盤熱遷移時,對臟數據塊的檢測方式,由遍歷檢測改為直接對臟數據塊進行多級檢索,能夠更高效地定位臟數據塊位置。最終實現了跨存儲熱遷移總耗時下降20%,熱遷移線程的CPU消耗下降60%。
挑戰4:業務性能受影響時間較長
進入到增量迭代遷移階段后,如果內存臟數據的生成速率大于遷移速率時,遷移就永遠無法完成。原生QEMU通過CPU節流策略來解決此問題,原生QEMU熱遷移的CPU節流策略較為保守和呆板,在高業務負載場景下,CPU節流持續時間長,導致業務性能持續受到影響。
信服云實現了一套新的CPU節流策略,在熱遷移過程中引入直接節流和階段式節流兩種節流方式,替換QEMU默認的節流策略,大幅縮短切換downtime時間,大約在2s內。
挑戰5:熱點內存的重復無效遷移
現在的業務系統在架構設計方面大多都遵循內存局部性原理,內存局部性原理分為:時間局部性和空間局部性。根據內存局部性原理,虛擬機業務在運行過程中,會存在大量的熱點內存,在短時間內被頻繁地訪問和修改。虛擬機熱遷移進入到增量迭代遷移階段時,熱點內存由于頻繁修改,在每輪迭代都會變臟而重復遷移。這會導致網絡帶寬和CPU資源的浪費,以及熱遷移時間變長。
信服云實現了一套熱點內存臟數據延遲遷移機制——熱點內存臟數據延遲遷移機制,減少重復內存數據傳輸,耗時縮短30%,內存數據量降低35%。
三、優化實踐效果總結
同存儲熱遷移場景
(1)跑滿萬兆帶寬,QEMU壓縮線程的CPU消耗減少80%;
(2)熱遷移耗時減少30%;
(3)遷移內存總量減少35%;
(4)Oracle虛擬機業務性能受影響時間控制在6s以內。
跨存儲熱遷移場景
(1)Oracle數據庫場景(8K隨機寫IO模型),磁盤臟數據放大率從93下降到8,大幅降低了磁盤臟數據傳輸量;
(2)QEMU熱遷移線程的CPU開銷減少60%;
(3)跨存儲熱遷移總耗時減少20%;
(4)Oracle虛擬機磁盤遷移能力提升10倍。
實踐證明,深信服超融合承載的Oracle業務在遷移過程中性能僅抖動了6s,其中業務中斷時間僅1s,上層業務可獲得近乎0中斷的平滑遷移體驗。
以上就是本次直播的主要內容。對云計算感興趣的IT朋友可以關注“深信服科技”公眾號回顧本期直播,了解更多云計算知識。