冷啟動(dòng) (Cold Start) 一直是 Serverless 領(lǐng)域面臨的優(yōu)化難題之一,華為云創(chuàng)新提出了基于進(jìn)程級(jí)快照的冷啟動(dòng)加速解決方案,致力于在用戶幾乎無(wú)感知的前提下,有效提升應(yīng)用的冷啟動(dòng)性能; 特別的,Java 應(yīng)用冷啟動(dòng)速度慢的問(wèn)題尤為突出。本文以 Java 場(chǎng)景為例,介紹華為云在冷啟動(dòng)性能優(yōu)化方面的探索歷程,并揭秘 90%+ 性能提升背后的技術(shù)實(shí)現(xiàn)原理。文末我們也提供了 Quick Start,幫助用戶更快地上手該新特性。
|問(wèn)題引言:
Java 應(yīng)用冷啟動(dòng)速度面臨巨大挑戰(zhàn)

平臺(tái)側(cè)時(shí)間:
服務(wù)側(cè)時(shí)間:
框架復(fù)雜:Spring 作為一個(gè)企業(yè)級(jí)的框架,為了支持廣泛的應(yīng)用需求,存在大量的可配置和初始化邏輯,并通過(guò)復(fù)雜的設(shè)計(jì)模式來(lái)支撐這種靈活性。例如,一個(gè) spring-boot-web 的 hello world,依賴的 class 文件就多達(dá) 7404 個(gè),見(jiàn)圖 2; JVM 的一次編譯,到處運(yùn)行:類加載時(shí),查找類、校驗(yàn)類的開(kāi)銷會(huì)隨著應(yīng)用復(fù)雜度而增長(zhǎng);同時(shí),在應(yīng)用剛啟動(dòng)時(shí),方法還沒(méi)有完全被 JIT 編譯完成,因此大部分情況停留在解釋執(zhí)行,影響了應(yīng)用啟動(dòng)的速度。

華為云的優(yōu)化探索之路

與圖 1 對(duì)應(yīng),此階段一般占總耗時(shí)的 90% 左右。
Restore 耗時(shí)是秒級(jí),相當(dāng)于將數(shù)十秒完整的初始化時(shí)間(在圖 1 的示例中)縮短至秒級(jí) Restore 耗時(shí),啟動(dòng)性能提升了一個(gè)數(shù)量級(jí)
由于 Image File 是進(jìn)程運(yùn)行時(shí)的快照,在重建進(jìn)程之后,會(huì)涉及到進(jìn)程持有狀態(tài)的有效性更新。例如已建立的外部鏈接、加載到進(jìn)程里的緩存信息等。故我們引入了 Restore Hook 的概念,提供手段讓業(yè)務(wù)對(duì)這些狀態(tài)進(jìn)行刷新,詳見(jiàn) Part IV。

在 Source 機(jī)器上啟動(dòng)微服務(wù),通過(guò)健康檢查和初始化調(diào)用后,進(jìn)行 Checkpoint,停止服務(wù),生成進(jìn)程快照信息; 在 Source 機(jī)器上將進(jìn)程快照信息和微服務(wù)所有相關(guān)依賴,進(jìn)行壓縮,加密生成內(nèi)存快照包,并上傳至云端存儲(chǔ)。 在 Target 機(jī)器上從持久化存儲(chǔ)中下載對(duì)應(yīng)微服務(wù)的內(nèi)存快照包,進(jìn)行解壓恢復(fù)。 在 Target 機(jī)器上 Restore 微服務(wù)進(jìn)程;


CRIU 首先通過(guò)操作系統(tǒng)的 /proc 目錄獲取指定進(jìn)程和該進(jìn)程下所有子進(jìn)程的信息,包含文件描述符 (/proc/$pid/fd)、管道參數(shù)、網(wǎng)絡(luò)配置和內(nèi)存映射文件 (/proc/$pid/maps) 等; CRIU 接著通過(guò) Linux 的 ptrace syscall 接口把一段特殊代碼動(dòng)態(tài)注入到該進(jìn)程的地址空間,通過(guò)執(zhí)行該動(dòng)態(tài)代碼,CRIU 以 UNIX 守護(hù)進(jìn)程的方式收集 dumpee 進(jìn)程存放在寄存器里的內(nèi)存數(shù)據(jù); CRIU 將所有進(jìn)程信息都收集完畢后,再次調(diào)用 ptrace 接口,去掉動(dòng)態(tài)注入的代碼,恢復(fù)該進(jìn)程的原有代碼; CRIU 根據(jù)收集的進(jìn)程內(nèi)存信息,生成多個(gè)以功能分類的鏡像文件,并默認(rèn)殺死進(jìn)程,完成 Checkpoint;
CRIU 解析 Checkpoint 階段生成的鏡像文件,并分析多進(jìn)程的共享資源; CRIU 通過(guò) Linux 的 fork 接口重新構(gòu)建、恢復(fù)進(jìn)程和其共享資源; CRIU 恢復(fù)所有任務(wù)的資源,但不包含內(nèi)存映射地址,定時(shí)器,線程等; CRIU 根據(jù)鏡像文件重新映射內(nèi)存空間,切換進(jìn)程上下文,恢復(fù)進(jìn)程的繼續(xù)執(zhí)行,完成 Restore;

