1、使用 cgroup namespace 需要内核开启 CONFIG_CGROUPS 选项。可通过以下方式验证:

  1 root@container:~/namespace_test# grep CONFIG_CGROUPS /boot/config-$(uname -r)

  

2、查看cgroup挂载信息:

  1. root@lord:~# mount -t cgroup
  2. cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,name=systemd)
  3. cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
  4. cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
  5. cgroup on /sys/fs/cgroup/rdma type cgroup (rw,nosuid,nodev,noexec,relatime,rdma)
  6. cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
  7. cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
  8. cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
  9. cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
  10. cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
  11. cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
  12. cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
  13. cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)

  可以看到cgroup位置在 /sys/fs/cgroup/

  1. root@lord:~# ls -l /sys/fs/cgroup/
  2. total 0
  3. dr-xr-xr-x 4 root root 0 Oct 12 10:32 blkio
  4. lrwxrwxrwx 1 root root 11 Oct 12 10:32 cpu -> cpu,cpuacct
  5. lrwxrwxrwx 1 root root 11 Oct 12 10:32 cpuacct -> cpu,cpuacct
  6. dr-xr-xr-x 5 root root 0 Oct 12 10:32 cpu,cpuacct
  7. dr-xr-xr-x 3 root root 0 Oct 12 10:32 cpuset
  8. dr-xr-xr-x 5 root root 0 Oct 12 10:32 devices
  9. dr-xr-xr-x 5 root root 0 Oct 12 10:32 freezer
  10. dr-xr-xr-x 3 root root 0 Oct 12 10:32 hugetlb
  11. dr-xr-xr-x 5 root root 0 Oct 12 10:32 memory
  12. lrwxrwxrwx 1 root root 16 Oct 12 10:32 net_cls -> net_cls,net_prio
  13. dr-xr-xr-x 3 root root 0 Oct 12 10:32 net_cls,net_prio
  14. lrwxrwxrwx 1 root root 16 Oct 12 10:32 net_prio -> net_cls,net_prio
  15. dr-xr-xr-x 3 root root 0 Oct 12 10:32 perf_event
  16. dr-xr-xr-x 4 root root 0 Oct 12 10:32 pids
  17. dr-xr-xr-x 3 root root 0 Oct 12 10:32 rdma
  18. dr-xr-xr-x 5 root root 0 Oct 12 10:32 systemd
  19. dr-xr-xr-x 5 root root 0 Oct 12 10:32 unified
  1. root@lord:/sys/fs/cgroup/cpu# pwd
  2. /sys/fs/cgroup/cpu
  1. root@lord:/sys/fs/cgroup/cpu# ls -l
  1. dr-xr-xr-x 5 root root 0 Oct 12 10:32 ./
  2. drwxr-xr-x 15 root root 380 Oct 12 10:32 ../
  3. drwxr-xr-x 2 root root 0 Oct 12 17:22 aa/
  4. -rw-r--r-- 1 root root 0 Oct 12 17:22 cgroup.clone_children
  5. -rw-r--r-- 1 root root 0 Oct 12 17:22 cgroup.procs
  6. -r--r--r-- 1 root root 0 Oct 12 17:22 cgroup.sane_behavior
  7. -r--r--r-- 1 root root 0 Oct 12 17:22 cpuacct.stat
  8. -rw-r--r-- 1 root root 0 Oct 12 17:22 cpuacct.usage
  9. -r--r--r-- 1 root root 0 Oct 12 17:22 cpuacct.usage_all
  10. -r--r--r-- 1 root root 0 Oct 12 17:22 cpuacct.usage_percpu
  11. -r--r--r-- 1 root root 0 Oct 12 17:22 cpuacct.usage_percpu_sys
  12. -r--r--r-- 1 root root 0 Oct 12 17:22 cpuacct.usage_percpu_user
  13. -r--r--r-- 1 root root 0 Oct 12 17:22 cpuacct.usage_sys
  14. -r--r--r-- 1 root root 0 Oct 12 17:22 cpuacct.usage_user
  15. -rw-r--r-- 1 root root 0 Oct 12 17:22 cpu.cfs_period_us
  16. -rw-r--r-- 1 root root 0 Oct 12 17:22 cpu.cfs_quota_us
  17. -rw-r--r-- 1 root root 0 Oct 12 17:22 cpu.shares
  18. -r--r--r-- 1 root root 0 Oct 12 17:22 cpu.stat
  19. -rw-r--r-- 1 root root 0 Oct 12 17:22 notify_on_release
  20. -rw-r--r-- 1 root root 0 Oct 12 17:22 release_agent
  21. drwxr-xr-x 99 root root 0 Oct 12 10:32 system.slice/
  22. -rw-r--r-- 1 root root 0 Oct 12 17:22 tasks
  23. drwxr-xr-x 2 root root 0 Oct 12 17:22 user.slice/

  

  

