使用cgroup控制应用程序的优先级


Answers:


8

cgroups有多种用途。在系统管理中,最重要的一项可能是限制资源-这里的经典示例是cpu访问。如果为例如创建一个组,sshd并为其分配一些不可忽略的CPU时间份额(与其他组或所有未排序进程的默认组相比),即使在机器运行时,也可以确保登录一个CPU密集型任务。

更有趣的是,如果为该“远程访问”进程提供比其他进程更多的CPU份额,则您几乎可以立即登录(因为ssh守护程序将优先于其余正在运行的进程),而又不会受到影响。机器的整体计算能力,因为仅根据需要分配资源。您通常希望将其与I / O(包括网络)优先级一起进行。但是,正如John在下面的评论中正确指出的那样,一个人不想随意地做这些事情(因为它可能以一种意想不到的方式返回)。要记住的重要一点是,默认情况下,这些组是继​​承的,即,一个组不想从这样的ssh会话中启动内存/ CPU。为此,有一些机制可以在启动cgroup时将其分配给它们。

另一个用途是将进程彼此隔离-结合最近Linux内核中的其他功能(名称空间隔离),它们用于创建OS级虚拟化,如LXC(Linux容器)

除此之外,您还可以执行各种记帐和控制工作(冻结某些进程组,将它们分配给特定的CPU内核等)。

如果您需要更多信息,则此处的两个链接应该是一个合理的起点。您可能还需要检查Documentation/cgroupsLinux内核源代码树中的目录。


谢谢。sshd示例很有趣,并提出了另一个相关的想法。我没有考虑过的一个方面是确保适当分配其他资源-我假设不了解应用程序配置文件的某人可能只会通过为CPU分配资源(在此示例中)而没有为I /分配资源而造成严重破坏O(说网络)。如果是这样-是否在任何地方发布了知名的cgroup档案?
约翰尼2012年

@John确实是一个有趣的问题。您可能要检查具有的分发systemd,该分发出于自己的目的使用cgroups-服务的systemd单元文件可能会提供一些关于合理的线索。但是最后,系统管理员必须学习困难的方法,这实际上不是“好主意(TM)”。
彼得

1
@kokbira取决于哪个级别-通常cgroup,您需要先写入可能需要挂载的伪文件系统。今天,在大多数情况下,init系统会为您执行此操作,并且通常已经以某种方式使用了cgroup。唯一的答案是阅读文档:内核docsOpenRC @ Gentoosystemd @ freedesktop
彼得

1
@kokbira操作系统会执行您告诉它的操作(至少是一个很好的操作-有些操作会执行很多其他您没有告诉他们的操作,但这是另一回事了)。这个想法是,如果您运行一个应用程序,则希望它获得执行所需功能所需的一切。如果应用程序的行为不正确,则应由系统操作员(在这种情况下恰好是您)来做一些事情。该发行版的作者可能会提出一些启发式的方法来解决此类问题,但是这将导致更多的问题得以解决。
彼得

1
至于Firefox本身的@kokbira,我建议使用一些插件来减少浏览器以及整个系统的负担。根据我的经验,NoScript和uBlock的起源就足够了。尤其是“默认情况下阻止所有内容”中的NoScript确实令人惊奇-只需启用您正在使用的网站所需的最低限度,您就可以轻松访问8GB RAM系统上的数百个选项卡,并且仍然可以很好地工作。另外,您可以为大多数网站最近使用的所有JS垃圾提供额外的保护,以防止不必要的幻想。
彼得
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.