Iva*_*iuk 22 ubuntu cgroups windows-subsystem-for-linux
访问仅具有 Windows 计算机的支持 cgroup v2 的系统的最简单方法是生成托管 Ubuntu 22.04 的 WSL2 实例。不幸的是,有一个问题。删除 v1 控制器不会导致该控制器添加到 v2 层次结构中。
默认情况下,WSL2 同时启用cgroup v1和cgroup 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)
Run Code Online (Sandbox Code Playgroud)
我尝试使用 删除v1控制器$ umount /sys/fs/cgroup/*。这似乎从列表中删除了cgroup v1控制器$ mount | grep cgroup。但随后v2 ( )中没有添加任何内容/sys/fs/cgroup/unified。
如果我正确理解cgroup v2 官方文档,则只有当该控制器不再处理任何进程时,该控制器才可以移动到cgroup v2 。
如何为cgroup v2启用“cpu”和“内存”等控制器?
Iva*_*iuk 28
从 Linux v5.0 开始,内核引导选项cgroup_no_v1=<list_of_controllers_to_disable>可用于禁用cgroup v1层次结构。因此,您的计算机应该仅以 cgroup v2 启动。
对于 WSL,微软文档说我们必须创建%UserProfile%\.wslconfig包含以下内容的文件:
[wsl2]
kernelCommandLine = cgroup_no_v1=all
Run Code Online (Sandbox Code Playgroud)
就是这样。
确保使用命令重新启动WSL > wsl.exe --shutdown。
您可以看到文件中已启用的控制器<cgroup_fs_mount_point>/cgroup.controllers。
/sys/fs/cgroup/unified. 有些应用程序可能不喜欢它(特别是 docker)。将其移动到常规位置:$ mount --move /sys/fs/cgroup/unified /sys/fs/cgroup
Run Code Online (Sandbox Code Playgroud)
/etc/fstab:cgroup2 /sys/fs/cgroup cgroup2 rw,nosuid,nodev,noexec,relatime,nsdelegate 0 0
Run Code Online (Sandbox Code Playgroud)
收据 #2 有一个副作用,即原始 cgroup 挂载点/sys/fs/cgroup/unified保持“悬空”。您可以通过运行$ mount | grep cgroup2或查看/proc/self/mountinfo文件来看到这一点。#2 的好处是在这种情况下docker服务启动时没有任何问题。因此,如果您可以容忍悬空安装,/etc/fstab则首选该方法。
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           11919 次  |  
        
|   最近记录:  |