cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,relatime,cpuset) cgroup on /sys/fs/cgroup/cpu type cgroup (rw,relatime,cpu) ... cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,relatime,hugetlb)
如果没有看到以上的目录,这时候需要手动 mount 了
1 2 3 4 5 6 7 8 9
cd /sys/fs mkdir cgroup mount -t tmpfs cgroup_root ./cgroup mkdir cgroup/cpuset mount -t cgroup -ocpuset cpuset ./cgroup/cpuset/ mkdir cgroup/cpu mount -t cgroup -ocpu cpu ./cgroup/cpu/ mkdir cgroup/memory mount -t cgroup -omemory memory ./cgroup/memory/
实践
我们来感性认识下 cgroup 吧,编写一个耗费 CPU 的程序,姑且叫暴走程序(baozou)
1 2 3
count = 0 whileTrue: count = count + 1 - 1
运行该程序,top -p 之,100% CPU使用率
1 2
PID PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 16515 20 0 2336 728 544 R 100.0 0.0 1:27.23 baozou
我想限制暴走程序 CPU 使用该如何做? 我们手动创建一个 cgroup 目录来针对它。
1 2 3 4 5
cd /sys/fs/cgroup/cpu mkdir calm // 名字可自定义 ls /calm // 该目录下自动生产与 CPU 有关的文件 cgroup.clone_children cpu.cfs_period_us cpu.shares notify_on_release cgroup.procs cpu.cfs_quota_us cpu.stat tasks