0%

Introduction to cgroup

cgroup是linux用來限制program使用Computer resource的一種方法
也是Docker的基礎

首先先安裝cgroup

1
2
3
4
5
6
7
8
$ sudo apt install cgroup-bin
```
寫個程式

``` python
count = 0
while True:
count = count + 1

不用看也知道他絕對吃滿cpu resource

所以該怎麼限制,例如只讓他吃20%的CPU

先建立cgroup的群組

1
2
3
4
5
$ cd /sys/fs/cgroup/cpu # 管理CPU資源的地方
$ sudo mkdir calm # 建立一個目錄
$ ls calm # 自動產生和cpu有關的規則
cgroup.clone_children cpuacct.stat cpuacct.usage_percpu cpu.cfs_quota_us cpu.stat tasks
cgroup.procs cpuacct.usage cpu.cfs_period_us cpu.shares notify_on_release

接著把我們程式限制的規則加入群組 以下動作需要root權限,sudo無法執行

1
2
$ echo 20000 > calm/cpu.cfs_quota_us # 預設值是100000,20000正好是20%
$ echo 3255 > calm/tasks # 3255 是程式的 PID

接著我們就能看到程式CPU使用率就只剩20%了

Another method

也可以用自定義規則的方式

1
2
3
4
$ sudo cgcreate -g cpu:calm # 一樣是建立 cpu calm
$ sudo cgset -r cpu.cfs_quota_us=20000 calm # 跟上面差不多
$ sudo cgget calm # 列出calm的所有規則
$ sudo cgdelete calm

如果要執行程式的話

1
$ sudo cgexec -g cpu:calm python busy.py

跟上面有同樣的效果