May 062021
 

以前看书的时候,没有动手的习惯,也经常导致理解的有问题,这次为了深入学习kubernetes,把书上原理的东西,都动手验证一遍。

我是在CentOS 7.6,安装了Docker的最新版本来验证这本书里的内容。

 mount -t cgroup
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_prio,net_cls)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)

cpu限制的目录

# ls /sys/fs/cgroup/cpu
cgroup.clone_children  container             cpu.cfs_period_us  cpu.shares         release_agent
cgroup.event_control   cpuacct.stat          cpu.cfs_quota_us   cpu.stat           system.slice
cgroup.procs           cpuacct.usage         cpu.rt_period_us   docker             tasks
cgroup.sane_behavior   cpuacct.usage_percpu  cpu.rt_runtime_us  notify_on_release  user.slice

下面就是操作的例子

cd /sys/fs/cgroup/cpu
mkdir container
ls container/

刚刚创建完的目录下,就已经一堆文件。运行一行代码,这是一个死循环,cpu占有 100%,看看如何通过cgoup来限制这种cpu占有。

# while : ; do : ; done &
[1] 25737

第一行代码是一个死循环,输出25737,是进程id号。通过top,你可以看到这个进程的cpu占用情况

可以很清楚看到 25737进程,已经95%。

查看当前的设置

# cat /sys/fs/cgroup/cpu/container/cpu.cfs_quota_us 
-1
[root@devops ~]# cat /sys/fs/cgroup/cpu/container/cpu.cfs_period_us
100000

修改参数,就可以实现对cpu的控制

echo 2000 > /sys/fs/cgroup/cpu/container/cpu.cfs_quota_us 

把限制的进程id,写入tasks里,这里就是:25737

echo 25737 > /sys/fs/cgroup/cpu/container/tasks 

这时候,你再使用top命令查看cpu占用情况。

看看cpu的限制的效果。

人生第一次做CPU限制,顺利完成。

收尾工程,杀死进程

kill 9 25737

这样你用top就无法看到这个进程。

 Leave a Reply

(required)

(required)

This site uses Akismet to reduce spam. Learn how your comment data is processed.