您现在的位置是:热点 >>正文
5分钟了解Docker原理之二,最简单的Cgroups介绍!
热点60190674人已围观
简介...
本文转载自微信公众号「小姐姐味道」,作者小姐姐养的狗 。转载本文请联系小姐姐味道公众号。
很多接触Docker的同学,都接触过cgroup这个名词。它是Linux上的一项古老的技术,用来实现资源限制,比如CPU、内存等。但有很多同学反映,这项技术有点晦涩,不太好懂。
这就是本篇文章存在的目的,会让你以最简单直观的方式,了解cgroups到底是个什么东西。
cgroups,是实现docker功能的重要底层设施。如上图,使用cgroups,能够把操作系统的各项资源变成池子,然后通过配置获取相应的资源。
那它是怎么实现的呢?
要注意cgroups这个名词,它有两个特性。首先是c,就是Control的意思,是个动词;第二部分,就是groups,证明它是个组。
1. 动词的目标
control,用来限制什么呢?除了CPU、内存,还有啥?
使用moun5分t命令,查看当前系统支持的限制目标,它有个专用的名词,叫做子系统。
# mount | grep cgroup tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755) 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 o钟了n /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio) cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices) cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu) cgroup on /sys/fs/cgroup/n解Det_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_prio,net_cls) cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset) cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory) cgroup on /sys/fs/cgroup/freezer typeoc cgroup (rw,nosuid,nodev,noexec,relatime,freezer) cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids) cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb) cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodevke,noexec,relatime,perf_event)
不同的系统版本,会有一些细微的区别,大体上,子系统的分类包含下面这些:
cpu,cpuacct cpu主要限制进程的 cpu 使用率,cpuacct可以统计 cgroups 中的进程的 cpu 使用报告 cpuset 可以为 cgroups 中的进程分配单独的 cpu 节点或者内存节点,就像Numa做的那些事情一样 blkio 可以限制进程的块设备 io,比如物理设备(磁盘,固态硬盘,USB 等等) devices 控制进程能够访问某些设备 net_cls 标记 cgroups 中进程的网络数据包,然后可以使用 tc 模块(traffic control)对数据包进行控制 net_prio — 这个子系统用来设计网络流量的优先级 freezer 可以挂起或者恢复 cgroups 中的进程。 ns 可以使不同 cgroups 下面的进程使用不同的 namesr原pace hugetlb 主要针对于HugeTLB系统进行限制,这是一个大页文件系统。
内容很多,但我们平常关注的大多数就是内存和CPU,这些繁杂的细节,不影响我们理解它的设计原则。
下面就以CPU为例,来看一下子系统的实际表现。
2. CPU使用限制的例子
首先,我们进入cpu子系统目录。
cd /sys/fs/cgroup/cpu
然后,创建一个组名为xjjdog的cgroups,这个名字,就叫做控制组。
mkdir xjjdog
这时候,神奇的事情发生了。我们使用ll命令,查看xjjdog目录中的内容,发现系统已经为我们默认生成了一堆文件。
# ll xjjdog/ total 0 -rw-r--r-- 1 root root 0&nb理之sp;Jan 28 21:09 cgroup.clone_children --w--w--w- 1 root root 0 Jan 28 21:09 cgroup.event_control -rw-r--r-- 1 root root 0 Jan 28 21:09 cgroup.procs -r--r--r-- 1 root root 0 Jan 28 21:09 cpuacct.stat -rw-r--r-- 1 roo二,t root 0 Jan 28 21:09 cpuacct.usage -r--r--r-- 1 root root 0 Jan 28 21:09 cpuacct.usage_percpu -rw-r--r-- 1 root root 0 Jan 28 21:09 cpu.cfs_period_us -rw-r--r-- 1 root root 0 Jan 28 21:09 cpu.cfs_quota_us -rw最简-r--r-- 1 root root 0 Jan 28 21:09 cpu.rt_period_us -rw-r--r-- 1 root root 0 Jan 28 21:09 cpu.rt_runtime_us -rw-r--r-- 1 root root 0 Jan 28 21:09 cpu.shares -r--r--r-- 1 root root 0 Jan 28 21:09 cpu.sta单的t -rw-r--r-- 1 root root 0 Jan 28 21:09 notify_on_release -rw-r--r-- 1 root root 0 Jan 28 21:09 tasks
通过控制这些文件里面的数值,就可以对资源进行限制。比如cpu.cfs_quota_us文件,如果我们往里写入100000(十万),那么就证明使用了xjjdog的cgroup,最多能够使用1核的CPU。写入20000,证明最多使用使用1/5核的CPU。
这是因为,cpu.cfs_period_us这个配置文件,默认把1核cpu分成了10万份。
那我们就写入20000Cg试一下。
sudo echo 20000 > xjjdog/cpu.cfs_quota_us
我们把当前shell的pid,加入被受控进程列表。
echo $$ > xjjdog/tasks
执行完毕之后,再启动一个死循环。
while true;do ;done;
重新打开一个shell,使用top观察CPU的使用率。可以发现,我们的死循环,最多只使用了20%的CPU。us保持在20%以下,且不间断的在各个cpu之间切换。
依次试验以下的命令,可以发现CPU的使用,会逐步增加,大体上和我们的限额是相等的。
sudo echo 40000 > xjjdog/cpu.cfs_quota_uros sudo echo 60000 > xjjdog/cpu.cfs_quota_us sudo echo 100000 > xjjdog/cpu.cfs_quota_us
其他的资源限制,都是类似的思路。那么最重要的工作,就是需要知道cpu.cfs_quota_us这样的字眼,代表的是什么意思,这些对着手册来看是很容易掌握的。比如quota是配额的意思,很明显就是限制资源的使用。
如上图,子系统可以控制多个tasks,把它纳入到控制组之内。我们上篇文章讲到,可以将bash进程,作为docker系统的1号进程,那么同样的,这个1号进程的子进程,都会共享同样的限额配置。
3. group的意思
浅显的来讲,group就是指的对各种资源up进行分组。不同名字的资源,有不同的隔离配置。但它有更多的特性。
比较重要的,是它的层级关系(hierarchy)。这个也比较好理解,它主要是为了简化配置而存在的。
比如我上面的xjjdog目录,对cpu的限制限制在0.5核。这时候,我想要有另外一个应用,对cpu的使用限制在0.5核,同时限制内存1gb,那么就可以直接在xjjdog目录下创建xjjdog0目录,在xjjdog0目录下只配置内存方面的就可以了。
另外,如果你在外层的cpu限额限制了2core,然后在继承的目录里限制了1/5核,那它就只能使用操作系统的2/5核。这也是继承的一个特性。
End
cgroups是2006年诞生的,发起人是Google 的工程师(Rohit Seth 和 Paul Menage )。在 2008 年成功合入 Linux 2.6.24 版本中,可以说这项技术是很古老的。cgroups目前已经成为 sys介stemd、Docker、Linux Containers(LXC) 等技术的基础。
像Windows平台的WSL,是没有cgroups功能的,使用mount命令可以验证,这证明了它是不能把docker跑起来的,因为缺乏基础。不过,WSL2已经可以了。
有些同学对docker目前的发展现状有些担心,但当你熟悉了这几个常见的底层原理,读完容器的标准之后,就会发现,上层的实现无论是换成docker也好,换成containerd也罢,都一样!
作者简介:小姐姐味道 (xjjdog),一个不允许程序员走弯路的公众号。聚焦基础架构和Linux。十年架构,日百亿流量,与你探讨高并发世界,给你不一样的味道。
Tags:
上一篇:标签: 荣耀 泡泡玛特 AI手机
下一篇:九大数据分析方法之:标签分析法
相关文章
AI 编程工具被指 “水土不服”,企业需重新审视软件开发流程
热点在软件开发领域,生成式 AI 的应用起初被寄予厚望,但近日发布的一份来自贝恩公司的技术报告显示,这一领域的生产力提升效果并不显著。报告指出,尽管有三分之二的软件公司已经推出了生成式 AI 工具,但开发...
【热点】
阅读更多云安全日报210617:思科小型企业220系列交换机发现劫持用户会话漏洞,需要尽快升级
热点6月16日,思科发布了安全公告,思科小型企业220系列交换机发现劫持用户会话等重要漏洞,建议尽快升级。以下是漏洞详情: 漏洞详情 来源:https://tools.cisco.com/security...
【热点】
阅读更多氧气罐能上飞机么
热点氧气罐能带上飞机吗?求解答_问答库问答氧气罐不能带上飞机的,因为属于易爆物品。但是丽江的超市和小卖铺都有氧气罐卖,玉龙雪山从山下到山上一路都有卖的,所以不需要提前买好。建议在丽江。氧气罐可否上飞机?飞...
【热点】
阅读更多
热门文章
最新文章
友情链接
- 标签: 康师傅
- https://www.otakuninjahero.com/en/search/谷歌收录霸屏【tg:seogoogle987】,9fs
- https://www.signingsavvy.com/sentence/谷歌收录霸屏【tg:seogoogle987】,qa7
- https://www.military-history.org/?s=谷歌收录霸屏【tg:seogoogle987】,blG
- https://www.luxurysociety.com/en/search?q=谷歌收录霸屏【tg:seogoogle987】,kwx
- https://xn--lgernevedlystskoven-lxb.dk/search/谷歌收录霸屏【tg:seogoogle987】,AVS
- https://www.seforall.org/search?keywords=谷歌收录霸屏【tg:seogoogle987】,B7F
- https://www.mesec.cz/vyhledavani/?qs=谷歌收录霸屏【tg:seogoogle987】,0aj
- https://www.sweat.com/collections/vendors?q=谷歌收录霸屏【tg:seogoogle987】,DAL
- https://www.urmc.rochester.edu/news/search?q=谷歌收录霸屏【tg:seogoogle987】,6Je
- https://www.ushmm.org/search/results/?ID=8s0587Oi8UTv74zPPM4fuhwjNpe2hsEE&q=谷歌收录霸屏【tg:seogoogle987】,PBZ
- https://www.world-architects.com/en/search?term=谷歌收录霸屏【tg:seogoogle987】,Cm9
- https://www.mynextmove.org/find/search?s=谷歌收录霸屏【tg:seogoogle987】,IKx
- https://www.nuovabai.it/catalogsearch/result/?action=SEARCH&q=谷歌收录霸屏【tg:seogoogle987】,1lK
- https://www.udc.co.uk/index.php?route=product/search&sort=p.price&order=DESC&tag=谷歌收录霸屏【tg:seogoogle987】,jQ8
- https://www.sebson.de/en/search?query=谷歌收录霸屏【tg:seogoogle987】,q18
- https://www.remit.co.jp/ne/?s=谷歌收录霸屏【tg:seogoogle987】,vnq
- https://www.southmeadows.co.uk/2019/07/?s=谷歌收录霸屏【tg:seogoogle987】,BPK
- https://www.nyif.com/catalogsearch/result/?q=谷歌收录霸屏【tg:seogoogle987】,dDE
- https://www.zutari.com/search/谷歌收录霸屏【tg:seogoogle987】,g4o
- https://www.sbaad.no/?s=谷歌收录霸屏【tg:seogoogle987】,5YL
- https://www.routesonline.com/search/?query=谷歌收录霸屏【tg:seogoogle987】,3tr
- https://m.shoppinghow.kakao.com/m/search/q/谷歌收录霸屏【tg:seogoogle987】Qj6
- https://www.goodreads.com/quotes/tag/谷歌收录霸屏【tg:seogoogle987】g0F
- https://www.wheels24.gr/?action=CHECK&s=谷歌收录霸屏【tg:seogoogle987】,WjJ
- https://www.tmtpost.com/search?q=谷歌收录霸屏【tg:seogoogle987】,xYM
- https://search.danawa.com/dsearch.php?query=谷歌收录霸屏【tg:seogoogle987】8nU
- https://www.teamlab.art/?submit=谷歌收录霸屏【tg:seogoogle987】,ONg
- https://www.takachi-enclosure.com/search?eqYB=gnI31Ou&text=谷歌收录霸屏【tg:seogoogle987】,3Zf
- https://www.televes.com/es/catalogsearch/result/?q=谷歌收录霸屏【tg:seogoogle987】,KdR
- https://www.seagrant.wisc.edu/?page=63&s=谷歌收录霸屏【tg:seogoogle987】,xIN
- https://www.mygrandma.com/Items.aspx?search=谷歌收录霸屏【tg:seogoogle987】,Mv1
- https://www.teacherspayteachers.com/Browse/Price-Range/Free/Search:Western International University Physics degree=谷歌收录霸屏【tg:seogoogle987】,07k
- https://www.symatoys.com/search.html?ID=UyMD6aO58bPrJvQAB1I0N69KzJBZeNPC&keyword=谷歌收录霸屏【tg:seogoogle987】,ifD
- https://www.tullygroup.us/?ID=hbkq8jFjrQlVRrwzEmvoUJJAY4e1Lfo5&s=谷歌收录霸屏【tg:seogoogle987】,8pW
- https://www.ons.gov.uk/search?q=谷歌收录霸屏【tg:seogoogle987】,1RZ
- https://www.paulaschoice.hk/zh_hant/catalogsearch/result/?q=谷歌收录霸屏【tg:seogoogle987】,PjI
- https://www.spoiledsweetboutique.com/search/谷歌收录霸屏【tg:seogoogle987】,SfQ
- https://www.olx.ba/pretraga?trazilica=谷歌收录霸屏【tg:seogoogle987】,9Ch
- https://www.temu.com/search_result.html?search_key=谷歌收录霸屏【tg:seogoogle987】xxy
- https://www.roberthalf.com/us/en/jobs/all/谷歌收录霸屏【tg:seogoogle987】8Tb
- https://www.prattlibrary.org/search?q=谷歌收录霸屏【tg:seogoogle987】,whQ
- https://www.londontheatredirect.com/search/谷歌收录霸屏【tg:seogoogle987】,BAd
- https://www.tiktok.com/tag/谷歌收录霸屏【tg:seogoogle987】,Sp8
- https://www.thedp.com/page/search?q=谷歌收录霸屏【tg:seogoogle987】,u3s
- https://www.navymwr.org/search/?query=谷歌收录霸屏【tg:seogoogle987】,kSg
- https://www.remit.co.jp/vi/?s=谷歌收录霸屏【tg:seogoogle987】WZV
- https://www.nbm.org/?action=QUERY&s=谷歌收录霸屏【tg:seogoogle987】,Cy2
- https://www.kelsa.co.uk/catalogsearch/result/index/?T=1686132119291&q=谷歌收录霸屏【tg:seogoogle987】,iBO
- https://www.mi.com/search?keyword=谷歌收录霸屏【tg:seogoogle987】,2dF
- https://www.wilsonart.com/catalogsearch/result/?action=CHECK&q=谷歌收录霸屏【tg:seogoogle987】,aOx