我想限制所有用户的 Chromium (/bin/chromium-browser) 和 Firefox (/bin/firefox) 的内存使用量。
在搬到 Fedora 之前,我为此使用了 cgroup。但是,我听说在 Fedora 上不推荐使用 cgroup。如何在没有 cgroup 的情况下设置 1GB RAM 的限制?
编辑:我试过用 cgroups 来做。
/etc/cgconfig.conf
group browsers {
memory {
memory.limit_in_bytes = 1024m;
memory.memsw.limit_in_bytes = 1024m;
memory.soft_limit_in_bytes = 1024m;
}
}
Run Code Online (Sandbox Code Playgroud)
/etc/cgrules.conf
*:/bin/chromium-browser memory browsers
Run Code Online (Sandbox Code Playgroud)
但是之后
sudo service cgconfig start
systemctl status cgconfig.service
Run Code Online (Sandbox Code Playgroud)
我正在接收
? cgconfig.service - Control Group configuration service
Loaded: loaded (/usr/lib/systemd/system/cgconfig.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Sun 2018-06-24 13:41:07 CEST; 29min ago
Process: 9239 ExecStart=/usr/sbin/cgconfigparser -l /etc/cgconfig.conf -s 1664 (code=exited, status=87)
Main PID: 9239 (code=exited, status=87)
Jun 24 13:41:07 me systemd[1]: Starting Control Group configuration service...
Jun 24 13:41:07 me cgconfigparser[9239]: /usr/sbin/cgconfigparser; error loading /etc/cgconfig.conf: Cgroup, operation not allowed
Jun 24 13:41:07 me systemd[1]: cgconfig.service: Main process exited, code=exited, status=87/n/a
Jun 24 13:41:07 me systemd[1]: cgconfig.service: Failed with result 'exit-code'.
Jun 24 13:41:07 me systemd[1]: Failed to start Control Group configuration service.
Run Code Online (Sandbox Code Playgroud)
我会对工作 cgroup 或没有 cgroup 的替代方法感到满意。
另一种方法是使用systemd-run和MemoryHigh资源控制,例如
systemd-run --user --no-block -p MemoryHigh=1G firefox
MemoryHigh是 CGroup V2 的一项功能,并未被弃用。如 systemd.resource-control(5) 联机帮助页所述,我们必须让 systemd 使用 CGroup V2。为此,我们必须添加systemd.unified_cgroup_hierarchy=1到GRUB_CMDLINE_LINUX_DEFAULTin/etc/default/grun然后运行update-grub。请注意,此资源控制已损坏,并且在某些版本的 systemd 中不起作用,例如v239(也有解决方法可用)。