摘要: Docker Notes系列为学习Docker笔记,本文是学习cgroups 资源限制的笔记
上节我们了解了Docker背后的资源隔离技术namespace,本节介绍另一个内核工具cgroups。
cgroups可以限制、记录、隔离进程组所使用的物理资源(包括:CPU、memory、IO等),为容器实现虚拟化提供了基本保证,是构建Docker等一系列虚拟化管理工具的基石
cgroups提供:
cgroups现在全称是control groups,它为每种可以控制的资源定义了一个子系统
docker daemon会在每个子系统的控制组目录下创建一个叫docker的控制组,在这个组里为每一个容器创建一个容器id命名的容器控制组
[root@cf /]# tree /sys/fs/cgroup/cpu/docker
/sys/fs/cgroup/cpu/docker
├── 69aa00d7aa3b6654b63280e66b671f509a3019a032ec5a09e299b793b37c6775
│ ├── cgroup.clone_children
│ ├── cgroup.event_control
│ ├── cgroup.procs
│ ├── cpuacct.stat
│ ├── cpuacct.usage
│ ├── cpuacct.usage_percpu
│ ├── cpu.cfs_period_us
│ ├── cpu.cfs_quota_us
│ ├── cpu.rt_period_us
│ ├── cpu.rt_runtime_us
│ ├── cpu.shares
│ ├── cpu.stat
│ ├── notify_on_release
│ └── tasks
├── cgroup.clone_children
├── cgroup.event_control
├── cgroup.procs
├── cpuacct.stat
├── cpuacct.usage
├── cpuacct.usage_percpu
├── cpu.cfs_period_us
├── cpu.cfs_quota_us
├── cpu.rt_period_us
├── cpu.rt_runtime_us
├── cpu.shares
├── cpu.stat
├── notify_on_release
└── tasks
tasks
[root@cf 69aa00d7aa3b6654b63280e66b671f509a3019a032ec5a09e299b793b37c6775]# cat tasks
29001
29058
29059
29060
[root@cf 69aa00d7aa3b6654b63280e66b671f509a3019a032ec5a09e299b793b37c6775]# cat cgroup.procs
29001
[root@cf 69aa00d7aa3b6654b63280e66b671f509a3019a032ec5a09e299b793b37c6775]# cat cpuacct.stat
user 2435
system 4548