【Windows】WSL2がメモリを使いすぎる時の「.wslconfig」による上限制限の手順

【Windows】WSL2がメモリを使いすぎる時の「.wslconfig」による上限制限の手順
🛡️ 超解決

WSL2がシステムメモリを過剰に消費し、Windows全体の動作が遅くなる現象にお困りのビジネスマンの方もいらっしゃるでしょう。

WSL2のデフォルト設定では、ホストOSのメモリを大量に割り当ててしまうことがあります。

この記事では、「.wslconfig」ファイルを活用してWSL2のメモリ使用量に上限を設定し、Windowsの安定動作を維持する具体的な手順を解説します。

適切なメモリ制限を設定することで、快適な開発環境を取り戻せるようになります。

【要点】WSL2のメモリ消費を制御し、Windowsの安定動作を維持する

  • 「.wslconfig」ファイルの作成と編集: WSL2が使用するメモリの最大値を設定し、過剰なリソース消費を防ぎます。
  • WSL2のシャットダウンと再起動: 設定変更をWSL2に適用し、新しい制限値で動作させます。

ADVERTISEMENT

WSL2がWindowsのリソースを過剰に消費する仕組み

WSL2は、仮想マシン技術を利用してLinuxディストリビューションをWindows上で実行します。

この仮想マシンは、デフォルトでホストとなるWindowsシステムのメモリの最大80%を自動的に割り当てることがあります。

例えば、Windowsに16GBのメモリが搭載されている場合、WSL2は最大で約12.8GBものメモリを占有する可能性があるのです。

WSL2内のLinuxアプリケーションが大量のメモリを要求すると、この自動割り当て機能が働き、Windowsの他のアプリケーションが利用できるメモリが不足します。

結果として、Windows全体の動作が遅くなったり、アプリケーションがクラッシュしたりする原因となります。

「.wslconfig」ファイルは、このWSL2仮想マシンのグローバルな設定をカスタマイズするためのファイルです。

このファイルを使用することで、WSL2に割り当てるメモリの最大値を手動で設定し、リソース消費を制御できます。

WSL2のメモリ使用量を制限する「.wslconfig」の設定手順

WSL2のメモリ使用量を制限するには、ユーザープロファイルディレクトリに「.wslconfig」ファイルを作成し、設定を記述します。

この手順はWindows 11を基準にしていますが、Windows 10でも同様の操作で対応できます。

  1. エクスプローラーでユーザーフォルダーを開く
    Windowsのスタートボタンを右クリックし、「エクスプローラー」を選択します。左側のナビゲーションペインで「PC」を展開し、「ローカルディスクC:」を選択します。「ユーザー」フォルダーを開き、ご自身のユーザー名が記載されたフォルダーを開きます。このフォルダーが「C:\Users\<ユーザー名>」です。
  2. 「.wslconfig」ファイルを作成する
    ユーザーフォルダー内で、右クリックし、「新規作成」から「テキスト ドキュメント」を選択します。ファイル名を「.wslconfig」と入力してEnterキーを押します。ファイル名変更の警告が表示されたら「はい」をクリックして確定します。
  3. 「.wslconfig」ファイルを編集する
    作成した「.wslconfig」ファイルを右クリックし、「プログラムから開く」から「メモ帳」を選択して開きます。以下の内容をファイルに記述します。
    [wsl2]
    memory=4GB

    この例では、WSL2のメモリ使用量を4GBに制限しています。ご自身の環境や用途に合わせて、「4GB」の部分を「2GB」や「8GB」など適切な値に変更してください。「GB」はギガバイトを意味します。

  4. ファイルを保存して閉じる
    メモ帳の「ファイル」メニューから「上書き保存」を選択し、メモ帳を閉じます。
  5. WSL2をシャットダウンする
    スタートボタンを右クリックし、「ターミナル Windows管理者」または「Windows PowerShell 管理者」を選択して開きます。以下のコマンドを入力してEnterキーを押します。
    wsl --shutdown

    このコマンドは、実行中のすべてのWSL2ディストリビューションをシャットダウンします。

  6. WSL2を再起動し設定を確認する
    任意のWSL2ディストリビューションを起動します。例えば、スタートメニューからUbuntuなどをクリックして起動します。その後、再度ターミナルやPowerShellで以下のコマンドを入力し、WSL2が新しいメモリ設定で動作しているか確認します。
    wsl --list --verbose

    表示される出力の「MEMORY」欄が、設定したメモリ上限値に近い値になっていることを確認してください。