4.查看当前进程所关联的cgroup

  1. root@lord:~# cat /proc/$$/cgroup
  2. 12:memory:/user.slice/user-0.slice/session-19.scope
  3. 11:net_cls,net_prio:/
  4. 10:blkio:/user.slice
  5. 9:devices:/user.slice
  6. 8:freezer:/
  7. 7:perf_event:/
  8. 6:hugetlb:/
  9. 5:cpuset:/
  10. 4:rdma:/
  11. 3:pids:/user.slice/user-0.slice/session-19.scope
  12. 2:cpu,cpuacct:/user.slice
  13. 1:name=systemd:/user.slice/user-0.slice/session-19.scope
  14. 0::/user.slice/user-0.slice/session-19.scope

 根目录就是上面查询的cgroup挂载信息: 如      5:cpuset:/ 关联 /sys/fs/cgroup/cpu

5.新增子cgroup,如新增CPU下的cgroup,并将当前进程加入tasks

写入tasks的进程 将受该cgroup的资源限制

  1. root@lord:/sys/fs/cgroup/cpu# mkdir test
  2. root@lord:/sys/fs/cgroup/cpu# ls -l test/
  3. total 0
  4. -rw-r--r-- 1 root root 0 Oct 12 17:57 cgroup.clone_children
  5. -rw-r--r-- 1 root root 0 Oct 12 17:57 cgroup.procs
  6. -r--r--r-- 1 root root 0 Oct 12 17:57 cpuacct.stat
  7. -rw-r--r-- 1 root root 0 Oct 12 17:57 cpuacct.usage
  8. -r--r--r-- 1 root root 0 Oct 12 17:57 cpuacct.usage_all
  9. -r--r--r-- 1 root root 0 Oct 12 17:57 cpuacct.usage_percpu
  10. -r--r--r-- 1 root root 0 Oct 12 17:57 cpuacct.usage_percpu_sys
  11. -r--r--r-- 1 root root 0 Oct 12 17:57 cpuacct.usage_percpu_user
  12. -r--r--r-- 1 root root 0 Oct 12 17:57 cpuacct.usage_sys
  13. -r--r--r-- 1 root root 0 Oct 12 17:57 cpuacct.usage_user
  14. -rw-r--r-- 1 root root 0 Oct 12 17:57 cpu.cfs_period_us
  15. -rw-r--r-- 1 root root 0 Oct 12 17:57 cpu.cfs_quota_us
  16. -rw-r--r-- 1 root root 0 Oct 12 17:57 cpu.shares
  17. -r--r--r-- 1 root root 0 Oct 12 17:57 cpu.stat
  18. -rw-r--r-- 1 root root 0 Oct 12 17:57 cpu.uclamp.max
  19. -rw-r--r-- 1 root root 0 Oct 12 17:57 cpu.uclamp.min
  20. -rw-r--r-- 1 root root 0 Oct 12 17:57 notify_on_release
  21. -rw-r--r-- 1 root root 0 Oct 12 17:57 tasks
  22. root@lord:/sys/fs/cgroup/cpu# cd test;echo $$ >> tasks
  23. root@lord:/sys/fs/cgroup/cpu#   

现在可以通过更改test目录下的配置文件,设置进程组使用的CPU限制

