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

如何在WSL2中为cgroup v2启用cpu、memory等控制器?

如何在WSL2的Ubuntu 22.04中为cgroup v2启用CPU、内存等控制器?

对于仅有Windows设备的用户,获取支持cgroup v2的最简方式是创建Ubuntu 22.04的WSL2实例,但默认情况下WSL2同时启用cgroup v1和v2层级,所有控制器都归属v1:

$ mount -l | grep cgroup
tmpfs on /sys/fs/cgroup type tmpfs (rw,nosuid,nodev,noexec,relatime,mode=755)
cgroup2 on /sys/fs/cgroup/unified type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/cpu type cgroup (rw,nosuid,nodev,noexec,relatime,cpu)
cgroup on /sys/fs/cgroup/cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/net_cls type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_prio)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
cgroup on /sys/fs/cgroup/rdma type cgroup (rw,nosuid,nodev,noexec,relatime,rdma)

直接执行umount /sys/fs/cgroup/*移除v1控制器后,v2层级(/sys/fs/cgroup/unified)并不会新增控制器——这是因为cgroup v1控制器仍在被系统进程占用,不符合官方文档中“控制器不再处理任何进程才能移至v2层级”的要求。

解决方法:让WSL2以cgroup v2单模式启动

无需在运行中调整,直接修改WSL2配置,让系统启动时就禁用cgroup v1,将所有控制器归属到v2层级:

  1. 在Windows用户目录(如C:\Users\<你的用户名>)下创建或编辑.wslconfig文件
  2. 添加以下配置内容:
    [wsl2]
    kernelCommandLine = cgroup_no_v1=all cgroup_enable=memory swapaccount=1
    
    • cgroup_no_v1=all:禁用所有cgroup v1控制器
    • cgroup_enable=memory:确保内存控制器在v2中启用
    • swapaccount=1:开启swap资源统计(可选,根据需求添加)
  3. 保存文件后,在Windows命令提示符或PowerShell中执行:
    wsl --shutdown
    
  4. 重新启动WSL2实例,验证配置生效:
    • 查看cgroup挂载情况:
      mount | grep cgroup
      
      此时应仅显示cgroup2的挂载条目
    • 确认可用控制器:
      cat /sys/fs/cgroup/cgroup.controllers
      
      输出会包含cpu、memory等你需要的控制器

如果不需要完全禁用cgroup v1,仅需将特定控制器移至v2,可将cgroup_no_v1=all替换为具体控制器列表,例如cgroup_no_v1=cpu,memory。但单v2模式更适合需要纯cgroup v2环境的场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 01:57:19