MEMIMG
 Vmmem/VmmemWSL プロセスは、仮想マシン ソフトウェアWSL (Windows Subsystem for Linux) の一部です。仮想マシンを使用した場合、多くのユーザーは、Vmmem が大量のメモリと CPU リソースを消費することでパフォーマンスが低下してしまいます。今回は、このVmmem のメモリ/CPU 使用率を削減または排除する方法をご紹介します。
 Vmmem がシステムのメモリまたは CPU を大量に消費している場合、仮想マシンがこのプロセスを使用していることになります。この現象は実は正常な状態で、WSL のメモリと CPU の使用率は、システムの使用可能なメモリの最大 80% を予約するように構成されています。
 ただし、最近のWindowsバージョンでは、パフォーマンスに影響されているとの指摘を受け、これを50%、8GB以下に下げています。
 また同時に、WSL では、多くのプロセスが実行されます。仮想マシンでリソースを大量に消費するプロセスを大量に実行すると、メモリとCPUの使用率も増加します。そのため、不要なプロセスを閉じると、リソースの使用量を減らすことができます。
仮想マシンに割り当てたメモリや CPU コアが多すぎて、必要なときに容量を増やすことができない場合は、仮想マシンが他の場合よりも多くのリソースを使用します。

 上記の件を踏まえて次の方法でVmmemのメモリ使用量が高い場合、次の方法でCPU/メモリの使用量を減らします。

1.WSL (Windows Subsystem for Linux) をシャットダウンする


 WSL 1/2 を常に使用しない場合は、WSLを停止します。WSLを停止すると、Vmmem プロセスも終了します。方法は次の通りです。


  1.  Windows + Rキーを押し、[ファイル名を指定して実行]を開きます。
  2. [ファイル名を指定して実行]ダイアログに「powershell」と入力し、Ctrl + Shift + Enterキーを押したままにして、管理者としてPowerShellを開きます。
  3. 次のコマンドを入力します。

    wsl --shutdown

  4. このコマンドを実行すると、実行中のすべての WSL ディストリビューションが終了します。


2.WSL (Linux 用 Windows サブシステム) を再起動する
 Vmmem プロセスによってタスク マネージャーで表示されるメモリと CPU の使用率が高くなっていく場合があります。WSL を再起動することで、過剰なリソース使用量を減らすことができます。方法は次の通りです。

  1. Windows + Rキーを押し、[ファイル名を指定して実行]を開きます。
  2. [ファイル名を指定して実行]ダイアログに「powershell」と入力し、Ctrl + Shift + Enterキーを押したままにして、管理者としてPowerShellを開きます。
  3.  PowerShellウィンドウで、次のコマンドを入力します。

    wsl --shutdown

  4. このコマンドを実行すると、実行中のすべての WSL ディストリビューションが終了します。ディストリビューションを起動すると、WSL が再起動します。
  5. 特定のディストリビューションをシャットダウンする場合は、次のように入力します。

    wsl.exe -l -v

  6. システム上で実行中および停止しているすべてのディストリビューションのリストが表示されます。
  7. 次のコマンドで特定のディストリビューションを終了します。

    wsl.exe -t ディストリビューション名

  8. 特定のディストリビューションを再起動するには、次のように入力します。

    wsl.exe -d ディストリビューション名

3.WSL (Windows Subsystem for Linux) のメモリと CPU の使用率を制限する
 WSL をシャットダウンしたくない場合は、リソースを大量に消費してシステムに過度の負荷をかけないように、使用できるメモリと CPU コアの量に上限を設けることができます。ただし、これは 19041 以降の Windows ビルドで動作する WSL 2 でのみ実行できます。方法は次の通りです。


  1. Windows + Rキーを押し、[ファイル名を指定して実行]を開きます。
  2. [ファイル名を指定して実行]ダイアログに「powershell」と入力し、Ctrl+Shift+Enterキーを押したままにして、管理者としてPowerShellを開きます。
  3. Powershellウィンドウで、次のように入力します。

    wsl --shutdown 
  4. PowerShell を閉じ、WSL を開きます。
  5. [WSL] ウィンドウで、次のように入力します。

    editor "$(wslpath "C:\Users\YourUsername\.wslconfig")"
  6. 同じく次ように入力します。

    [wsl2]

    memory=4GB

    processors=2

  7. これにより、WSL 仮想マシンは、指定された仮想プロセスのメモリ サイズと数を使用するように制限されます。RAMサイズに応じて制限を設定します。
  8. Ctrl+Xキーを押します。プロンプトが表示されたら、Y キーを押して変更を保存します。
  9.  [WSL] ウィンドウを閉じます。
  10. Windows + Rキーを押し、[ファイル名を指定して実行]を開きます。
  11. [ファイル名を指定して実行]ダイアログに「powershell」と入力し、Ctrl + Shift + Enterキーを押したままにして、管理者としてPowerShellを開きます。
  12. 次のコマンドを実行します。

    wsl --shutdown

  13. PowerShell を閉じ、WSL をもう一度開きます。
  14. 次のコマンドを実行します。
    free -h --giga
  15. これで正常に割り当てられたことを確認します。