不難發(fā)現(xiàn),Restore Hook 需要應(yīng)用本身進(jìn)行少量的代碼適配。為了進(jìn)一步簡(jiǎn)化應(yīng)用的改造負(fù)擔(dān),我們也進(jìn)行了一種新的技術(shù)嘗試,可以理解其充當(dāng)了用戶應(yīng)用與 BaaS 之間的紐帶,通過(guò)狀態(tài)卸載等手段,對(duì)開(kāi)發(fā)者透明,幫助應(yīng)用完成狀態(tài)的自動(dòng)化刷新。這部分探索會(huì)在后續(xù)的技術(shù)博文中跟大家分享,敬請(qǐng)期待。
|效果實(shí)測(cè):
Java 冷啟動(dòng)時(shí)延降低 90%+

基于華為云 FunctionGraph 的簡(jiǎn)單實(shí)戰(zhàn)







|總結(jié)與展望
[2]https://wiki.openjdk.org/display/HotSpot/Application+Class+Data+Sharing+-+AppCDS
[3]https://spring.io/blog/2019/03/14/lazy-initialization-in-spring-boot-2-2
[4]https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#beans-scanning-index
[5]https://github.com/checkpoint-restore/criu
[6]https://speakerdeck.com/udzura/introduction-to-criu?slide=32
[7]https://support.huaweicloud.com/functiongraph/index.html
原文標(biāo)題:華為云發(fā)布冷啟動(dòng)加速解決方案:助力Serverless計(jì)算速度提升90%+
文章出處:【微信公眾號(hào):華為DevCloud】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
華為
+關(guān)注
關(guān)注
218文章
36212瀏覽量
262723
原文標(biāo)題:華為云發(fā)布冷啟動(dòng)加速解決方案:助力Serverless計(jì)算速度提升90%+
文章出處:【微信號(hào):華為DevCloud,微信公眾號(hào):華為DevCloud】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
華為在MWC 2026正式發(fā)布新一代智能電信云解決方案TICC 2.0
華為面向全球正式發(fā)布Agentic Core解決方案
華為攜手伙伴發(fā)布行業(yè)數(shù)智融合解決方案合作計(jì)劃
華為發(fā)布全新升級(jí)星河AI MSP云管服務(wù)解決方案
軟通動(dòng)力攜手華為云推出iPaaS海外集成遷移聯(lián)合解決方案
亞馬遜云科技推出Amazon DocumentDB Serverless,簡(jiǎn)化數(shù)據(jù)庫(kù)管理并大幅節(jié)省成本
SIP 廣播對(duì)講與華為視頻會(huì)議融合解決方案
軟通動(dòng)力攜手華為云推出AI知識(shí)引擎與數(shù)據(jù)工程融合創(chuàng)新解決方案
華為AI UBB解決方案加速網(wǎng)絡(luò)邁向高階智能
鴻蒙5開(kāi)發(fā)寶藏案例分享---冷啟動(dòng)優(yōu)化案例分享
HarmonyOS5云服務(wù)技術(shù)分享--Serverless抽獎(jiǎng)模板部署
HarmonyOS5云服務(wù)技術(shù)分享--Serverless搭建抽獎(jiǎng)
HarmonyOS5云服務(wù)技術(shù)分享--ArkTS開(kāi)發(fā)Node環(huán)境
快手上線鴻蒙應(yīng)用高性能解決方案:數(shù)據(jù)反序列化性能提升90%
玻璃基板精密檢測(cè),優(yōu)可測(cè)方案提升良率至90%
華為云發(fā)布冷啟動(dòng)加速解決方案:助力Serverless計(jì)算速度提升90%+
評(píng)論