Cgroup(Control Group)是Linux内核中用于隔离和限制进程组资源使用的一种机制。它允许管理员对系统资源(如CPU、内存、磁盘IO等)进行细粒度的控制。

Cgroup的用途

  • 资源隔离:可以将不同的进程或服务隔离在不同的Cgroup中,从而避免它们之间相互干扰。
  • 资源限制:可以对Cgroup中的进程进行资源限制,如限制CPU使用率、内存使用量等。
  • 优先级管理:可以通过调整Cgroup的优先级来控制进程的执行顺序。

Cgroup的组成部分

  • 子系统:Cgroup由多个子系统组成,每个子系统负责管理不同的资源。常见的子系统有:
    • cpu:控制CPU的使用。
    • memory:控制内存的使用。
    • devices:控制设备的使用。
    • net_cls:为网络数据包分类。
    • ns:命名空间。
  • 控制组:由子系统组成,用于对进程进行分组。

示例

以下是一个简单的Cgroup配置示例:

# 创建名为mycg的Cgroup
cgcreate -g cpu,memory:mycg

# 将进程pid为1234的进程加入到mycg
cgclassify -g cpu,memory:mycg -p 1234

# 查看mycg的CPU使用情况
cgstat -i mycg

扩展阅读

Cgroup架构图