• CentOS 7 Systemd Cgroup 层级

    • Systemd单元类型
    • 默认slice类型
    • systemd-cgls
    • Reference List

Cgroup控制组可以进行嵌套,但是为了能够更加规范的去组织.

Systemd推出了一个规范, 文件系统路径: /sys/fs/cgroup/systemd

Systemd单元类型

Systemd的单元类型(System Unit Type), "单元"的概念对应cgroup里层级, 但是按照其划分逻辑上不同分成下面三种:

Unit Type Description
Service systemd 读取unit配置文件一起绑定启动/停止的一组进程. 使用${name}.service命名方式.
Scope 任意进程通过fork()调用,并在运行时注册到systemd. 比如用户Session,容器,虚拟机通常是Scope类型.使用${name}.scope命名方式.
Slice 盛放Scope类型和Service类型的盒子,不包含具体进程,具体进程都在其下面的Scope和Service中.命名方式为${name}.slice.
Slice嵌套 Slice类型也可以嵌套, 使用-作为路径分隔符. 比如parent-0.slice的父级对象是parent.slice

默认slice类型

Slice一般是由系统管理员创建, 当然也可以由程序动态生成.

系统默认也内置了一些Slice:

  • .slice — the root slice;
  • system.slice — the default place for all system services;
  • user.slice — the default place for all user sessions;
  • machine.slice — the default place for all virtual machines and Linux containers.

systemd-cgls

systemd-cgls命令可以较友好的方式展示本机的cgroup组织结构.

[root@node1 ~]# systemd-cgls
├─1 /usr/lib/systemd/systemd --switched-root --system --deserialize 22  # .slice - 根slice
├─kubepods  # kubernetes自定义层级划分, 不存在systemd的单元类型
│ ├─besteffort
│ │ ├─pod386ca65c-99ce-46c4-90aa-84f2f3631438
│ │ │ ├─75c00b62936300d6c2d744cea187abfcc531630f3ae038d5226bc34052cce08e
│ │ │ │ ├─ 7037 /bin/sh
│ │ │ │ ├─25280 ./kagent
│ │ │ │ ├─25282 nginx: master process nginx -g daemon off
│ │ │ │ └─25293 nginx: worker proces
│ │ │ └─7c9442d204f9deb5ff2b27891ccc979de650e433b710867c070a4b274a69e5b9
│ │ │   └─22623 /pause
├─user.slice   # 用户slice
│ ├─user-0.slice # 用户子slice, 父亲的名字叫user, 孩子的名字叫user-0
│ │ ├─session-5989.scope
│ │ │ ├─26572 sshd: root@notty
│ │ ├─session-5988.scope
│ │ │ ├─ 8042 systemd-cgls
│ └─user-42.slice
│   └─session-c1.scope  # slice下scope, 运行时注册入systemd
│     ├─1906 gdm-session-worker [pam/gdm-launch-environment]
│     ├─2026 /usr/libexec/gnome-session-binary --autostart /usr/share/gdm/greeter/autostart
│     ├─2129 dbus-launch --exit-with-session /usr/libexec/gnome-session-binary --autostart /usr/share/gdm/greeter/autostart
└─system.slice├─docker.service  # slice下的service │ └─21237 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock # service下的进程├─kubelet.service│ └─8259 /usr/local/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --├─containerd.service│ ├─10815 /usr/bin/containerd
│     ├─3097 /usr/libexec/gsd-screensaver-proxy
│     ├─3100 /usr/libexec/gsd-sharing
└─system.slice├─docker.service│ └─21237 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock├─kubelet.service│ └─8259 /usr/local/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --├─containerd.service  # containerd.service│ ├─10815 /usr/bin/containerd   │ ├─21658 /usr/bin/containerd-shim-runc-v2 -namespace moby -id cd4f5f588b0d70a63b9945309135a372f4b5ae94af4dadbd2bf794eb94d24225 -address / # 每个容器进程, 模式是"PID: 启动命令"│ ├─21694 /usr/bin/containerd-shim-runc-v2 -namespace moby -id fef8e0c5e2d745dd736f788aba0170bb85cc0e40e293331b194d60599f7d028f -address /├─colord.service│ └─3142 /usr/libexec/colord

那以contained.service为例子看下其文件树结构:

[root@node1 ~]# ll /sys/fs/cgroup/systemd/system.slice/containerd.service/
-rw-r--r-- 1 root root 0 9月  30 18:13 cgroup.clone_children
--w--w--w- 1 root root 0 9月  30 18:13 cgroup.event_control
-rw-r--r-- 1 root root 0 9月  30 18:13 cgroup.procs
-rw-r--r-- 1 root root 0 9月  30 18:13 notify_on_release
-rw-r--r-- 1 root root 0 9月  30 18:13 tasks

Reference List

  1. Default Cgroup Hierarchies

