Cgroups - howto

From Skytech
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.


Howto - cgroups

This is only for debian wheezy

Prereq

apt-get install cgroup-bin 

Enable cgroups memory configuration

This is disabled by default in wheezy (installed though), so activate via:

vim /etc/default/grub
# Add cgroup_enable=memory to GRUB_CMDLINE_KERNEL:
GRUB_CMDLINE_LINUX="cgroup_enable=memory"
update-grub2

Mount cgroups

Add to /etc/fstab

cgroup  /sys/fs/cgroup  cgroup  defaults  0   0

Create cgroup owner(s)

sudo cgcreate -a limiter -g cpu:limiter
  • Adding ressources to that user. A CPU is divided into 1024 slices, so assigning 100 for a user would equal ~10%.
# About 10 % cpu
echo 100 > /cgroup/cpu/$USER/cpu.shares

# 10 Mb
echo 10000000 > /cgroup/memory/$USER/memory.limit_in_bytes

# -g specifies the control group to run the process in
# Limit cpu
cgexec -g cpu:$USER command <options> &

# Limit cpu and memory
cgexec -g memory,cpu:$USER command <options> &

If the above works fine, cgroups is setup successfully.

Setting up configurations

Edit /etc/cgconfig.conf, add your cgroups users

group $USER {
# Specify which users can admin (set limits) the group
perm {    
    admin {
        uid = $USER;
    }
# Specify which users can add tasks to this group
    task {
        uid = $USER;
    }
}
# Set the cpu and memory limits for this group
cpu {
    cpu.shares = 100;
    }
memory {
    memory.limit_in_bytes = 10000000;
    }
}