開発ブログ

株式会社Nextatのスタッフがお送りする技術コラムメインのブログ。

電話でのお問合わせ 075-744-6842 ([月]-[金] 10:00〜17:00)

  1. top >
  2. 開発ブログ >
  3. 開発環境 >
  4. Docker Desktop for Mac使いを照らす一筋の光 virtiofs
Docker Desktop for Mac使いを照らす一筋の光 virtiofs

Docker Desktop for Mac使いを照らす一筋の光 virtiofs

はじめまして、さわちゃんです。
早いもので入社してちょうど一年が経ちましたが、毎日明るく楽しく元気よくほどほどに苦しみながら仕事に励んでおります。

さて、今日はタイトルの通り、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を使う際には必ず必要になるので自動でチェックがつきます。)

スクリーンショット 2022-03-18 10.04.23.png

 

ベンチマーク

ざっくりとしてますが、今回は開発環境でNuxtJSのサーバを起動したときのコンパイル時間で見ていこうと思います。

before
スクリーンショット 2022-03-17 18.36.50.png

after
スクリーンショット 2022-03-17 18.46.05.png
 
ベンチマーク結果 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より更に早いとなると、もうただただ恐ろしいです。

これでもうコンパイル中にTwitter見たりタバコ吸ったり他の業務に手を付けてコンパイル完了後にまた戻ってくるというスイッチングコストをかけたりしなくて済むんだ・・・と思うと嬉しいような寂しいような。

そしてgRPC-FUSEちゃんは短い付き合いだったけど、完全にいらない子になってしまいましたね・・・さようなら。

でも、まさか、このときは、あんなことになるなんて、思いもしなかったんだ・・・・。
 

安定・・・しない・・・?

起動だけではなく、ローカルでの動作確認をする際もサクサクヌルヌル動くのでテンションアゲアゲ⤴⤴⤴で作業していたんですが、特定のページ(比較的処理が重たいページ)でローディングが永遠に続く現象が・・・。

ログを見てみるとTimeout系のエラーが大量に出て、どうやらDockerそのものが固まってしまっているようです。
そうなるともうDocker自体を再起動しないとどうにもなりません。

その後も何回か試してみたのですが、特定のページで50%くらいの確率で固まってしまいました。

詳細を調べてみたものの原因不明。
どうやらまだ完全に安定しているわけではなく、他にもテストが動かない方などがいらっしゃるみたいです。
 

ごめんね〜gRPC-FUSEちゃん、やっぱり君が一番だよ♡

gRPC-FUSEに戻すと上記の不安定な挙動はぴしゃりと収まりました。
さすがですね、gRPC-FUSE。

ただvirtiofsはまだExperimental Featuresですし、速度だけでいうと圧倒的なポテンシャルを見せつけてくれたので、これからの改善に期待ですね。
「Docker Desktop for Macは遅い!」などよく言われていますが、それももう過去の話になるときが近づいているのかもしれません。
気長に待つこととしましょう。

みなさんもぜひ一度使ってみて、感想を聞かせてくださいね。

以上、さわちゃんでした。
TOPに戻る