我以前习惯cgmanager
将进程分开分组cgroups
,并根据需要调整每个组的内存和 CPU 限制。但是,现代systemd
不希望其他进程干扰,cgroups
所以我想我需要配置systemd
来做到这一点。(确切地说,Lennart Poettering(systemd 的作者)是这样认为的。
我想例如定义以下内容:
- 指定组
desktop
并设置最低限度为该组保留的 RAM 为 1 GB,并自动将我的窗口管理器 (marco
) 和面板进程 (mate-panel
) 移动到其中。 - 指定组
browsers
并设置最大限度该组的 RAM 为 20 GB,并自动将所有 Firefox、Chrome 和 Opera 进程移动到该组。 - 限制应该是针对每个用户的:当多个桌面会话正在运行时(通过“切换帐户”操作启动而不注销之前的帐户),每个会话都应该有自己的 cgroup,并具有上述限制。
重要的是,我希望这些进程在执行/usr/bin/marco
或时都能进入正确的组/opt/google/chrome/google-chrome
。也就是说,即使包装器(systemd-run
例如不是简而言之,任何进程都不应被允许逃脱 cgroup 的控制。
用cgmanager
这个真的很简单。你只需创建一个配置文件,一切都设置好了,而且运行得很好。但是,我一直在寻找文档,却不知道如何单独做同样的事情systemd
。