先别看这个了有点毛病
在 Linux 中,Cgroups 给用户暴露出来的操作接口是文件系统,即它以文件和目录的方式组织在操作系统的 /sys/fs/cgroup 路径下。在 Ubuntu 16.04 机器里,可以用 mount 指令把它们展示出来,这条命令是:
mount -t cgroup
查看cpu资源被限制的方式
ls /sys/fs/cgroup/cpu
在对应的子系统下面创建一个目录
cd /sys/fs/cgroup/cpu
mkdir xueqing_cgroup_try
ls xueqing_cgroup_try
在后台执行脚本
while : ; do : ; done &
它执行了一个死循环,可以把计算机的 CPU 吃到 100%,根据它的输出,我们可以看到这个脚本在后台运行的进程号(PID)是 9428
用 top 指令来确认一下 CPU 有没有被打满
top
查看 container 目录下的文件,container 控制组里的 CPU quota 有没有限制,CPU period有没有限制
cat cpu.cfs_quota_us
看到 container 控制组里的 CPU quota 还没有任何限制(即:-1)
cat cpu.cfs_period_us
CPU period 是默认的 100 ms(100000 us)
再跑一遍死循环
向 container 组里的 cfs_quota 文件写入 20 ms(20000 us),意味着在每 100 ms 的时间里,被该控制组限制的进程只能使用 20 ms 的 CPU 时间,也就是说这个进程只能使用到 20% 的 CPU 带宽。
echo 20000 >cpu.cfs_quota_us