6:docker进程与cgroup

  1. root@lord:/sys/fs/cgroup/cpu/test# docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. f197f2487e5f alpine-tinghua "sh -c 'tail -f /dev…" 7 hours ago Up 7 hours bb
  4. root@lord:/sys/fs/cgroup/cpu/test# docker inspect --format '{{.State.Pid}}' bb #查看容器在主机的进程号
  5. 11290
  6. root@lord:/sys/fs/cgroup/cpu/test# cat /proc/11290/cgroup
  7. 12:memory:/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope
  8. 11:net_cls,net_prio:/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope
  9. 10:blkio:/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope
  10. 9:devices:/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope
  11. 8:freezer:/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope
  12. 7:perf_event:/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope
  13. 6:hugetlb:/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope
  14. 5:cpuset:/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope
  15. 4:rdma:/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope
  16. 3:pids:/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope
  17. 2:cpu,cpuacct:/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope
  18. 1:name=systemd:/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope
  19. 0::/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope
  20. root@lord:/sys/fs/cgroup/cpu/test#

  

  1. root@lord:/sys/fs/cgroup/cpu/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope# pwd
  2. /sys/fs/cgroup/cpu/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope
  3. root@lord:/sys/fs/cgroup/cpu/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope# ll
  4. total 0
  5. drwxr-xr-x 2 root root 0 Oct 12 11:03 ./
  6. drwxr-xr-x 99 root root 0 Oct 12 10:32 ../
  7. -rw-r--r-- 1 root root 0 Oct 12 18:07 cgroup.clone_children
  8. -rw-r--r-- 1 root root 0 Oct 12 18:07 cgroup.procs
  9. -r--r--r-- 1 root root 0 Oct 12 18:07 cpuacct.stat
  10. -rw-r--r-- 1 root root 0 Oct 12 18:07 cpuacct.usage
  11. -r--r--r-- 1 root root 0 Oct 12 18:07 cpuacct.usage_all
  12. -r--r--r-- 1 root root 0 Oct 12 18:07 cpuacct.usage_percpu
  13. -r--r--r-- 1 root root 0 Oct 12 18:07 cpuacct.usage_percpu_sys
  14. -r--r--r-- 1 root root 0 Oct 12 18:07 cpuacct.usage_percpu_user
  15. -r--r--r-- 1 root root 0 Oct 12 18:07 cpuacct.usage_sys
  16. -r--r--r-- 1 root root 0 Oct 12 18:07 cpuacct.usage_user
  17. -rw-r--r-- 1 root root 0 Oct 12 18:07 cpu.cfs_period_us
  18. -rw-r--r-- 1 root root 0 Oct 12 18:07 cpu.cfs_quota_us
  19. -rw-r--r-- 1 root root 0 Oct 12 18:07 cpu.shares
  20. -r--r--r-- 1 root root 0 Oct 12 18:07 cpu.stat
  21. -rw-r--r-- 1 root root 0 Oct 12 18:07 cpu.uclamp.max
  22. -rw-r--r-- 1 root root 0 Oct 12 18:07 cpu.uclamp.min
  23. -rw-r--r-- 1 root root 0 Oct 12 18:07 notify_on_release
  24. -rw-r--r-- 1 root root 0 Oct 12 18:07 tasks
  25. root@lord:/sys/fs/cgroup/cpu/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope#

  

当我们创建容器时传入的资源限制:如内存或者cpu 都会通过写入cgroup文件 实现资源限制

  1.  

