深入剖析Kubernetes-笔记(1)cgroup
source link: http://www.chenshake.com/in-depth-profiling-kubernetes-notes-1-cgroup/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
以前看书的时候,没有动手的习惯,也经常导致理解的有问题,这次为了深入学习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就无法看到这个进程。
Recommend
-
54
What is Cgroup? Cgroups 是 control groups 的缩写,是 Linux 内核提供的一种可以限制、记录、隔离进程组(process groups)所使用的物理资源(如:cpu,memory,IO 等等)的机制。最初由 google 的工程师提出,后来被整合进 Lin...
-
53
背景 从 Linux 内核 2.6.25 开始,CGroup 支持对进程内存的隔离和限制,这也是 Docker 等容器技术的底层支撑。 使用 CGroup 有如下好处: 在共享的机器上,进程相互隔离,互不影响,对其它进程是种保护...
-
25
戳蓝字「TopCoder 」关注我们哦!
-
25
CGroup 全称 Control Group 中文意思为 控制组 ,用于控制(限制)进程对系统各种资源的使用,比如 CPU 、 内存 、 网络 和 磁盘I/O...
-
18
前面我们介绍了 CGroup 的使用与基本概念,接下来将通过分析源码(本文使用的 Linux2.6.25 版本)来介绍 CGroup 的实现原理。在分析源码前,我们先介绍几个重要的数据结构,因为 CGroup 就是通...
-
10
K8S 问题排查:cgroup 内存泄露问题 2020-10-22...
-
0
本文来自对极客时间《深入剖析kubernetes》的学习,作者本身对k8s 有一定的基础,但认为同样一个事情 听听别人 如何理解、表述 是很有裨益的,尤其是作者 还是k8s 领域的大牛。 作者在开篇中提到的几个问题 ,也是笔者一直的疑惑 容器技术纷...
-
6
什么是 cgroupCgroup 是一个 Linux 内核特性,对一组进程的资源使用(CPU、...
-
3
Kubernetes 1.25: cgroup v2 graduates to GAWednesday, August 31, 2022Authors:: David Porter (Google), Mrunal Patel (Red Hat)Kubernetes 1.25 brings cgroup v2 to GA (general availability), lett...
-
1
Docker & Kubernetes 背景传统 Paas 项目如 Cloud Foundry 最...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK