I was tired of Chrome eating all my laptop resources so I decided to put some limit to it with cgroup.
As I was using Ubuntu 12.04 with support for cgroup, I installed the package cgroup-bin
and add the following group to the file /etc/cgconfig.conf
:
group browsers {
cpu {
# Set the relative share of CPU resources equal to 25%
cpu.shares = "256";
}
memory {
# Allocate at most 1 GB of memory to tasks
memory.limit_in_bytes = "1G";
# Apply a soft limit of 512 MB to tasks
memory.soft_limit_in_bytes = "768M";
}
}
Then I added one new rule to the file /etc/cgrules.conf
to add any new Chrome process launched by my own user (jojeda
) to the cgroup browsers
:
# user:process subsystems group
jojeda:/usr/lib/chromium-browser/chromium-browser cpu,memory browsers
And then I restarted the cgconfig
service:
$ sudo service cgconfig restart
Now all the new chromium
process that I'll launch with my user jojeda
will be under the cgroup browsers
with its memory and cpu limits.
Okay so
cpu.shares
allows you to distribute CPU across multiple cgroups.It does nothing if you have a single cgroup -- just one for chromium.
CPU throttling is necessary for me, and for you too probably.
Otherwise, I get system-wide freezes -- whenever chromium is trying to free up memory? Maybe.
Here's my current setup. Initial results are promising.
See https://github.com/gunar/dotfiles/commit/6acc2a87b10278594db6e72921f33b6495430c40