cgroup与docker的更多相关文章

  1. 通过cgroup给docker的CPU和内存资源做限制

    1.cpu docker run -it --cpu-period=100000 --cpu-quota=2000 ubuntu /bin/bash 相当于只能使用20%的CPU 在每个100ms的时 ...

  2. centos7下安装docker(10容器底层--cgroup和namespace)

    cgroup和namespace是实现容器底层的重要技术 cgroup:实现资源限制 namespace:实现资源隔离 1.cgroup:control group Linux操作系统通过cgroup ...

  3. Docker技术-cgroup

    分类: 虚拟化 Docker容器采用了linux内核中的cgroup技术来实现container的资源的隔离和控制. 关于cgroup我们需要了解的它的知识点: 1. 基本概念 cgroup涉及到几个 ...

  4. Docker资源限制实现——cgroup

    摘要 随着Docker技术被越来越多的个人.企业所接受,其用途也越来越广泛.Docker资源管理包含对CPU.内存.IO等资源的限制,但大部分Docker使用者在使用资源管理接口时往往还比较模糊. 本 ...

  5. Docker 容器的资源限制 cgroup(九)

    目录 一.cgroup简介 二.CPU资源配额控制 1.CPU份额控制 2.CPU周期控制 3.CPU core控制 4.CPU配额控制参数的混合使用 二.对内存的限额 三.对 Block IO 的限 ...

  6. Docker namespace,cgroup,镜像构建,数据持久化及Harbor安装、高可用配置

    1.Docker namespace 1.1 namespace介绍 namespace是Linux提供的用于分离进程树.网络接口.挂载点以及进程间通信等资源的方法.可以使运行在同一台机器上的不同服务 ...

  7. 理解Docker(4):Docker 容器使用 cgroups 限制资源使用

    本系列文章将介绍Docker的有关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...

  8. Docker之Linux Cgroups

    Linux Cgroups介绍 上面是构建Linux容器的namespace技术,它帮进程隔离出自己单独的空间,但Docker又是怎么限制每个空间的大小,保证他们不会互相争抢呢?那么就要用到Linux ...

  9. Docker实践(5)—资源隔离

    Docker使用cgroup实现CPU,内存和磁盘IO等系统资源的限制. CPU Docker现在有2个与CPU资源相关的参数,-c可以指定CPU的占比,--cpuset可以绑定CPU.例如,指定容器 ...

  10. docker入门指南(转载)

    原文: http://bg.biedalian.com/2014/11/20/docker-start.html 关于 docker 今天云平台的同事提到, 现在的运维就是恶性循环, 因为大家都在申请 ...

随机推荐

  1. C++练习3 定义带默认值的参数

    通过void func 定义函数的默认值和其可以容纳多少个实参 1 #include <iostream> 2 using namespace std; 3 void func(int a ...

  2. javaEE(Stream流、日志、IO流、File)

    Stream流 简化集合和数组操作的API List<String> list =new ArrayList<>(); Collection.addAll(list," ...

  3. 调用后台接口实现Excel导出功能以及导出乱码问题解决

    实现效果 在导出表格数据的时候,通常分为两种情况 页面列表数据导出 接口返回数据导出 这里主要介绍接口返回数据导出,关于页面的列表数据导出,请看另一篇:vue3+element表格数据导出 接口返回数 ...

  4. vant ui rem配置流程

    参考地址  https://www.cnblogs.com/WQLong/p/7798822.html 1.下载lib-flexible 使用的是vue-cli+webpack,通过npm来安装的 n ...

  5. ubuntu 一键安装lnmp环境

    转载csdn: ubuntu 一键安装lnmp环境_手艺人小在的博客-CSDN博客 注意:采用编译安装方法,花费时间较长,这个只有稳定版的,没有高版本的. 转载vpsgo: Linux上一键安装LNM ...

  6. Windows 10系统设置多用户同时远程登录教程 and rdpwrap下载 and Win10多用户同时远程桌面的另类解决方案---支持1809和1909和2004版本V2.0

    转载简书: Windows 10系统设置多用户同时远程登录教程 - 简书 (jianshu.com) 转载github: 发布 ·stascorp/rdpwrap ·GitHub 转载csdn: Wi ...

  7. vue - 开发必须知道的 36 个技巧

    来源于:https://juejin.im/post/6844903959266590728  

  8. codeforce D. Concatenated Multiples

    http://codeforces.com/contest/1029/problem/D 看C题的第一眼就觉得自己一定能做出来,结果就兴致勃勃地做了一天,最后做出来了.但看到这道题时,第一感觉就是&q ...

  9. Windows 下安装 Bun:像 Node 或 Deno 一样的现代 JavaScript 运行时

    背景 最近前端工具链又火了一个项目 Bun,可以说内卷非常严重.Bun 是一个新的 JavaScript 运行时,内置了打包器.转译器.任务运行器和 npm 客户端. Bun 是像 Node 或 De ...

  10. 2022-05-27内部群每日三题-清辉PMP

    1.一个组织正在开始一个大型的.首个这种类型的项目.项目经理与相关方召开会议,以识别存在的项目问题.项目经理应该使用什么工具和技术来改进会议的结果? A.头脑风暴.核对单和访谈 B.头脑风暴.因果图和 ...