我想更好地了解 cgroup,并想了解应用 cgroup 的用例。
cgroup 是否是确定不同应用程序优先级的好方法(即,为特定类型的应用程序(如 Web 服务器)提供更高的优先级)?
答案1
有多种用途cgroups。从系统管理的角度来看,最重要的可能是限制资源——典型的例子是 CPU 访问。如果您为例如创建一个组sshd
并给它一些不可忽略的CPU时间份额(与其他组或所有未排序进程所属的默认值相比),则保证即使在机器运行时也能够登录CPU密集型任务。
更有趣的是,如果您为这个“远程访问”进程提供比其他进程更高的 CPU 份额,您将几乎可以立即登录(因为 ssh 守护进程将优先于其余正在运行的进程),而不会受到伤害机器的整体计算强度,因为资源仅根据需要进行分配。您通常希望与 I/O(包括网络)优先级一起执行此操作。然而,正如约翰在下面的评论中正确指出的那样,人们不想粗心地做这些事情(因为它可能会以意想不到的方式回击)。需要记住的重要一点是,这些组是默认继承的——即,人们不希望从这样的 ssh 会话中启动内存/CPU 占用。然而为此,有一些机制可以在进程启动时将进程分配给 cgroup。
另一个用途是将进程彼此隔离——与最新 Linux 内核中的其他功能(命名空间隔离)相结合,它们用于创建操作系统级虚拟化,例如LXC(Linux 容器)。
除此之外,您还可以执行各种统计和控制操作(冻结某些进程组、将它们分配给特定的 CPU 核心等)。
如果您正在寻找更多信息,这里的两个链接应该是一个合理的起点。您可能还想检查Documentation/cgroups
Linux 内核源代码树中的目录。