Macで仮想化ソフトを動かす時に気をつけたいメモリの割り当て基準

MacでWindowsやLinuxを動かしたい時、仮想化ソフトは手っ取り早い選択肢だけど、起動してしばらくすると途端に重くなることってないですか。ぼくも何度かその罠にはまって、毎回のように設定を見直しては後悔してきました。メモリ周りはハマりやすいポイントなので、最初にざっくりした基準を持っておくと後々ラクになります。

仮想化は言ってしまえばMacの中にもう一台のPCを動かすようなものなので、ホスト側とゲスト側で物理RAMを共有することになります。割り当てを甘く見るとスワップが多発して、本体の macOS まで巻き込んでモタつく原因になります。逆に割り当てすぎても、今度は macOS 側が苦しくなるのでバランスが肝です。

そういうわけで、自分の環境で何度かつまずいた経験を踏まえながら、ぼくなりのメモリ割り当て基準を書き残しておきます。Intel MacでもApple SiliconのMacでも、考え方の軸は同じなので、どちらを使っていても参考にしてもらえればと思います。

そもそもMacに載っている物理RAMを確認する

まず最初にやるべきは、自分のMacが今どれだけのメモリを積んでいるかをはっきりさせることです。「システム情報」を開けば一目瞭然で、8GBや16GBが一般的ですが、クリエイティブな作業向けのモデルだと32GBや64GBが載っていることもあります。Apple SiliconのMacはユニファイドメモリという形式で、CPUとGPUで共有する設計になっているため、従来のIntel Macとは少し事情が異なります。

ユニファイドメモリは帯域が広いので仮想化と相性が良いと言われることが多いですが、あくまで共有である点に変わりはありません。Mac本体がOSや起動中のアプリで使う分を差し引いた残りしか、ゲストOSに渡せないという基本は共通です。

自分の物理RAMを把握せずに勘で割り当てを決めていると、知らぬ間に macOS がメモリ不足で詰まっているケースもあるので、まずはここを確認しておきましょう。

仮想化ソフトごとに挙動が違うことを知る

一口に仮想化ソフトと言っても、Parallels Desktop、VMware Fusion、VirtualBox、UTM など複数あります。それぞれメモリの扱いが少しずつ違っていて、Parallels は比較的自動でうまやってくれる印象、VMware Fusion は設定項目が細かく柔軟、VirtualBox は軽量だけど素直なぶん自分で調整が必要、UTM は QEMUベースなので使うエンジンによって感触が変わります。

特に Parallels と UTM の動的メモリ割り当ては優秀で、ゲストが必要とした分だけ物理RAMを使うように調整してくれます。逆に VirtualBox や古い VMware Fusion では固定で割り当てる形式が基本なので、最初から上限を多めに確保しないと動きが重くなりがちです。

どのソフトを使うかで「余裕を見て多めに取る」のか「最小で始めて動的に任せる」のかが変わってくるので、最初に自分の用途とソフトの特性を照らし合わせておくと安心です。

ホストとゲストでメモリを分け合う割合

物理RAMが16GBのMacを例にすると、macOS 側で日常的に使う分を5〜6GBと仮定して、残り10GB程度をゲストに回すのがひとつの目安になります。ゲストOSに10GB全部を割り当てる必要はなく、8GBくらいに抑えておくと動作が安定しやすいです。

32GB以上積んでいるモデルなら、もう少し余裕を持って配分できます。macOS に10GB前後、ゲストに12〜16GBくらい割り当てて、用途次第でもう少し動かすパターンも可能です。逆に、ブラウザとテキストエディタくらいしかゲストで動かさないなら、4GB割り当てでも実用になります。

重要なのは、合計値が物理RAMを超えないようにすることです。ゲストに16GB、macOS が動的に8GB使うとなった瞬間に24GB必要になるので、16GBモデルでは確実にスワップが出ます。合計を意識して配分するのがコツです。

スワップが出始めた時の兆候をつかむ

