cgroups - Linux进程资源分离


未知
Linux
C/C++

软件简介

cgroups(控制组)是Linux内核的一个功能,用来限制报告和分离一个进程组的资源(CPU、内存、磁盘输入输出等)。这个工作是由Google的工程师(主要是Paul
Menage和Rohit Seth)在2006年以“process
containers(进程容器)”的名字开始的;在2007年的晚些时候被重命名为控制组(由于在内核中“容器”这个名词的歧义引起的混乱)并被合并到2.6.24版的内核中去。自那以后,又添加了很多功能和控制器。

cgroups的一个设计目标是为不同的应用情况提供统一的接口,从控制单一进程(像nice)到系统级虚拟化(像opeNVZ,Linux-
VServer,LXC)。cgroups提供:

  • 资源限制: 组可以被设置不超过设定的内存限制;这也包括虚拟内存。原来的分页机制是在Linux研讨会的 Containers: Challenges with the memory resource controller and its performance 报告中提出的。
  • 优先化: 一些组可能会得到大量的CPU或磁盘输入输出通量。
  • 报告: 用来衡量系统确实把多少资源用到适合的目的上。
  • 分离: 为组分离命名空间,这样一个组不会看到另一个组的进程、网络连接和文件。
  • 控制: 冻结组或检查点和重启动。