Skip to content

资源配额

cgroups限制进程的CPU使用时间

实验

在宿主机上创建一个让CPU飙升到100%的进程。

sh
while :; do :; done &

记录PID=pid

sh
top

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 1965 root      25   5  153844   2340    192 R 100.0  0.1   0:50.62 zsh
  666 chrony    20   0  117808   1728   1304 S   0.3  0.0   0:00.13 chronyd
  696 root      20   0  548208  10908   6772 S   0.3  0.3   0:00.31 NetworkManager
    1 root      20   0  128048   6688   4176 S   0.0  0.2   0:01.50 systemd
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.01 kthreadd

限制配额

sh
cd /sys/fs/cgroup/cpu

mkdir cgroups_test

cd cgroups_test

ll

$ cat cpu.cfs_quota_us
-1

$ cat tasks

# 限制配额20%
$ echo 20000 > cpu.cfs_quota_us

# 限制进程
$ echo 1965 > tasks

top

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 1965 root      25   5  153844   2340    192 R  20.3  0.1   4:53.60 zsh
 1066 root      20   0  222740   3704   2812 S   0.3  0.1   0:00.40 rsyslogd
 1896 root      20   0       0      0      0 S   0.3  0.0   0:00.50 kworker/0:1
    1 root      20   0  128048   6688   4176 S   0.0  0.2   0:01.50 systemd
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.01 kthreadd

docker测试

sh
docker run -it  --cpus="0.5" nginx /bin/sh

cd /sys/fs/cgroup/cpu

cat cpu.cfs_quota_us