Wasm 性能究竟如何 - Arm 上的容器運行時和 WasmEdge 基準測試

此文爲 《Container Runtimes and WasmEdge benchmarking on Arm》 的翻譯版本。原文發佈在 Arm Community,作者爲 Howard Zhang。

原文鏈接:https://community.arm.com/arm-community-blogs/b/infrastructure-solutions-blog/posts/container-runtimes-wasmedge-arm

本文章的翻譯與傳播已經獲得許可。

這篇博客,我想介紹一些 Arm64 平臺上的運行時。具體來說,對 WasmEdge 和 Runc 進行基準測試,展示 Wasm 與容器相比的優勢。Arm 始終如一地爲開源項目做出貢獻。我們積極參與以下雲原生項目,專注於在 Arm64 平臺上啓用、優化性能以及實施持續集成和部署。

Runtime

容器運行時是負責運行容器的軟件。Runc 是應用廣泛的運行時,Containerd 和 Docker 默認使用它。還有一些其他運行時,例如 Crun、Runsc 和 Kata 容器。運行時的職責有:

每個運行時都有自己的適應區域,例如輕量級應用程序或安全環境。

Kata 容器

Kata Container 是一個安全的容器運行時,它使用硬件虛擬化技術作爲額外的防禦層。這允許它提供更強大的工作負載隔離,同時仍然是輕量的,並且像常規容器一樣運行。

圖片來源 : https://katacontainers.io/learn/

此外,我們將默認的虛擬機監視器 (VMM) 從 Qemu 更改爲 Cloud Hypervisor。與 Qemu 相比,Cloud Hypervisor 更加輕量和安全。這是因爲 Cloud Hypervisor 具有最少的模擬設備,並且是用 Rust 實現的,從而避免許多常見的安全問題。

詳情請參考

gVisor

gVisor 是一個用 Go 編寫的應用程序內核,它實現了 Linux 系統調用接口的大部分。它在運行的應用程序和主機操作系統之間提供了額外的隔離層。它利用 KVM 來保持容器和主機之間內存和 CPU 的隔離。它還有一個應用程序內核,可以處理用戶空間中的大多數系統調用,並且只有有限數量的系統調用會傳遞給主機內核。這減少了攻擊面。

圖片來源: https://gvisor.dev/blog/2020/04/02/gvisor-networking-security/

詳情請參考:

WasmEdge

WasmEdge 是一個輕量級、高性能和可擴展的 WebAssembly 運行時,適用於雲原生、邊緣和去中心化應用程序。

圖片來源: https://wasmedge.org/book/en/use_cases/kubernetes.html

 WasmEdge 使用 WebAssembly 和 WASI。我不會深入介紹這兩種技術,而是進行一般性介紹。

詳情請參考

總的來說,與容器技術相比,Wasm 有幾個優點。

但是,作爲一項不成熟的技術,它確實有一些缺點:

這些優勢使得 Wasm 非常適合 Serverless 和邊緣計算,這些對鏡像大小或啓動時間敏感。

WasmEdge 和 Runc  之間的微基準測試

我們進行了三個基準測試,以說明 WasmEdge 相較 Runc 的優勢,所有基準測試都在 Arm64 服務器上完成。以下是有關測試平臺的一些信息。

V07pnZ

第一個測試驗證普通 rust 二進制文件(由普通容器使用)和 Wasm 二進制文件之間的大小。以下是代碼

fn main() { 
  println!("hello"); 

}

普通的 Rust 二進制文件是 1.8MB,而 Wasm 二進制文件只有 0.8MB。

第二個測試是重複啓動 helloworld 鏡像,即 runc 和 WasmEdge 分別啓動 1、10、100、500、1000 和 1500 次。正如你在第二張圖片中看到的,Wasm 的啓動時間約爲普通容器的 25%。

第三個測試通過啓動幾個 helloworld 鏡像並讓它們休眠一段時間來並行運行,然後計算內存使用情況。正如你在第三張圖片中看到的,1500 個 Wasm 的內存佔用比 1500 個普通容器少 25%。

總結

在這篇博客中,我們簡要介紹了運行時,並展示了 runc 和 WasmEdge 之間的鏡像大小、啓動時間和內存佔用的基準測試。

下表總結了以下維度對運行時的評估:鏡像大小,啓動時間,安全性,應用程序開發難度,項目成熟度和適應環境。

plLZLM

如果對這些運行時感興趣,可訪問它們的官方網站獲取更詳細的信息。

關於 WasmEdge

WasmEdge 是輕量級、安全、高性能、可擴展、兼容 OCI 的軟件容器與運行環境。目前是 CNCF 沙箱項目。WasmEdge 被應用在 SaaS、雲原生,service mesh、邊緣計算、邊緣雲、微服務、流數據處理等領域。

✨GitHub:https://github.com/WasmEdge/WasmEdge

💻官網:https://wasmedge.org/

 Discord 羣:https://discord.gg/U4B5sFTkFc

 文檔:https://wasmedge.org/book/en

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/6LUuAJL7WEPu9U3QJ2aIMg