ローファイ日記

出てくるコード片、ぼくが書いたものは断りがない場合 MIT License としています http://udzura.mit-license.org/

Lima 0.14 のVirtualization.framework対応を試す

Linux Advent Calendar 2022 19日目の記事です、と言いつつ遅くなりましたが....。

qiita.com

Lima 、使ってますか

Linux Advent Calendar なのにMacの話では?となりそうな感じもありますが、Lima使っていますか? Docker の環境を colima で作っている方もいらっしゃるかもしれません。

Lima を用いるとコマンドラインベースでLinux VMを作成できて便利で、尚且つ複数のCPUアーキテクチャVMを立ち上げられます。Limaの場合、ホストと別アーキテクチャVM作成は、これまでQEMUを利用しており、動作はそれなりのオーバーヘッドがかかるようになっていました。

ですが、Lima 0.14 からVirtualization.framework(vz)に対応したそうです。待望の!

github.com

colima からVirtualization.frameworkを使う

lima >= 0.14 + colima 0.5.0 の組み合わせだと非常にあっさりvzで環境を作れるので、拍子抜けするほど便利です(無論Macのバージョンを 13.0 以降に上げる必要もあります)。

$ colima start --cpu 8 --memory 12 --disk 150 --arch x86_64 --vm-type vz ${profile_name}

以上!と言いたいところですがすごく簡単にベンチを取ってQEMUと比べておきましょう。

vz / QEMU のベンチ

簡単ですが、以下のようなDockerfileを作って Shopify/go-lua をビルドしてベンチマークとしてみました。

# syntax = docker/dockerfile:1.3-labs
FROM golang:1.19

RUN <<SHELL
    git clone https://github.com/Shopify/go-lua.git
    cd go-lua
    git submodule update --init
    go build
    go test -cover
SHELL

ホストの環境はApple M1 Max(8+2 core)、64GB memoryという感じです。

結果です。ビルドのフェーズ2の箇所の所要時間だけ抜粋すると、

vz

 => [2/2] RUN <<SHELL (git clone https://github.com/Shopify/go-lua.git...) ... 20.1s 

QEMU

 => [2/2] RUN <<SHELL (git clone https://github.com/Shopify/go-lua.git...) ... 22.5s

1割ほど高速になっているようです。処理の内容的に、ダウンロード+ビルドでCPUワークロードも雑多な感じなので、参考程度ではありますが。

もうちょっと複雑なソフトウェア(CRubyとか...)をビルドして比べてみたい気持ちもありますが、時間が...。


ということで軽くこんな感じです。 lima 0.14 + colima 0.5.0 のDocker環境はより快適だと思いますので、M1勢試していきましょう。