cgroup与docker
1、使用 cgroup namespace 需要内核开启 CONFIG_CGROUPS 选项。可通过以下方式验证:
1 root@container:~/namespace_test# grep CONFIG_CGROUPS /boot/config-$(uname -r)

2、查看cgroup挂载信息:
root@lord:~# mount -t cgroup
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,name=systemd)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
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)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
可以看到cgroup位置在 /sys/fs/cgroup/
root@lord:~# ls -l /sys/fs/cgroup/
total 0
dr-xr-xr-x 4 root root 0 Oct 12 10:32 blkio
lrwxrwxrwx 1 root root 11 Oct 12 10:32 cpu -> cpu,cpuacct
lrwxrwxrwx 1 root root 11 Oct 12 10:32 cpuacct -> cpu,cpuacct
dr-xr-xr-x 5 root root 0 Oct 12 10:32 cpu,cpuacct
dr-xr-xr-x 3 root root 0 Oct 12 10:32 cpuset
dr-xr-xr-x 5 root root 0 Oct 12 10:32 devices
dr-xr-xr-x 5 root root 0 Oct 12 10:32 freezer
dr-xr-xr-x 3 root root 0 Oct 12 10:32 hugetlb
dr-xr-xr-x 5 root root 0 Oct 12 10:32 memory
lrwxrwxrwx 1 root root 16 Oct 12 10:32 net_cls -> net_cls,net_prio
dr-xr-xr-x 3 root root 0 Oct 12 10:32 net_cls,net_prio
lrwxrwxrwx 1 root root 16 Oct 12 10:32 net_prio -> net_cls,net_prio
dr-xr-xr-x 3 root root 0 Oct 12 10:32 perf_event
dr-xr-xr-x 4 root root 0 Oct 12 10:32 pids
dr-xr-xr-x 3 root root 0 Oct 12 10:32 rdma
dr-xr-xr-x 5 root root 0 Oct 12 10:32 systemd
dr-xr-xr-x 5 root root 0 Oct 12 10:32 unified
root@lord:/sys/fs/cgroup/cpu# pwd
/sys/fs/cgroup/cpu
root@lord:/sys/fs/cgroup/cpu# ls -l
dr-xr-xr-x 5 root root 0 Oct 12 10:32 ./
drwxr-xr-x 15 root root 380 Oct 12 10:32 ../
drwxr-xr-x 2 root root 0 Oct 12 17:22 aa/
-rw-r--r-- 1 root root 0 Oct 12 17:22 cgroup.clone_children
-rw-r--r-- 1 root root 0 Oct 12 17:22 cgroup.procs
-r--r--r-- 1 root root 0 Oct 12 17:22 cgroup.sane_behavior
-r--r--r-- 1 root root 0 Oct 12 17:22 cpuacct.stat
-rw-r--r-- 1 root root 0 Oct 12 17:22 cpuacct.usage
-r--r--r-- 1 root root 0 Oct 12 17:22 cpuacct.usage_all
-r--r--r-- 1 root root 0 Oct 12 17:22 cpuacct.usage_percpu
-r--r--r-- 1 root root 0 Oct 12 17:22 cpuacct.usage_percpu_sys
-r--r--r-- 1 root root 0 Oct 12 17:22 cpuacct.usage_percpu_user
-r--r--r-- 1 root root 0 Oct 12 17:22 cpuacct.usage_sys
-r--r--r-- 1 root root 0 Oct 12 17:22 cpuacct.usage_user
-rw-r--r-- 1 root root 0 Oct 12 17:22 cpu.cfs_period_us
-rw-r--r-- 1 root root 0 Oct 12 17:22 cpu.cfs_quota_us
-rw-r--r-- 1 root root 0 Oct 12 17:22 cpu.shares
-r--r--r-- 1 root root 0 Oct 12 17:22 cpu.stat
-rw-r--r-- 1 root root 0 Oct 12 17:22 notify_on_release
-rw-r--r-- 1 root root 0 Oct 12 17:22 release_agent
drwxr-xr-x 99 root root 0 Oct 12 10:32 system.slice/
-rw-r--r-- 1 root root 0 Oct 12 17:22 tasks
drwxr-xr-x 2 root root 0 Oct 12 17:22 user.slice/
4.查看当前进程所关联的cgroup
root@lord:~# cat /proc/$$/cgroup
12:memory:/user.slice/user-0.slice/session-19.scope
11:net_cls,net_prio:/
10:blkio:/user.slice
9:devices:/user.slice
8:freezer:/
7:perf_event:/
6:hugetlb:/
5:cpuset:/
4:rdma:/
3:pids:/user.slice/user-0.slice/session-19.scope
2:cpu,cpuacct:/user.slice
1:name=systemd:/user.slice/user-0.slice/session-19.scope
0::/user.slice/user-0.slice/session-19.scope
根目录就是上面查询的cgroup挂载信息: 如 5:cpuset:/ 关联 /sys/fs/cgroup/cpu
5.新增子cgroup,如新增CPU下的cgroup,并将当前进程加入tasks
写入tasks的进程 将受该cgroup的资源限制
root@lord:/sys/fs/cgroup/cpu# mkdir test
root@lord:/sys/fs/cgroup/cpu# ls -l test/
total 0
-rw-r--r-- 1 root root 0 Oct 12 17:57 cgroup.clone_children
-rw-r--r-- 1 root root 0 Oct 12 17:57 cgroup.procs
-r--r--r-- 1 root root 0 Oct 12 17:57 cpuacct.stat
-rw-r--r-- 1 root root 0 Oct 12 17:57 cpuacct.usage
-r--r--r-- 1 root root 0 Oct 12 17:57 cpuacct.usage_all
-r--r--r-- 1 root root 0 Oct 12 17:57 cpuacct.usage_percpu
-r--r--r-- 1 root root 0 Oct 12 17:57 cpuacct.usage_percpu_sys
-r--r--r-- 1 root root 0 Oct 12 17:57 cpuacct.usage_percpu_user
-r--r--r-- 1 root root 0 Oct 12 17:57 cpuacct.usage_sys
-r--r--r-- 1 root root 0 Oct 12 17:57 cpuacct.usage_user
-rw-r--r-- 1 root root 0 Oct 12 17:57 cpu.cfs_period_us
-rw-r--r-- 1 root root 0 Oct 12 17:57 cpu.cfs_quota_us
-rw-r--r-- 1 root root 0 Oct 12 17:57 cpu.shares
-r--r--r-- 1 root root 0 Oct 12 17:57 cpu.stat
-rw-r--r-- 1 root root 0 Oct 12 17:57 cpu.uclamp.max
-rw-r--r-- 1 root root 0 Oct 12 17:57 cpu.uclamp.min
-rw-r--r-- 1 root root 0 Oct 12 17:57 notify_on_release
-rw-r--r-- 1 root root 0 Oct 12 17:57 tasks
root@lord:/sys/fs/cgroup/cpu# cd test;echo $$ >> tasks
root@lord:/sys/fs/cgroup/cpu#