スワップが発生しているかどうかは、「アクティビティモニタ」のメモリタブを見ればすぐに分かります。スワップ使用量が0MB以外になっていると、もうすでに物理RAMが足りないサインです。表面上はまだ動いていても、SSDに書き込みが発生している分だけ確実に遅くなります。

ゲストOS側でも同じで、タスクマネージャーやシステムモニターでスワップやメモリ使用率を確認できます。ゲストが割り当て上限に達してスワップし始めると、ホストのmacOSも反応が遅くなることが多いです。トラックパッドのスクロールがもたついたり、ウィンドウの切り替えが引っかかるようになったら、メモリ起因のトラブルを疑ってみるべきでしょう。

ぼくは以前、Parallels にメモリを盛りに盛って割り当てすぎて、Mac本体の Safari が完全にフリーズした経験があります。その時はアクティビティモニタで原因が一目で分かって、割り当てを絞ったら嘘のように軽くなったので、兆候の見極めは本当に大事です。

動的割り当て機能を使いこなすポイント

Parallels Desktop や UTM には、ゲストが必要とするぶんだけメモリを動的に確保する機能があります。これを使うと、ゲスト側がヒマな時はホストにメモリが戻り、ホストが重めの作業をした時には自動的にゲストの使用量が絞られます。

ただし、動的だからといって無制限にゲストを動かせるわけではありません。設定画面で上限値を決めておく必要があり、その上限が物理RAMを超えていると結局スワップします。上限を決める時に、さっき書いたような配分の合計値を一回計算してから入れるのが失敗しないやり方です。

さらに、重めのアプリ(ゲーム、開発環境、Androidエミュレータなど)をゲストで動かす時は、動的割り当ての上限を一時的に引き上げてから作業するのも手です。終わったら元に戻せば、ホスト側のレスポンスが早く戻ります。

物理メモリが少ない環境でできる工夫

8GBや16GBしか積んでいないMacでも、工夫次第で仮想化は十分使えます。まずはホスト側のメモリ消費を抑えることが先で、不要なアプリを終了する、ブラウザのタブを開きっぱなしにしない、Safari 以外のブラウザを使うのを避けるといった基本が効きます。

ゲスト側でも、視覚効果を減らす、不要なスタートアップアプリを無効化する、軽量なディストリビューションを選ぶといった工夫ができます。Linux 系なら Xfce や LXQt のデスクトップ環境はメモリ消費が控えめなので、VirtualBox との組み合わせでもかなり軽快に動きます。

それでも足りない時は、外付けSSDにスワップファイルを作って凌ぐ方法もありますが、SSDの寿命や速度のことを考えると、常用するのは避けた方が無難です。可能なら後付けメモリではなく、最初から余裕のある構成のMacを選んだ方が後悔しにくいと思います。

トラブルが起きた時の切り分け手順

万が一ゲストOSが起動しなくなったり、異常に重くなったりした時のチェックリストを残しておくと便利です。順番としては、アクティビティモニタでスワップ量を確認、仮想化ソフト側のメモリ割り当てを再設定、最後にMac本体を再起動、という流れで対応します。

直らない時は、仮想化ソフトの設定ファイルをバックアップから復元したり、ゲストOS自体を再インストールしたりと段階を踏むことになります。ここで焦って割り当てを更に増やすと、別のトラブルを生むことが多いので、減らす方向で調整するのがセオリーです。

ぼくはここまでの手順をまとめて、いつも mataneteta.com のほうに個人的なメモとして残しています。何かのタイミングで参考に見てもらえると嬉しいです。

仮想化とメモリは結局のところトレードオフで、完璧な答えはありません。ただ、自分のMacの物理RAMと使うソフトの特性を把握しておけば、たいていのトラブルは回避できます。ここで書いた内容をベースに、自分の環境に合わせて数字を微調整してみてください。設定の見直しは案外すぐ終わるので、重いなと感じた今のうちにやってしまうのがおすすめです。

仮想化ソフト自体のセールや購入タイミングを狙うなら、 Amazonセール情報 のようなまとめページを参考にしつつ、まとまった出費のタイミングで一気に環境を整えるのもアリですよ。