Skip to content

[Windows] 如何設定 WSL 2 的記憶體分配

WSLWindows subsystem for Linux)是在 Windows 作業系統上的 Linux 子系統,對於習慣使用 Windows 當作日常使用裝置、但有時又想使用 Linux 上方便的指令、套件的人來說,是再方便不過的一套系統。

而 WSL 2 即將於今年十一月發布並加入 Windows 正式版,但目前已經可於開發者計畫中升級 Windows 版本,並提早嘗鮮使用 XDD

WSL 和 WSL 2 的差異,按照官方的宣告應如下:

功能WSL 1WSL2
Windows 和 Linux 之間的整合OO
快速開機時間OO
低資源使用量OO
以最新版的 VMware 和 VirtualBox 執行OO
受控 VMXO
完整的 Linux 核心XO
完整的系統呼叫相容性XO
OS 檔案系統之間的效能OX

其中最驚嘆的就是完整的 Linux 核心和系統呼叫相容性了!記得當初使用 WSL 的時候,的確會有一些指令、環境是沒辦法在 WSL 中跑起來的,現在看起來,恐怕當初的問題都已經不復存在了。

當然,WSL 2 並不是完全海放 WSL,跨系統之間的效能是比較差的(?)不過我並不是很確定官方這個宣稱的意思 —— 是移動檔案比較慢嗎?

話題扯遠了。最重要的是,今天在 WSL 2 的環境中跑程式,突然間記憶體爆掉了(Out of Memory, OOM),用 htop 指令一看,發覺記憶體竟然只有 7.77 GB。

這是很奇怪的問題,因為我的裝置上應該有 128 GB 的記憶體才對。


寫設定檔分配記憶體

事先說明,以下的解決方法我只有在 WSL 2 中測試過是 OK 的,WSL 我就不確定了。

首先,關閉所有開啟的 WSL 2,並打開 CMD,輸入以下指令:

wsl --shutdown

緊接著,我們可以透過寫設定檔解決此一問題。
將以下設定放在 C:\Users\<your_user_name>\.wslconfig 中。記得檢查不要在最後添加副檔名 .txt。

.wslconfig 中的設定如下:

[wsl2]
memory=120GB # Limits VM memory in WSL 2 to 128 GB

儲存關閉,重新啟動 WSL 2,可以使用 htop 指令檢查,應該就會反映出 120 GB 的記憶體了。


References


Read More

Tags:

2 thoughts on “[Windows] 如何設定 WSL 2 的記憶體分配”

    1. 由於沒有直接的 restart 指令,所以你可以會需要使用『管理員權限』啟動 Windows PowerShell,然後輸入 `wsl –shutdown`,過一段時間後,再次使用 `wsl` 重新啟動。

Leave a Reply