Daydreaming in Brookline, MA

最近のmacOSでVMのメモリ使用量が倍

1 はじめに

Virtual Memory (VM)が実際に使用するメモリ量は、割り当てたメモリ量よりも少ないので、VMWare ESXi等ではVMへのメモリのオーバープロビジョニング(実際のメモリ量以上に割り当てること)をすることがよくあるそうです。実際にどの程度、メモリがVMに使われているのかをMacBook (macOS Big Sur)上で確認したところ、とんでもないことに気が付いてしまいました。

2 VMが倍のメモリを使っている!?

うちのMacBook ProはLate 2013のお年寄りでメモリは8GBしか積んでいませんので、VM(Fedora34)には2GBしかメモリを割り当てていません。しかし、Activity Monitorで見たところ、なんと倍の4GBもメモリを消費していることがわかりました。

memalloc.png

これは困ります。オーバープロビジョニングどころの話ではありません。

3 macOSの問題でした

まずはVirtualBoxの問題かと思い、ネットで検索したところ見つけました。

同じ問題に遭遇している人たちがたくさんいるようです。このバグレポートを下まで見てみると、VirtualBoxだけでなくDockerでも起きているとのこと。DockerチームからAppleにバグ番号48714544でレポート済みだそうです。macOS側の問題のようですね。

Parallelsでも同様の問題が報告されていました。

VirtualBox 6.1.2に戻せば、このメモリ倍使用の問題は回避できるそうですが、Big Surは古いVirtualBoxをブロックしてしまうため、この回避策は使えません。うーむ、はまりです。

上のバグチケットがオープンされたのが19ヶ月前、最後の書き込みが2ヶ月前なので、1年半以上に渡ってAppleはこの問題を放置しているようです。安定性が重要なサーバー用途にmacが使えるようになることは永遠に無いように感じます。

しかし、長期化しているOSの問題ならそれはそれで、VirtualBox側でも対応して欲しいです。特に、古いバージョンに戻せば回避できる問題なので、やり方はあるはず。

この問題に関する日本語のページもいくつか見つけました

バグの影響度を考えると、もっと騒がれてもいいような気がしますが、MacでVMやらコンテナを使う人は少ないということでしょうか。

4 終わりに

MacとPythonの相性があまり良くなく、macOSをアップグレードするたびにPythonが動かなくなったりするので、私はMacBookにVirtualBoxをインストールして、Linux VMを日常的につかっていましたが、倍のメモリが使われていることはこれまで気が付きませんでした。

普段使うPCに、本当に必要なメモリ量は意外と少ないのかもしれませんね。ただ、いくつかLinux VMを立ち上げてVM同士でクラスターを構成する(eg, ceph)ような実験はmac上では厳しくなりました。

Tech Tech, Mac