内容简介
本部分介绍与cgroups有关的内容。
cgroups – control groups
它是Linux内核的一个特性,用于限制、管理进程使用的资源。
与nice(1)及/etc/security/limits.conf相比,cgroups更加灵活,它可以管理一组进程。
简单示例
在Linux中,有些应用程序十分消耗内存。比如火狐浏览器就是一个“内存大户”,还有Eclipse开发工具。
我们这里演示如何如何限制Eclipse使用的内存:
#!/bin/sh # 安装 apt-get install cgroup-tools # 配置 cgcreate -g memory:eclipse-demo echo 1G > /sys/fs/cgroup/memory/eclipse-demo/memory.limit_in_bytes cgexec -g memory:eclipse-demo /path/to/eclipse # 验证
多种使用方式
由非常多的cgroups配置管理工具,这里只简单介绍几种:
(2)通过systemd管理(推荐)。
本文只介绍这两种方式。
通过命令行
Setting Up Linux cgroups – Control Groups
How to Limit CPU Usage of a Process on Linux
Limit memory for browser on Fedora
通过systemd服务
How to manage processes with cgroup on Systemd
Running Firefox in a cgroup (using systemd)
附加说明
#1 如果应用程序使用的内存达到限制后,会发生什么?
-「What’s the Linux kernel’s behaviour when processes in a cgroup hit their memory limit?」
在默认情况下,由OOM监管cgroups。在启用OOM时,如果内存达到限制,进程会被OOM Killer立即结束。在禁用OOM时,如果内存达到限制,进程会被暂停,直到释放出新空间(但是实际情况是Eclipse一直挂在那里没有反应,所以最后我还是决定默默地启动OOM功能)。
如果要禁用OOM Killer可以执行echo 1 > /cgroup/memory/<your-group-name>/memory.oom_control(没错1表示禁用,而0表示启用)
参考文献
archlink/cgroups
Limit memory usage for a single Linux process
Trying to use cgroups in debian wheezy and no daemons