Ubuntu – Getting the alternative to the 200-Line Linux Kernel patch to work


Apparently, there is a comparable alternative to the 200-line kernel patch
that involves no kernel upgrade.

It is presented here and discussed here.

However, I am not sure if webupd8's solution (under the
section "Use it in Ubuntu") on Ubuntu actually works or not. In particular, one
commenter on ./ is saying he's getting an error message. Could anyone
post the "correct" method that actually works?

Suggested solution:

Based on the comments I've read so far, the following seems to work.

(1) In /etc/rc.local, add the following lines to above exit 0:

mkdir -p /dev/cgroup/cpu
mount -t cgroup cgroup /dev/cgroup/cpu -o cpu
mkdir -m 0777 /dev/cgroup/cpu/user
echo "/usr/local/sbin/cgroup_clean" > /dev/cgroup/cpu/release_agent

(2) Create a file named /usr/local/sbin/cgroup_clean with the following content:

rmdir /dev/cgroup/cpu/$1

(3) In your ~/.bashrc, add:

if [ "$PS1" ] ; then 
    mkdir -m 0700 /dev/cgroup/cpu/user/$$
    echo $$ > /dev/cgroup/cpu/user/$$/tasks
    echo "1" > /dev/cgroup/cpu/user/$$/notify_on_release

(4) (To make sure the execution bit is on) execute

sudo chmod +x /usr/local/sbin/cgroup_clean /etc/rc.local

(5) Reboot.

Best Answer

The answer above should indeed fix the terminal error message. Gödel, I'm not sure that I understood your point. I'll try to explain the change:

Since the default value of notify_on_release at creation of other cgroups is the current value of their parents notify_on_release setting, setting the value of /dev/cgroup/cpu/user/notify_on_release to 1 would make sure that every child cgroup had notify_on_release enabled and thus the release_agent would be ran. Unfortunately, when the last child cgroup of "user" was removed (by the release_agent), that folder would also be removed, leading to the error messages reported. A simple workaround is to enable notify_on_release for each cgroup individually at creation, keeping the parents setting disabled.

Hope that was easy to follow!

Edit: I'd have posted this as a comment to the actual answer, though it's seems I don't have enough reputation to do so (yet).

Related Question