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