Linux Advent Calendar 2022 19日目の記事です、と言いつつ遅くなりましたが....。
Lima 、使ってますか
Linux Advent Calendar なのにMacの話では?となりそうな感じもありますが、Lima使っていますか? Docker の環境を colima で作っている方もいらっしゃるかもしれません。
Lima を用いるとコマンドラインベースでLinux VMを作成できて便利で、尚且つ複数のCPUアーキテクチャでVMを立ち上げられます。Limaの場合、ホストと別アーキテクチャなVM作成は、これまでQEMUを利用しており、動作はそれなりのオーバーヘッドがかかるようになっていました。
ですが、Lima 0.14 からVirtualization.framework(vz)に対応したそうです。待望の!
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勢試していきましょう。