「.wslconfig」設定時の注意点とよくある問題

「.wslconfig」ファイルの設定は、WSL2の動作に直接影響を与えます。設定時にはいくつかの注意点があります。

「.wslconfig」ファイルが認識されない場合の確認点

設定ファイルを作成したにもかかわらず、WSL2のメモリ制限が適用されない場合があります。

原因: ファイル名や配置場所の誤り、または拡張子が正しく設定されていないことが考えられます。

対処法:

  1. ファイル名と場所の確認: ファイル名が「.wslconfig」であること、そして「C:\Users\<ユーザー名>」ディレクトリに配置されていることを再確認します。
  2. 隠しファイル拡張子の表示: Windowsのエクスプローラーで「表示」タブをクリックし、「表示/非表示」グループ内の「ファイル名拡張子」にチェックが入っていることを確認します。もし「.wslconfig.txt」のような拡張子が付いている場合は、「.txt」を削除して「.wslconfig」のみにします。
  3. WSL2の完全なシャットダウン: 設定変更後は必ず管理者権限のターミナルで「wsl –shutdown」コマンドを実行し、WSL2を完全に停止させてから再起動してください。

メモリ設定値が低すぎてWSL2が不安定になる場合

メモリ制限を厳しくしすぎると、WSL2内のアプリケーションが動作不良を起こすことがあります。

原因: WSL2で実行するLinuxアプリケーションが必要とする最低限のメモリ量を下回る設定になっているためです。

対処法:

  1. メモリ設定値の見直し: 「.wslconfig」ファイルを開き、「memory=」の値を少しずつ増やして調整します。例えば、2GBで問題が発生する場合は4GBに増やして試します。
  2. ワークロードの確認: 実行しているDockerコンテナや開発ツールがどの程度のメモリを要求しているか、ドキュメントなどで確認することも有効です。

WSL1には「.wslconfig」設定が適用されない

この「.wslconfig」ファイルによる設定はWSL2にのみ適用されます。

原因: WSL1はWSL2とは異なるアーキテクチャで動作しており、仮想マシンを使用しないため、このファイルの影響を受けません。

対処法:

  1. WSLディストリビューションのバージョン確認: ターミナルで「wsl –list –verbose」コマンドを実行し、使用しているディストリビューションの「VERSION」欄が「2」になっていることを確認します。
  2. WSL1からWSL2への変換: もしWSL1で動作している場合は、以下のコマンドでWSL2に変換できます。「<ディストリビューション名>」はUbuntuなど、ご自身のディストリビューション名に置き換えてください。
    wsl --set-version <ディストリビューション名> 2

ADVERTISEMENT

Windows 11とWindows 10でのWSL2設定の違い

項目 Windows 11 Windows 10
WSL2の導入 「Windowsの機能の有効化または無効化」からWSL機能を有効化し、Microsoft StoreからWSLカーネルをインストールする 「Windowsの機能の有効化または無効化」からWSL機能を有効化し、手動でLinuxカーネル更新プログラムパッケージをインストールする必要がある
「.wslconfig」ファイルの場所 「C:\Users\<ユーザー名>」フォルダー 「C:\Users\<ユーザー名>」フォルダー
「.wslconfig」の設定内容 共通の書式とパラメータを使用 共通の書式とパラメータを使用
WSLコマンド 「wsl –shutdown」などのコマンドは共通 「wsl –shutdown」などのコマンドは共通

この記事で解説した「.wslconfig」ファイルを使ったメモリ制限により、WSL2がWindowsのリソースを過剰に消費する問題を解決し、システムの安定稼働を実現できたことでしょう。

適切なメモリ割り当ては、WindowsとWSL2双方のパフォーマンスを最大化するために重要です。

「.wslconfig」ファイルでは、メモリ以外にもCPUコア数やスワップメモリの制限など、WSL2の動作に関する詳細な設定が可能です。

これらの設定を調整することで、ご自身の開発環境に最適なリソース配分を実現し、より快適な作業環境を維持できます。

ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。