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

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

華為云的優化探索之路

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

在 Source 機器上啟動微服務,通過健康檢查和初始化調用后,進行 Checkpoint,停止服務,生成進程快照信息; 在 Source 機器上將進程快照信息和微服務所有相關依賴,進行壓縮,加密生成內存快照包,并上傳至云端存儲。 在 Target 機器上從持久化存儲中下載對應微服務的內存快照包,進行解壓恢復。 在 Target 機器上 Restore 微服務進程;


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

不難發現,Restore Hook 需要應用本身進行少量的代碼適配。為了進一步簡化應用的改造負擔,我們也進行了一種新的技術嘗試,可以理解其充當了用戶應用與 BaaS 之間的紐帶,通過狀態卸載等手段,對開發者透明,幫助應用完成狀態的自動化刷新。這部分探索會在后續的技術博文中跟大家分享,敬請期待。
|效果實測:
Java 冷啟動時延降低 90%+

基于華為云 FunctionGraph 的簡單實戰







|總結與展望
[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
原文標題:華為云發布冷啟動加速解決方案:助力Serverless計算速度提升90%+
文章出處:【微信公眾號:華為DevCloud】歡迎添加關注!文章轉載請注明出處。
-
華為
+關注
關注
216文章
35026瀏覽量
255047
原文標題:華為云發布冷啟動加速解決方案:助力Serverless計算速度提升90%+
文章出處:【微信號:華為DevCloud,微信公眾號:華為DevCloud】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
HarmonyOS5云服務技術分享--Serverless抽獎模板部署
HarmonyOS5云服務技術分享--Serverless搭建抽獎
HarmonyOS5云服務技術分享--ArkTS開發Node環境
快手上線鴻蒙應用高性能解決方案:數據反序列化性能提升90%
華為乾坤云管理解決方案2.0正式發布
華為發布云網端一體化網絡安全解決方案
華為發布AI WAN解決方案
米爾國產FPGA SoC芯選擇,安路飛龍DR1M90核心板重磅發布
鴻蒙原生頁面高性能解決方案上線OpenHarmony社區 助力打造高性能原生應用
華為云全域 Serverless 8 月更新盤點

基于DPU的容器冷啟動加速解決方案

華為云發布基于盤古大模型的醫療健康解決方案
更快更穩更優質:華為云 618 營銷季下載加速解決方案測評

評論