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