Docker Desktop for Mac使いを照らす一筋の光 virtiofs
はじめまして、さわちゃんです。
早いもので入社してちょうど一年が経ちましたが、毎日明るく楽しく元気よくほどほどに苦しみながら仕事に励んでおります。
さて、今日はタイトルの通り、Docker Desktop for Macで設定可能になった新しいファイルシステムvirtiofsについて、実際に使ってみた所感などを書いていきたいと思います。
今までのファイルシステムだと仮想環境での使用に対し最適化されておらずパフォーマンスに影響が出ていたので、それをなんとかするべくRed Hatパイセンが鋭意開発中の期待の新星ですね。
公式サイト:https://virtio-fs.gitlab.io/
Docker Desktop for Mac: 4.6.0
mac OS: 12.2.1
2022年3月14日に公表されたDocker Desktop for Macのバージョン4.6.0から、Experimental Featuresとしてvirtiofsのオプションが追加されました。
mac OSのバージョンは12.2以上(Intel Macの方は12.3以上)を使えとおっしゃってます。
設定方法は簡単!チェックをつけて再起動するだけです。
(Use the new Virtualization frameworkはvirtiofsを使う際には必ず必要になるので自動でチェックがつきます。)
before
after
と、とんでもなく早くなってますね・・・。
Clientで約2.67倍、Serverで約2.61倍の速さになっています。
結構大規模で重たいアプリケーションということもありますが、確実に体感できるくらい早くなってます。
実は私、最近M1 Macを支給されたばかりで、元々使用していたIntel MacではM1 Mac x gRPC-FUSEの結果ですら比べ物にならないくらい時間がかかっていたので、そのgRPC-FUSEより更に早いとなると、もうただただ恐ろしいです。
これでもうコンパイル中にTwitter見たりタバコ吸ったり他の業務に手を付けてコンパイル完了後にまた戻ってくるというスイッチングコストをかけたりしなくて済むんだ・・・と思うと嬉しいような寂しいような。
そしてgRPC-FUSEちゃんは短い付き合いだったけど、完全にいらない子になってしまいましたね・・・さようなら。
でも、まさか、このときは、あんなことになるなんて、思いもしなかったんだ・・・・。
ログを見てみるとTimeout系のエラーが大量に出て、どうやらDockerそのものが固まってしまっているようです。
そうなるともうDocker自体を再起動しないとどうにもなりません。
その後も何回か試してみたのですが、特定のページで50%くらいの確率で固まってしまいました。
詳細を調べてみたものの原因不明。
どうやらまだ完全に安定しているわけではなく、他にもテストが動かない方などがいらっしゃるみたいです。
さすがですね、gRPC-FUSE。
ただvirtiofsはまだExperimental Featuresですし、速度だけでいうと圧倒的なポテンシャルを見せつけてくれたので、これからの改善に期待ですね。
「Docker Desktop for Macは遅い!」などよく言われていますが、それももう過去の話になるときが近づいているのかもしれません。
気長に待つこととしましょう。
みなさんもぜひ一度使ってみて、感想を聞かせてくださいね。
以上、さわちゃんでした。
早いもので入社してちょうど一年が経ちましたが、毎日明るく楽しく元気よく
さて、今日はタイトルの通り、Docker Desktop for Macで設定可能になった新しいファイルシステムvirtiofsについて、実際に使ってみた所感などを書いていきたいと思います。
virtiofsとは
virtiofsとは、公式サイトにあるように、仮想マシンとホストとの間で共有できるファイルシステムです。今までのファイルシステムだと仮想環境での使用に対し最適化されておらずパフォーマンスに影響が出ていたので、それをなんとかするべくRed Hatパイセンが鋭意開発中の期待の新星ですね。
公式サイト:https://virtio-fs.gitlab.io/
virtiofsの設定方法
バージョンDocker Desktop for Mac: 4.6.0
mac OS: 12.2.1
2022年3月14日に公表されたDocker Desktop for Macのバージョン4.6.0から、Experimental Featuresとしてvirtiofsのオプションが追加されました。
mac OSのバージョンは12.2以上(Intel Macの方は12.3以上)を使えとおっしゃってます。
設定方法は簡単!チェックをつけて再起動するだけです。
(Use the new Virtualization frameworkはvirtiofsを使う際には必ず必要になるので自動でチェックがつきます。)
ベンチマーク
ざっくりとしてますが、今回は開発環境でNuxtJSのサーバを起動したときのコンパイル時間で見ていこうと思います。before
after
ベンチマーク結果 | Client | Server |
M1 Mac x gRPC-FUSE | 82.80s | 74.40s |
M1 Mac x virtiofs | 30.98s | 28.46s |
と、とんでもなく早くなってますね・・・。
Clientで約2.67倍、Serverで約2.61倍の速さになっています。
結構大規模で重たいアプリケーションということもありますが、確実に体感できるくらい早くなってます。
実は私、最近M1 Macを支給されたばかりで、元々使用していたIntel MacではM1 Mac x gRPC-FUSEの結果ですら比べ物にならないくらい時間がかかっていたので、そのgRPC-FUSEより更に早いとなると、もうただただ恐ろしいです。
これでもうコンパイル中に
そしてgRPC-FUSEちゃんは短い付き合いだったけど、完全にいらない子になってしまいましたね・・・さようなら。
でも、まさか、このときは、あんなことになるなんて、思いもしなかったんだ・・・・。
安定・・・しない・・・?
起動だけではなく、ローカルでの動作確認をする際もサクサクヌルヌル動くのでテンションアゲアゲ⤴⤴⤴で作業していたんですが、特定のページ(比較的処理が重たいページ)でローディングが永遠に続く現象が・・・。ログを見てみるとTimeout系のエラーが大量に出て、どうやらDockerそのものが固まってしまっているようです。
そうなるともうDocker自体を再起動しないとどうにもなりません。
その後も何回か試してみたのですが、特定のページで50%くらいの確率で固まってしまいました。
詳細を調べてみたものの原因不明。
どうやらまだ完全に安定しているわけではなく、他にもテストが動かない方などがいらっしゃるみたいです。
ごめんね〜gRPC-FUSEちゃん、やっぱり君が一番だよ♡
gRPC-FUSEに戻すと上記の不安定な挙動はぴしゃりと収まりました。さすがですね、gRPC-FUSE。
ただvirtiofsはまだExperimental Featuresですし、速度だけでいうと圧倒的なポテンシャルを見せつけてくれたので、これからの改善に期待ですね。
「Docker Desktop for Macは遅い!」などよく言われていますが、それももう過去の話になるときが近づいているのかもしれません。
気長に待つこととしましょう。
みなさんもぜひ一度使ってみて、感想を聞かせてくださいね。
以上、さわちゃんでした。
- Javascript , Docker , vue.js , TypeScript