资源配额
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