CCP1 Day7 cgroup

Page content

LAB CCP1 CMP2 - Containers

Task 1

Decided to use own VM instead of ZHAWs Cloudlab. Using same Server I have been using for microk8s. Had to install Docker:

tom@microk8s:~$sudo snap install docker

Task 2

Check cgroups:

tree /sys/fs/cgroup/pids
mount -t cgroup -o cpu none /sys/fs/cgroup/cpu
#can not be mounted at the same time as
mount -t cgroup -o cpu,cpuacct none sys/fs/cgroup/cpu,cpuacct
mount | grep gcroup
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
#To find the cgroup to which a process belongs, run: 
ps -O cgroup

#Or, if you know the PID for the process, run: 
cat /proc/PID/cgroup

Install on Ubuntu

#install (on Ubuntu)
sudo apt install cgroup-tools

hirarchy for cpu and memory

#create hirarchy for cpuset subsystem
mkdir /sys/fs/cgroup/cpu/red
mkdir /sys/fs/cgroup/cpu/blue
mkdir /sys/fs/cgroup/memory/lab1

mount -t cgroup -o cpu red /sys/fs/cgroup/cpu/red
mount -t cgroup -o cpu blue /sys/fs/cgroup/cpu/blue
#don't quite understand why this should be necessary. on my system /sys/fs/cgroup/ was already mounted
# if you have to remount do:
mount -t cgroup -o cpu none /sys/fs/cgroup/cpu
#or 
mount -t cgroup -o cpu,cpuacct none /sys/fs/cgroup/cpu,cpuacct

#low priority group (Ratio 1:10) 10% of a single cpu
echo 10000 > /sys/fs/cgroup/cpu/red/cpu.cfs_quota_us
echo 100000 > /sys/fs/cgroup/cpu/red/cpu.cfs_period_us
#high priority group: allowes 100% of a single cpu 
echo 10000 > /sys/fs/cgroup/cpu,cpuacct/red/cpu.cfs_quota_us
echo 10000 > /sys/fs/cgroup/cpu/blue/cpu.cfs_period_us

###cpu share division percentage
echo 250 > /sys/fs/cgroup/cpu/blue/cpu.shares    #25%
echo 750 > /sys/fs/cgroup/cpu/red/cpu.shares     #75%

### same for memory
echo 1G > /cgroup/memory/lab1/memory.limit_in_bytes

Assign process to cgroup

### write processes PID into cgroup.procs
echo 1288 > /sys/fs/cgroup/cpu/red/cgroup.procs
# !!! you need to add child processes too !!!
ps -aef --forest

verify if process is in cgroup

it was added to cpu/blue

root@cmp2:~# cat /proc/1552/cgroup
12:rdma:/
11:cpuset:/
10:memory:/user.slice/user-1000.slice/session-6.scope
9:cpu,cpuacct:/blue
8:net_cls,net_prio:/
7:freezer:/
6:blkio:/user.slice
5:hugetlb:/
4:pids:/user.slice/user-1000.slice/session-6.scope
3:perf_event:/
2:devices:/user.slice
1:name=systemd:/user.slice/user-1000.slice/session-6.scope
0::/user.slice/user-1000.slice/session-6.scope