Linux Cgroup 系列:CentOS 7 Systemd Cgroup 层级相关推荐

  1. 深入理解 Linux Cgroup 系列(二):玩转 CPU

    原文链接:深入理解 Linux Cgroup 系列(二):玩转 CPU 上篇文章主要介绍了 cgroup 的一些基本概念,包括其在 CentOS 系统中的默认设置和控制工具,并以 CPU 为例阐述 c ...

  2. linux cgoup内存限制,Linux Cgroup系列(05):限制cgroup的CPU使用(subsystem之cpu)

    在cgroup里面,跟CPU相关的子系统有cpusets.cpuacct和cpu. 其中cpuset主要用于设置CPU的亲和性,可以限制cgroup中的进程只能在指定的CPU上运行,或者不能在指定的C ...

  3. linux cgroup限制cpu,Linux Cgroup系列(05):限制cgroup的CPU使用(subsystem之cpu)

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 描述 在cgroup里面,跟CPU相关的子系统有cpusets.cpuacct和cpu. 其中cpuset主要用于设置C ...

  4. cgroup driver: cgroupfs还是systemd

    一.什么是cgroup Cgroup 是一个 Linux 内核特性,对一组进程的资源使用(CPU.内存.磁盘 I/O 和网络等)进行限制.审计和隔离. cgroups(Control Groups) ...

  5. k8s创建pod资源失败OCI runtime create failed systemd cgroup flag passed, but systemd support for managing c

    1. 日志 # tail -f kube-kubelet/kubelet.stdout.log E0429 10:15:27.063665 66707 remote_runtime.go:105] R ...

  6. Linux systemctl 详解自定义 systemd unit

    Linux systemctl 详解&自定义 systemd unit systemctl 序 大家都知道,我们安装了很多服务之后,使用 systemctl 来管理这些服务,比如开启.重启.关 ...

  7. 【CGroup原理篇】3. CGroup使用指南

    写在前面 这里先从整体上概述cgroup的创建,挂载,参数配置和卸载,后面的章节中会一一介绍每个子系统的详细使用方法和使用案例. 一.使用Linux命令管理CGroup 1.1挂载cgroup临时文件 ...

  8. Linux Rootkit 系列三:实例详解 Rootkit 必备的基本功能

    本文所需的完整代码位于笔者的代码仓库:https://github.com/NoviceLive/research-rootkit. 测试建议: 不要在物理机测试!不要在物理机测试! 不要在物理机测试 ...

  9. Linux 实操———CentOS 6 安装配置 Oracle JDK 1.8

    引言 本篇博客也属于Linux进阶系列,主要讲解如何在CentOS 6 下安装并配置 JDK 8.由于通过 yum 搜索的结果都是 openjdk,而目前企业中还是以 Oracle jdk 为主,因此 ...

最新文章

  1. iOS开发多线程篇—线程安全
  2. 编程之美-找到符合条件的整数
  3. MySQL多表与分组练习题及答案
  4. [html] 写一个水平竖直居中的弹窗,带遮罩层的布局
  5. 为什么openstack要用rabbitmq这类消息中间件来进行RPC这类的操作呢,直接rpc不行吗?
  6. Leetcode 110.平衡二叉树
  7. linux如何安装github下载的东西,Linux如何安装使用GitHub
  8. 对抗神经网络(GAN)
  9. SQL语句:联合查询
  10. Pyhton 兔子繁衍问题(后有递归求法)(设有一对新生的兔子从第4个月开始他们每个月月初都生一对新兔子, 新生的兔子从第4个月开始又每个月月初生一对兔子,求n个月后兔子的总对数)
  11. coron 小娜_Win10小娜近乎报废!教你卸载毫无用处的Cortana
  12. 利用python爬取王者荣耀皮肤壁纸
  13. React 入门教程【官网文档中文版】
  14. 使用PS为Unity游戏创建简单的游戏素材实例
  15. 六种常见的「用户行为」分析方法
  16. 铁轨(Rails) Uva514
  17. ichunqiu 新春公益赛
  18. Linux下电骡aMule Kademlia网络构建分析2
  19. 云渲染技术在虚拟仿真应急培训中的应用
  20. 学习HTML5不可错过的12家国外网站

热门文章

  1. 老板无偿征用你的朋友圈,你愿意吗?
  2. 计算机能直接识别的算法表示形式,几种常用的图像置乱算法:图像识别算法
  3. 行驶证识别/行驶证ocr识别了解详细信息
  4. socketio单聊,群聊
  5. IT行业发展前景分析
  6. AndroidStudio界面跳转
  7. 第一章、Ansible的详细介绍与安装
  8. Python.习题五 列表与元组(下)
  9. 【转】十大智能家居系统解决方案
  10. 测试 软通动力软件测试机试_软通动力软件测试笔试题