Cgroups-限制可用资源
如果应用优化得不够好,直接把CPU或内存吃光也完全不是新鲜事。但我们肯定不能容忍容器无限制地挤占宿主机的资源,甚至把宿主机搞down掉。
所以我们可以通过Linux的Cgroups(Control Groups,控制组)对某个容器可以使用的各种硬件资源设置配额。
根据wiki,Cgroups的功能包括:
- 资源限制(Resource Limitation):进程组使用的内存的上限,也包括文件系统与物理内存交换用的页缓存(Page Cache)
- 优先级分配(Prioritization):控制分配的CPU时间片数量及硬盘IO吞吐,实际上就相当于控制了进程运行的优先级
- 资源统计(Accounting):统计资源使用量,如CPU使用时长、内存用量等,主要用于计费
- 进程控制(Control):执行挂起、恢复进程组的操作
Cgroups的设置一般分为三个主要步骤:
- 创建cgroup
- 设置cgroup配额(将cpu/内存等各种子系统添加到该cgroup中)
- 将进程添加为cgroup的任务
Docker容器在启动时候会动态创建Cgroup,并在容器终止的时候删除。