现在可以通过更改test目录下的配置文件,设置进程组使用的CPU限制
6:docker进程与cgroup
root@lord:/sys/fs/cgroup/cpu/test# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f197f2487e5f alpine-tinghua "sh -c 'tail -f /dev…" 7 hours ago Up 7 hours bb
root@lord:/sys/fs/cgroup/cpu/test# docker inspect --format '{{.State.Pid}}' bb #查看容器在主机的进程号
11290
root@lord:/sys/fs/cgroup/cpu/test# cat /proc/11290/cgroup
12:memory:/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope
11:net_cls,net_prio:/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope
10:blkio:/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope
9:devices:/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope
8:freezer:/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope
7:perf_event:/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope
6:hugetlb:/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope
5:cpuset:/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope
4:rdma:/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope
3:pids:/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope
2:cpu,cpuacct:/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope
1:name=systemd:/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope
0::/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope
root@lord:/sys/fs/cgroup/cpu/test#
root@lord:/sys/fs/cgroup/cpu/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope# pwd
/sys/fs/cgroup/cpu/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope
root@lord:/sys/fs/cgroup/cpu/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope# ll
total 0
drwxr-xr-x 2 root root 0 Oct 12 11:03 ./
drwxr-xr-x 99 root root 0 Oct 12 10:32 ../
-rw-r--r-- 1 root root 0 Oct 12 18:07 cgroup.clone_children
-rw-r--r-- 1 root root 0 Oct 12 18:07 cgroup.procs
-r--r--r-- 1 root root 0 Oct 12 18:07 cpuacct.stat
-rw-r--r-- 1 root root 0 Oct 12 18:07 cpuacct.usage
-r--r--r-- 1 root root 0 Oct 12 18:07 cpuacct.usage_all
-r--r--r-- 1 root root 0 Oct 12 18:07 cpuacct.usage_percpu
-r--r--r-- 1 root root 0 Oct 12 18:07 cpuacct.usage_percpu_sys
-r--r--r-- 1 root root 0 Oct 12 18:07 cpuacct.usage_percpu_user
-r--r--r-- 1 root root 0 Oct 12 18:07 cpuacct.usage_sys
-r--r--r-- 1 root root 0 Oct 12 18:07 cpuacct.usage_user
-rw-r--r-- 1 root root 0 Oct 12 18:07 cpu.cfs_period_us
-rw-r--r-- 1 root root 0 Oct 12 18:07 cpu.cfs_quota_us
-rw-r--r-- 1 root root 0 Oct 12 18:07 cpu.shares
-r--r--r-- 1 root root 0 Oct 12 18:07 cpu.stat
-rw-r--r-- 1 root root 0 Oct 12 18:07 cpu.uclamp.max
-rw-r--r-- 1 root root 0 Oct 12 18:07 cpu.uclamp.min
-rw-r--r-- 1 root root 0 Oct 12 18:07 notify_on_release
-rw-r--r-- 1 root root 0 Oct 12 18:07 tasks
root@lord:/sys/fs/cgroup/cpu/system.slice/docker-f197f2487e5f40c0468ba6b76f1d9cf451304d2ee10ef8266b75e8e6f6554bd7.scope#
当我们创建容器时传入的资源限制:如内存或者cpu 都会通过写入cgroup文件 实现资源限制
cgroup与docker的更多相关文章
- 通过cgroup给docker的CPU和内存资源做限制
1.cpu docker run -it --cpu-period=100000 --cpu-quota=2000 ubuntu /bin/bash 相当于只能使用20%的CPU 在每个100ms的时 ...
- centos7下安装docker(10容器底层--cgroup和namespace)
cgroup和namespace是实现容器底层的重要技术 cgroup:实现资源限制 namespace:实现资源隔离 1.cgroup:control group Linux操作系统通过cgroup ...
- Docker技术-cgroup
分类: 虚拟化 Docker容器采用了linux内核中的cgroup技术来实现container的资源的隔离和控制. 关于cgroup我们需要了解的它的知识点: 1. 基本概念 cgroup涉及到几个 ...
- Docker资源限制实现——cgroup
摘要 随着Docker技术被越来越多的个人.企业所接受,其用途也越来越广泛.Docker资源管理包含对CPU.内存.IO等资源的限制,但大部分Docker使用者在使用资源管理接口时往往还比较模糊. 本 ...
- Docker 容器的资源限制 cgroup(九)
目录 一.cgroup简介 二.CPU资源配额控制 1.CPU份额控制 2.CPU周期控制 3.CPU core控制 4.CPU配额控制参数的混合使用 二.对内存的限额 三.对 Block IO 的限 ...
- Docker namespace,cgroup,镜像构建,数据持久化及Harbor安装、高可用配置
1.Docker namespace 1.1 namespace介绍 namespace是Linux提供的用于分离进程树.网络接口.挂载点以及进程间通信等资源的方法.可以使运行在同一台机器上的不同服务 ...
- 理解Docker(4):Docker 容器使用 cgroups 限制资源使用
本系列文章将介绍Docker的有关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...
- Docker之Linux Cgroups
Linux Cgroups介绍 上面是构建Linux容器的namespace技术,它帮进程隔离出自己单独的空间,但Docker又是怎么限制每个空间的大小,保证他们不会互相争抢呢?那么就要用到Linux ...
- Docker实践(5)—资源隔离
Docker使用cgroup实现CPU,内存和磁盘IO等系统资源的限制. CPU Docker现在有2个与CPU资源相关的参数,-c可以指定CPU的占比,--cpuset可以绑定CPU.例如,指定容器 ...
- docker入门指南(转载)
原文: http://bg.biedalian.com/2014/11/20/docker-start.html 关于 docker 今天云平台的同事提到, 现在的运维就是恶性循环, 因为大家都在申请 ...
随机推荐
- STM32F0库函数初始化系列:进入STOP模式,外部中断唤醒
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource0); EXTI_InitStructure.EXTI_Line=EXTI_Line ...
- 2 .NET Core笔试题
1.说说在Linux系统部署ASP.NET Core项目的步骤. 2.说说热重载是什么. 3.如何理解鉴权和授权两个词 4.说说.NET7包含了几大方向的开发? 5.如何理解云原生? 6.ASP.NE ...
- JZOJ 3469. 【NOIP2013模拟联考7】数列(sequence)
\(\text{Solution}\) 明显的 \(\text{K-D Tree}\) 基操题 提前给出了数列,那么考虑提前建好树,省去重构 但还是要开 \(O\) \(\text{Code}\) # ...
- JZOJ 4253.QYQ在艾泽拉斯
\(\text{Problem}\) 有向不联通图,求每个子图至多选出一条最大权值和的路径,求前 \(k+1\) 个 \(\text{Solution}\) 显然将每个子图缩点后 \(dp\),排序 ...
- C#判断useragent是pc还是手机端
public static bool CheckAgent(string userAgent) { bool flag = false; string[] keywords = { "And ...
- Servlet(服务连接器)
Servlet(Server Applet):是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据 ...
- js中常用Math对象
js中常用Math对象 Math.round()四舍五入 Math.ceil() ->ceil 天花板--->向上取整 Math.floor() 向下取整 Math.floor(-11.1 ...
- vue3 loading 等待效果
一.自定义组件 loading.vue <template> <div class="loading" v-show="msg.show"&g ...
- Day12 面向对象
面向对象 前提须知:Java中想要创建对象,必须要有类的存在 类和对象的关系: 依赖关系:需要根据类,创建对象 数量关系:根据一个类,可以创建出多个对象 创建Student类的对象进行使用 创建对象的 ...
- LP1-5:流程与沟通
口头沟通,整理归档,落到文档或JIRA任务中 JIRA上的需求有对应任务,开发任务对应需求任务号,测试任务号对应开发任务,上线任务对应测试及开发任务. 需求说明 :每个版本有什么功能. 控制需求三要素 ...