WSL2は本物のLinuxカーネルが動くという性質上、大量のディスク読み書きなどすると大量にキャッシュとしてメモリが消費されてしまい、ホストのメモリを食いつぶしてしまいます。ホストにあまりメモリが積まれておらずホストが激重になってしまいましたので、WSL2のメモリ量を固定してみました。

Windows10のエクスプローラーで、%USERPROFILE% を開き、.wslconfig というファイルがなければテキストファイルとして新規にファイル作成し、以下を書き込みます。

[wsl2]
memory=4GB
swap=2GB

上記は、メモリを4GBに固定し、スワップに2Gを設定しています。ホストのメモリ量に応じて適宜変更してください。

変更後、WSL2 を再起動する必要があります。

コマンドプロンプトを管理者権限で開きWSL2を停止します。

C:> wsl --shutdown

再度、WSL2を起動(Ubuntu等のアイコンをクリック)し、Linuxのコマンドラインで以下を実行し、メモリ量やスワップの量が指定した値になっているかを確認します。

$ cat /proc/meminfo
MemTotal: 4028424 kB
MemFree: 3950724 kB
MemAvailable: 3847712 kB
Buffers: 5748 kB
Cached: 8576 kB
SwapCached: 0 kB
Active: 12532 kB
Inactive: 3752 kB
Active(anon): 2012 kB
Inactive(anon): 8 kB
Active(file): 10520 kB
Inactive(file): 3744 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 2097152 kB
SwapFree: 2097152 kB
Dirty: 48 kB
Writeback: 0 kB
AnonPages: 2060 kB
Mapped: 4100 kB
Shmem: 68 kB
Slab: 21744 kB
SReclaimable: 11912 kB
SUnreclaim: 9832 kB
KernelStack: 1480 kB
PageTables: 108 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 4111364 kB
Committed_AS: 3108 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 0 kB
VmallocChunk: 0 kB
Percpu: 944 kB
AnonHugePages: 0 kB
ShmemHugePages: 0 kB
ShmemPmdMapped: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
Hugetlb: 0 kB
DirectMap4k: 15360 kB
DirectMap2M: 4177920 kB

参考 : https://docs.microsoft.com/ja-jp/windows/wsl/wsl-config