- Lab
- A Cloud Guru
Restrict System Resource Usage with cgroups
The aim of this lab is to restrict system resource usage by utilizing cgroups. You need to limit the sum total usage of resources of containers to exactly 1 CPU. You also need to limit the sum total usage of resources of containers to 50% RAM. These limitations need to be imposed by creating a cgroup.
Path Info
Table of Contents
-
Challenge
Create my_limits.slice in /etc/systemd/system/ and Set Resource Limits CPU on 50% Compute Capacity and RAM to 500M
vim /etc/systemd/system/my_limits.slice
Description=my slice Before=slices.target [Slice] CPUAccounting=true CPUQuota=50% MemoryAccounting=true MemoryLimit=500M
ESC :wq ENTER
See more info at: http://man7.org/linux/man-pages/man5/systemd.resource-control.5.html
-
Challenge
Reload the Daemon and Run Two Python Containers for Testing with --cgroup-parent=my_limits.slice Parameter
sudo systemctl daemon-reload
This is when you will need to log into two extra terminals, so that you have three total. Two will be for interacting with two python containers, and one will be for monitoring the system resource usage.
In Terminal 1
[cloud_user@server1 ]$ sudo docker run -rm -it --cgroup-parent=my_limits.slice docker.io/python
In Terminal 2
[cloud_user@server2 ]$ sudo docker run --rm -it --cgroup-parent=my_limits.slice docker.io/python
In Terminal 3
[cloud_user@server3 ]$ htop
-
Challenge
Run a Stress Test in All of the Containers
In each of the two python containers run this code:
import threading def test(): while True: 1000*1000 threading.Thread(target=test).start() threading.Thread(target=test).start() threading.Thread(target=test).start() threading.Thread(target=test).start() threading.Thread(target=test).start()
Monitor the results in Terminal 3, and you will see that the sum total resource usage of the containers will not exceed the given limits.
What's a lab?
Hands-on Labs are real environments created by industry experts to help you learn. These environments help you gain knowledge and experience, practice without compromising your system, test without risk, destroy without fear, and let you learn from your mistakes. Hands-on Labs: practice your skills before delivering in the real world.
Provided environment for hands-on practice
We will provide the credentials and environment necessary for you to practice right within your browser.
Guided walkthrough
Follow along with the author’s guided walkthrough and build something new in your provided environment!
Did you know?
On average, you retain 75% more of your learning if you get time for practice.