cgroups资源隔离

cgroup是Linux内核提供的一种机制,这种机制可以根据需求把一系列 任务及其子任务整合(或分隔)到按资源划分等级的不同组内,从而为系统资源管理提供一个统一的框架。

cgroups不仅可以限制被namespace隔离起来的资源,还可以资源设置权重、计算使用量、操控任务(进程或线程)起停等。

cgroup可以限制、记录任务组成所使用的物理资源(包括CPU、Memoory、IO等)为容器实现虚拟化提供了基本保证。

从本质上来说,cgroups是内核附加在程序上的一系列钩子(Hook),通过程序运行时对资源的调度触发相应的钩子以达到资源追踪和限制的目的。

cgroups提供了以下四大功能:

  1. 资源限制: 可以对任务使用的资源的总额进行限制。如设定应用运行时使用内存的上限,一旦超过这个配额就发出OOM(Out of memory)提示。
  2. 优先级分配 :通过分配的CPU时间片数量及磁盘IO带宽大小,实际上就相当于控制了任务运行的优先级。
  3. 资源统计:cgroups可以统计系统的资源使用量,如CPU使用时长、内存用量等,这个功能非常适用于计费。
  4. 任务控制: cgroups可以对任务执行挂起、恢复等操作。