cgroup控制、限制那些资源

cgroup

cgroup(控制组)是Linux内核的一项特性,用于将进程组织成层次结构,并对这些进程进行资源限制、优先级控制、审计和监控。它能够控制和限制CPU时间、内存使用、磁盘I/O等资源的使用,以便更好地管理系统资源。

cgroup 主要有以下几种控制子系统(也叫cgroup controller):

  1. cpu:控制进程的CPU使用,指定进程的CPU时间分配。可以限制进程占用的CPU核心数、CPU的优先级等。
  2. memory:限制进程的内存使用,包括物理内存和交换空间。可以指定最大内存使用量,避免进程内存占用过多导致系统崩溃。
  3. blkio:控制进程的磁盘I/O行为,限制读写操作的速率、优先级等。
  4. net_cls:用于网络流量控制,通过指定流量标识符(Class ID),限制或优先处理某些网络流量。
  5. devices:控制进程对设备的访问权限,可以限制某些设备的使用,确保进程不会对设备进行无关操作。
  6. freezer:可以冻结某个cgroup中的所有进程,暂停它们的执行,直到再次恢复。
  7. cpuset:指定进程运行的CPU核心和内存节点。可以将进程绑定到特定的CPU核心或内存节点,避免进程迁移。
  8. hugetlb:控制进程对大页内存(huge pages)的使用,可以限制进程申请大页内存的数量。
  9. pids:限制某个cgroup中可以创建的最大进程数,防止进程爆炸式增长。
  10. rdma:控制进程对RDMA设备的访问。