内存、CPU、磁盘随便调

文件位置与格式

位置: C:\Users\<你的用户名>\.wslconfig

格式: Windows INI 格式(类似 .ini 配置文件)
生效: 每次修改后需要 wsl --shutdown 重启
作用范围: 全局(影响所有 WSL 发行版)

基本结构

[wsl2]
; 这是 WSL 2 的配置节
memory=8GB
processors=6

完整参数详解

一、资源管理参数

memory — 内存上限
# 格式
memory=<大小>

# 示例
memory=4GB          ; 固定 4GB
memory=50%          ; 动态占用系统总内存的 50%(默认值)
memory=8192MB       ; 用 MB 也可以
memory=0            ; 无限制(不推荐!可能拖垮 Windows)

你的总内存

推荐设置

说明

8GB

memory=4GB

留一半给 Windows

16GB

memory=8GB

WSL 可以比较大方

32GB+

memory=16GB

大型项目/Docker 多容器

64GB+

memory=24GB

AI/ML 训练场景

processors — CPU 核心数限制
# 格式
processors=<核心数>

# 示例
processors=6        ; 使用 6 个 CPU 核心
processors=4        ; 谨慎使用,留一半给 Windows
processors=-1       ; 使用所有核心

💡 建议留 2-4 个核给 Windows,否则切出 WSL 时 Windows 可能卡顿。

swap — 交换空间
swap=2GB            ; 固定 2GB
swap=0              ; 禁用交换(内存足够时可以)
swap=auto           ; 自动(默认为系统内存的 25% 或最大 4GB)

# 自定义交换文件位置
swapfile=D:\\wsl-swap.swap    ; 放到 D 盘节省 C 盘空间 ⭐
vmIdleTimeout — 自动内存回收
vmIdleTimeout=-1       ; 永不自动回收(默认,性能最好)
vmIdleTimeout=600      ; 空闲 10 分钟后开始回收
vmIdleTimeout=3600     ; 空闲 1 小时后开始回收
内存回收效果:

不回收 (-1):
内存 ████████████████░░ 始终保持高位
时间 ──────────────────────→

有回收 (600s):
内存 ██░░░░████████░░░░███ 空闲后逐渐释放
时间 ──────────────────────→

二、网络参数(重点 ⭐)

networkingMode — 网络模式选择
# 三种可选值:

networkingMode=NAT        ; 默认模式(向后兼容)
networkingMode=mirrored   ; 镜像模式(Win11 推荐 ⭐⭐⭐⭐⭐)
networkingMode=symmetric  ; 对称 NAT 模式(高级)

三种模式对比

特性

NAT

mirrored

symmetric

localhost 互通

需配置

✅ 自动

局域网访问

❌ 不行

✅ 可以

IPv4 地址

独立虚拟 IP

共享 Windows IP

可选

IPv6 支持

有限

✅ 完整

VPN 兼容性

一般

最佳

适用版本

Win10/11

Win11 推荐

Win11 最新版

mirrored 模式的附加选项
networkingMode=mirrored
dnsTunneling=true         ; DNS 通过 Windows 解决(解决 DNS 问题)
autoProxy=true             ; 自动继承 Windows 代理设置
firewall=true              ; 启用 Windows 防火墙隔离

🎯 Win11 用户直接复制这段就对了

[wsl2]
networkingMode=mirrored
dnsTunneling=true
autoProxy=true
firewall=true

三、磁盘与挂载参数

defaultVHDSize — 初始磁盘大小
defaultVHDSize=60GB        ; vhdx 初始最大容量(实际按需增长)
; 一般不需要设置这个,默认即可
kernelCommandLine — 内核启动参数
; 高级用户使用
kernelCommandLine="net.ifnames=0 biosdevname=0"
; 例如统一网卡命名规则

推荐配置方案

方案一:均衡开发(大多数开发者 ⭐⭐⭐⭐⭐)

[wsl2]
memory=8GB
swap=4GB
swapfile=D:\\wsl-swap.swap
processors=6
networkingMode=mirrored
dnsTunneling=true
autoProxy=true
firewall=true
vmIdleTimeout=-1

方案二:轻量高效(8GB 内存或笔记本 ⭐⭐⭐⭐)

[wsl2]
memory=4GB
swap=2GB
processors=4
networkingMode=mirrored
dnsTunneling=true
autoProxy=true
vmIdleTimeout=-1

方案三:高性能(16GB+ 内存 + Docker重度用户 ⭐⭐⭐⭐)

[wsl2]
memory=12GB
swap=4GB
processors=10
networkingMode=mirrored
dnsTunneling=true
autoProxy=true
firewall=true
vmIdleTimeout=-1

方案四:AI/ML 训练(32GB+ 内存 + GPU ⭐⭐⭐)

[wsl2]
memory=24GB
swap=8GB
processors=14
networkingMode=mirrored
dnsTunneling=true
autoProxy=true
vmIdleTimeout=-1

配置修改后的生效流程

1. 编辑 C:\Users\<你>\.wslconfig
   ↓
2. 保存文件
   ↓
3. PowerShell 中执行:
   wsl --shutdown
   ↓
4. 重新打开 Ubuntu(或其他发行版)
   ↓
5. 验证配置是否生效
   free -h      # 检查内存
   nproc        # 检查 CPU 核数

⚠️ 注意.wslconfig 中的注释用英文分号 ;,不要用 #


高级技巧

技巧一:多套配置快速切换

创建多个配置文件,按需切换:

# 创建不同场景的配置
# C:\Users\你\.wslconfig.dev      (开发用)
# C:\Users\你\.wslconfig.light    (轻量用)
# C:\Users\你\.wslconfig.heavy    (重型任务用)

# PowerShell 快速切换函数(加入 $PROFILE):
function Set-WSLConfig {
    param([string]$Profile = "dev")
    $src = "$env:USERPROFILE\.wslconfig.$Profile"
    if (Test-Path $src) {
        Copy-Item $src "$env:USERPROFILE\.wslconfig" -Force
        wsl - shutdown
        Write-Host "已切换到 $Profile 配置并重启 WSL"
    }
}
# 使用: Set-WSLConfig heavy

技巧二:监控当前实际资源使用

# 在 WSL 中运行
echo "=== CPU ==="
nproc
echo "=== Memory ==="
free -h
echo "=== Disk ==="
df -h /
echo "=== Top Processes ==="
ps aux --sort=-%mem | head -8
# 在 PowerShell 中查看 Vmmem 进程
Get-Process Vmmem | Select-Object CPU, WorkingSet64, @{N='Mem_MB';E={[math]::Round($_.WorkingSet64/1MB)}}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值