Linux Cgroup 系列:CentOS 7 Systemd Cgroup 层级
- 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
- Default Cgroup Hierarchies
Linux Cgroup 系列:CentOS 7 Systemd Cgroup 层级相关推荐
- 深入理解 Linux Cgroup 系列(二):玩转 CPU
原文链接:深入理解 Linux Cgroup 系列(二):玩转 CPU 上篇文章主要介绍了 cgroup 的一些基本概念,包括其在 CentOS 系统中的默认设置和控制工具,并以 CPU 为例阐述 c ...
- linux cgoup内存限制,Linux Cgroup系列(05):限制cgroup的CPU使用(subsystem之cpu)
在cgroup里面,跟CPU相关的子系统有cpusets.cpuacct和cpu. 其中cpuset主要用于设置CPU的亲和性,可以限制cgroup中的进程只能在指定的CPU上运行,或者不能在指定的C ...
- linux cgroup限制cpu,Linux Cgroup系列(05):限制cgroup的CPU使用(subsystem之cpu)
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 描述 在cgroup里面,跟CPU相关的子系统有cpusets.cpuacct和cpu. 其中cpuset主要用于设置C ...
- cgroup driver: cgroupfs还是systemd
一.什么是cgroup Cgroup 是一个 Linux 内核特性,对一组进程的资源使用(CPU.内存.磁盘 I/O 和网络等)进行限制.审计和隔离. cgroups(Control Groups) ...
- 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 ...
- Linux systemctl 详解自定义 systemd unit
Linux systemctl 详解&自定义 systemd unit systemctl 序 大家都知道,我们安装了很多服务之后,使用 systemctl 来管理这些服务,比如开启.重启.关 ...
- 【CGroup原理篇】3. CGroup使用指南
写在前面 这里先从整体上概述cgroup的创建,挂载,参数配置和卸载,后面的章节中会一一介绍每个子系统的详细使用方法和使用案例. 一.使用Linux命令管理CGroup 1.1挂载cgroup临时文件 ...
- Linux Rootkit 系列三:实例详解 Rootkit 必备的基本功能
本文所需的完整代码位于笔者的代码仓库:https://github.com/NoviceLive/research-rootkit. 测试建议: 不要在物理机测试!不要在物理机测试! 不要在物理机测试 ...
- Linux 实操———CentOS 6 安装配置 Oracle JDK 1.8
引言 本篇博客也属于Linux进阶系列,主要讲解如何在CentOS 6 下安装并配置 JDK 8.由于通过 yum 搜索的结果都是 openjdk,而目前企业中还是以 Oracle jdk 为主,因此 ...
最新文章
- iOS开发多线程篇—线程安全
- 编程之美-找到符合条件的整数
- MySQL多表与分组练习题及答案
- [html] 写一个水平竖直居中的弹窗,带遮罩层的布局
- 为什么openstack要用rabbitmq这类消息中间件来进行RPC这类的操作呢,直接rpc不行吗?
- Leetcode 110.平衡二叉树
- linux如何安装github下载的东西,Linux如何安装使用GitHub
- 对抗神经网络(GAN)
- SQL语句:联合查询
- Pyhton 兔子繁衍问题(后有递归求法)(设有一对新生的兔子从第4个月开始他们每个月月初都生一对新兔子, 新生的兔子从第4个月开始又每个月月初生一对兔子,求n个月后兔子的总对数)
- coron 小娜_Win10小娜近乎报废!教你卸载毫无用处的Cortana
- 利用python爬取王者荣耀皮肤壁纸
- React 入门教程【官网文档中文版】
- 使用PS为Unity游戏创建简单的游戏素材实例
- 六种常见的「用户行为」分析方法
- 铁轨(Rails) Uva514
- ichunqiu 新春公益赛
- Linux下电骡aMule Kademlia网络构建分析2
- 云渲染技术在虚拟仿真应急培训中的应用
- 学习HTML5不可错过的12家国外网站