You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WSL2运行PyTorch剩余内存充足仍报OOM进程被杀如何解决

问题成因

WSL2本质是运行在轻量Hyper-V虚拟化层上的独立Linux实例,其硬件资源配额独立于Windows主机单独管控,不会随主机硬件升级自动调整默认配置:

  • 旧版本WSL2存在硬编码默认内存上限:无论主机物理内存多大,未手动配置时WSL2实例最多可调用的内存被固定为32GB,内存占用触达该阈值后就会触发Linux内核的OOM Killer机制强制终止高内存占用进程,该现象与内存占用涨至30GB左右进程被杀、dmesg输出Out of memory日志的表现完全匹配。
  • Windows主机侧可正常识别大内存,仅代表主机系统本身的硬件识别正常,和WSL2虚拟机的资源配额没有关联。
可行解决方案

按以下步骤手动配置WSL2内存配额即可解决问题:

  1. 配置WSL2全局资源参数
    • 打开Windows资源管理器,在地址栏输入%UserProfile%回车,进入当前用户的个人目录(路径通常为C:\Users\你的Windows用户名)
    • 在该目录下新建名为.wslconfig的文件,注意文件名开头带半角点,无任何文件后缀(若系统开启了「隐藏已知文件扩展名」,需先在资源管理器「查看」选项卡勾选「文件扩展名」,避免文件被存为.wslconfig.txt导致配置不生效)
    • 向文件中写入以下配置内容(以64GB物理内存主机为例,可根据自身需求调整数值):
    [wsl2]
    # 分配给WSL2的最大物理内存,建议预留4-6GB给Windows主机和后台程序
    memory=58GB
    # 分配交换空间大小,作为内存不足时的兜底
    swap=16GB
    # 开启内存自动回收,WSL2闲置内存可释放回Windows主机
    pageReporting=true
    
  2. 重启WSL2使配置生效
    • 以管理员身份打开PowerShell或Windows终端,执行以下命令强制关闭所有运行中的WSL实例:
    wsl --shutdown
    
    • 等待10秒后重新打开WSL2终端,执行free -h命令查看内存信息,若显示的总内存数值和配置文件中设置的一致,即代表配置生效。再次运行PyTorch大张量创建代码,就不会在32GB阈值处触发OOM。
注意事项
  • 不建议将主机全部物理内存分配给WSL2,否则Windows主机侧运行的系统进程、后台软件无可用内存会导致整机卡顿
  • 若配置后WSL2内存识别仍异常,优先检查.wslconfig文件的存放路径、文件名是否符合要求,配置文件的语法是否为标准INI格式
  • 运行超大规模张量运算时,可适当调大swap参数兜底,但交换空间基于硬盘存储,读写速度远低于物理内存,仅可作为临时缓解方案

内容的提问来源于stack exchange,提问作者chausies

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 13:54:04