V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
stevenshuang
V2EX  ›  问与答

关于 cgroups 的层级解释

  •  
  •   stevenshuang · 2021-03-07 16:02:57 +08:00 · 1107 次点击
    这是一个创建于 1137 天前的主题,其中的信息可能已经有所发展或是发生改变。

    求教一个问题,在看《 Docker 核心原理解读》这本书的时候,看到 cgroups 的一些知识,自身没有对 cgroups 的研究,遇到梳理不清楚的知识点了,希望大佬们能给点提示,谢谢了。 meituan 这个是美团技术团队的一篇文章,里面写了 每一个 cgroups 子系统只能被 attach 到一个 cpu 层级结构中。 而在我看的那本书里是这样写的 docker 理解起来感觉使冲突了。 或者说在美团的那篇文章里,一个 cpu 层级结构指的是什么?

    13 条回复    2021-03-12 12:14:46 +08:00
    defunct9
        1
    defunct9  
       2021-03-07 20:00:37 +08:00 via iPhone
    不知道问的是啥问题
    feather12315
        2
    feather12315  
       2021-03-07 20:07:15 +08:00 via Android
    cgroups 具有进程管理+资源管理两个功能,其中资源管理有两种版本,只谈第一种。
    cgroup 把进程组织成树状,init 进程是这棵树的 root 节点。
    对每一类资源管理功能,cgroup 都有一个树,比如 io 、cpu 这两个功能是两棵树。树中的每个子树,其子树的根节点是一系列进程能占用的资源总和。
    因为一个进程只能归属到一个树中的节点,也就是只能作为一个子树的根节点,这就是它所说的 attach 到一个 CPU 层级中
    stevenshuang
        3
    stevenshuang  
    OP
       2021-03-07 22:20:22 +08:00
    @feather12315 您好,非常感谢您的回复,我理解您的意思是:attach 到一个 cpu 层级是指的一个进程在一个 cgroup 层级只能与一个 cgroup 关联,资源受到到这个 cgroup 子树的限制。所以就是这里所说的 cpu 层级指的是每个 cgroup 子树。我这样理解对吗?😅
    stevenshuang
        4
    stevenshuang  
    OP
       2021-03-07 22:23:38 +08:00
    @defunct9 您好,我主要想问就是“每以个 cgroups 子系统只能 attach 到一个 cpu 层级结构中”这句话无法理解了。
    defunct9
        6
    defunct9  
       2021-03-07 22:49:30 +08:00 via iPhone
    看英文,中文的翻译总是很让人迷惑
    stevenshuang
        7
    stevenshuang  
    OP
       2021-03-07 23:06:31 +08:00
    @defunct9 感谢,我去看看,好好地理解一下
    feather12315
        8
    feather12315  
       2021-03-07 23:38:14 +08:00 via Android
    @stevenshuang #3 没错
    feather12315
        9
    feather12315  
       2021-03-07 23:39:59 +08:00 via Android
    @stevenshuang #3 不是在一个 cgroup 层级只能与一个 cgroup 关联。
    是在一贯 cgroup 管理的资源树中,只能与一个树中的节点关联。这个节点构成的子树所拥有的资源,就是它享有的资源
    stevenshuang
        10
    stevenshuang  
    OP
       2021-03-07 23:52:42 +08:00
    @feather12315 非常感谢。
    julyclyde
        11
    julyclyde  
       2021-03-08 12:43:31 +08:00
    这个涉及到目录树的规划的问题
    默认情况下在 /sys/fs/cgroups/下边是有一些“按资源分类”的目录(比如 cpu,cpuacct 这个,和 memory 这个),你自己定义的如果属于其中一个,则必然不能属于另一个
    所以如果想综合控制资源分配,应该不建在按资源分类的目录下边,而是自建一个带多种资源控制功能的子目录,类似于 systemd 的目录、kubepods 目录这类
    stevenshuang
        12
    stevenshuang  
    OP
       2021-03-09 11:30:29 +08:00
    @julyclyde 感谢,去看了一下 cgroups 那个目录,简单操作了一下,对 cgroups 建立一个知识结构,非常感谢。
    julyclyde
        13
    julyclyde  
       2021-03-12 12:14:46 +08:00
    @stevenshuang 记得给我点金币哦
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3650 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 00:11 · PVG 08:11 · LAX 17:11 · JFK 20:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.