Dak*_*own 15 memory windows-10 wsl2
我知道有关 WSL/2 的大多数问题都是关于减少内存使用,但我的问题有点不同。我在 Windows 中拥有 32 GB 可用空间,但 WSL2 只允许我使用最多 24 GB。是否有办法确保 Windows 拥有的所有内存在 WSL 中也可用?或者是出于特定原因为系统保留的?
Windows 构建:
PS C:\Users\dakot> [System.Environment]::OSVersion.Version
Major Minor Build Revision
----- ----- ----- --------
10 0 19044 0
Run Code Online (Sandbox Code Playgroud)
wsl.confUbuntu WSL 实例中不存在:
dakota@DESKTOP-1KK3IBB:~$ cat /etc/wsl.conf
cat: /etc/wsl.conf: No such file or directory
dakota@DESKTOP-1KK3IBB:~$ ls /etc | grep wsl
dakota@DESKTOP-1KK3IBB:~$
Run Code Online (Sandbox Code Playgroud)
.wslconfig在我的目录中找不到%UserProfile%:
PS C:\Users\dakot> ls
Directory: C:\Users\dakot
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 3/2/2022 9:46 AM .aws
d----- 3/2/2022 9:46 AM .azure
d----- 3/1/2022 8:22 AM .docker
d----- 2/28/2022 3:31 PM .dotnet
d----- 2/28/2022 2:50 PM .gnupg
d----- 3/1/2022 8:07 AM .vscode
d-r--- 2/28/2022 1:48 PM 3D Objects
d-r--- 2/28/2022 1:48 PM Contacts
d-r--- 3/1/2022 1:15 PM Desktop
d-r--- 3/1/2022 7:43 AM Documents
d-r--- 3/2/2022 11:29 AM Downloads
d-r--- 2/28/2022 1:48 PM Favorites
d-r--- 2/28/2022 1:48 PM Links
d-r--- 2/28/2022 1:48 PM Music
dar--- 3/1/2022 12:32 PM OneDrive
d-r--- 2/28/2022 1:49 PM Pictures
d----- 2/28/2022 2:35 PM Postman
d-r--- 2/28/2022 1:48 PM Saved Games
d-r--- 2/28/2022 1:49 PM Searches
d----- 3/1/2022 9:30 PM source
d-r--- 2/28/2022 3:05 PM Videos
d----- 3/1/2022 8:14 AM wkspaces
-a---- 2/28/2022 2:46 PM 144 .gitconfig
-a---- 2/27/2022 10:08 PM 780 id_ecdsa
Run Code Online (Sandbox Code Playgroud)
WSL 正在运行版本 2:
PS C:\Users\dakot> wsl -l -v
NAME STATE VERSION
* Ubuntu Running 2
docker-desktop-data Running 2
docker-desktop Running 2
Run Code Online (Sandbox Code Playgroud)
Not*_*1ds 22
前言
是否有办法确保 Windows 拥有的所有内存在 WSL 中也可用?或者是出于特定原因为系统保留的?
“全部”记忆?不。Windows 必须有一些东西可以运行,而且它无论如何都不是一个轻量级操作系统。4GB 是 Windows 11 的最低系统要求。如果比这个少一点,也许可以,但这不是一个好主意。
“特定用途”?确实有很多。您的桌面、任务栏、网络堆栈、GPU(特别是集成的)、数十种服务(请参阅“服务”插件),例如事件日志等。
更不用说需要为任何应用程序(例如网络浏览器)留出空间。
但是,如果您确实需要增加 WSL2 可用的内存量,请继续阅读。
简短回答:
首先通过 确认 WSL2 当前可用的实际内存量top。然后,如果您确实需要增加它:
关闭 WSL,然后从 PowerShell 中:
Write-Output "[wsl2]
memory=26GB" >> "${env:USERPROFILE}\.wslconfig"
wsl --shutdown
Run Code Online (Sandbox Code Playgroud)
并重新启动 WSL。请注意,只有当您没有现有的.wslconfig(您已确认没有)时,此命令才能正常工作。运行该命令一次后,您需要手动编辑该文件以进行将来的更改。
解释:
正如 Ramhound 在评论中链接的文档中所述,可以通过使用文件来调整 WSL2 可用的内存量.wslconfig。它可以减少(正如您所注意到的,通常是这种情况),也可以增加(正如我刚刚在我的系统上确认的那样)。
如果您的系统允许在 WSL 中使用 24GB,那么这可能是系统内存和交换的组合。
您没有提到如何检查内存量,但“简单的方法”是top在 WSL 中运行命令:
你会看到类似的东西:
top - 20:08:13 up 0 min, 0 users, load average: 0.00, 0.00, 0.00
Tasks: 5 total, 1 running, 4 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 15955.3 total, 15581.8 free, 275.7 used, 97.8 buff/cache
MiB Swap: 4096.0 total, 4096.0 free, 0.0 used. 15469.9 avail Mem
Run Code Online (Sandbox Code Playgroud)
我感觉您的 WSL 默认情况下可能有 16GB,但我可能是错的。
使用上述方法将我的内存从 16GB 更改为 24GB 后,我得到以下结果:
top - 19:54:19 up 3 min, 0 users, load average: 0.00, 0.00, 0.00
Tasks: 9 total, 1 running, 8 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 24039.29+total, 23622.06+free, 291.879 used, 125.352 buff/cache
MiB Swap: 6144.000 total, 6144.000 free, 0.000 used. 23477.43+avail Mem
Run Code Online (Sandbox Code Playgroud)
您会注意到可用交换空间也增加了,因为它(默认情况下)配置为可用内存的 25%。这也可以通过 来控制.wslconfig。
| 归档时间: |
|
| 查看次数: |
33537 次 |
| 最近记录: |