Linux内核cgroup使用介绍

2023-10-28

cgroup基本概念

cgroup是什么

cgroups本质上是对任意进程进行分组化管理的Linux内核模块功能。

cgroup解决的问题

Linux系统每个进程都可以自由竞争系统资源,部分项目中,需要保障一些重要进程的资源开销,如内存,cpu等,需要提前规划好。因此linux引入了cgroups来控制进程资源,让进程更可控。

cgroup功能

Resource limitation: 限制资源使用,比如内存使用上限以及文件系统的缓存限制。
Prioritization: 优先级控制,比如:CPU利用和磁盘IO吞吐。
Accounting: 一些审计或一些统计,主要目的是为了计费。
Control: 挂起进程,恢复执行进程。
使​​​用​​​ cgroup,系​​​统​​​管​​​理​​​员​​​可​​​更​​​具​​​体​​​地​​​控​​​制​​​对​​​系​​​统​​​资​​​源​​​的​​​分​​​配​​​、​​​优​​​先​​​顺​​​序​​​、​​​拒​​​绝​​​、​​​管​​​理​​​和​​​监​​​控​​​。​​​可​​​更​​​好​​​地​​​根​​​据​​​任​​​务​​​和​​​用​​​户​​​分​​​配​​​硬​​​件​​​资​​​源​​​,提​​​高​​​总​​​体​​​效​​​率​​​。

cgroup适用的场景

资源预分配,保证重要进程的资源
1、隔离一个进程集合(比如:nginx的所有进程),并限制他们所消费的资源,比如绑定CPU的核。
2、为这组进程分配其足够使用的内存,保障资源
3、为这组进程分配相应的网络带宽和磁盘存储限制
4、限制访问某些设备(通过设置设备的白名单)

cgroup能操控的资源

cgroup结构

cgourp构成
从上到下,分别是hiereachy下有很多cgroup节点,cgroup节点有自己的属性,属性为task和对应的资源组,资源组就是subsystem

cgroup支持的subsystem

目前Linux支持下面12种subsystem
1、cpu :用来限制cgroup的CPU使用率。
2、cpuacct :统计cgroup的CPU的使用率。
3、cpuset:绑定cgroup到指定CPUs和NUMA节点。
4、memory:统计和限制cgroup的内存的使用率,包括process memory, kernel memory, 和swap。
5、devices:限制cgroup创建(mknod)和访问设备的权限。
6、freezer:suspend和restore一个cgroup中的所有进程。
7、net_cls :将一个cgroup中进程创建的所有网络包加上一个classid标记,用于tc和iptables。 只对发出去的网络包生效,对 收到的网络包不起作用。
8、blkio:限制cgroup访问块设备的IO速度。
9、perf_event :对cgroup进行性能监控
10、net_prio:针对每个网络接口设置cgroup的访问优先级。
11、hugetlb :限制cgroup的huge pages的使用量。
12、pids:限制一个cgroup及其子孙cgroup中的总进程数。

可以通过下面的命令查看:
cat /proc/cgroups,结果如下
cgroup支持的资源子系统
不同subsystem的工作方式可能差别较大,有些需要做资源统计,有些需要做资源控制,有些即不统计也不控制,有些subsystem严重依赖继承关系,有些subsystem完全用不到继承关系,而有些对继承关系没有严格要求,对系统性能的影响也不一样,在使用中,根据场景需求,再分析具体要做些什么

对应的资源开关在内核编译配置文件中:
在这里插入图片描述

cgroup基本操作

cgroup文件系统挂载

cgroup相关的所有操作都是基于内核中的cgroup virtual filesystem,使用cgroup很简单,挂载这个文件系统就可以了。一般情况下都是挂载到/sys/fs/cgroup目录下,当然挂载到其它任何目录都没关系。
挂载 cgroup文件系统操作如下:
1、先创建一个空目录,如下,在home目录下创建cgroup子目录
在这里插入图片描述
2、执行挂载命令
centos 7 已经默认挂载在/sys/fs/cgroup中了
在这里插入图片描述

cgroup内容查看

cgroup下面是具体的分组,每个分组的具体内容,进去里面看就可以了
在这里插入图片描述

查看进程的cgroup

在这里插入图片描述
在这里插入图片描述
参考:https://segmentfault.com/a/1190000006917884?utm_source=sf-similar-article

cgroup实例

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux内核cgroup使用介绍 的相关文章

  • Linux 中 m 标志和 o 标志将存储在哪里

    我想知道最近收到的路由器通告的 m 标志和 o 标志的值 从内核源代码中我知道存储了 m 标志和 o 标志 Remember the managed otherconf flags from most recently received R
  • 如何使用 JSch 将多行命令输出存储到变量中

    所以 我有一段很好的代码 我很难理解 它允许我向我的服务器发送命令 并获得一行响应 该代码有效 但我想从服务器返回多行 主要类是 JSch jSch new JSch MyUserInfo ui new MyUserInfo String
  • ALSA:snd_pcm_writei 调用时缓冲区不足

    当运行我最近从灰烬中带回来的旧程序时 我遇到了缓冲区不足的情况 该程序将原始声音文件完全加载到内存中 2100 字节长 525 帧 并准备 ALSA 进行输出 44 1khz 2 通道 有符号 16 位 if err snd pcm set
  • 在 .gitconfig 中隐藏 GitHub 令牌

    我想将所有点文件存储在 GitHub 上 包括 gitconfig 这需要我将 GitHub 令牌隐藏在 gitconfig 中 为此 我有一个 gitconfig hidden token 文件 这是我打算编辑并放在隐藏令牌的 git 下
  • 如何使用 Cloud Init 挂载未格式化的 EBS 卷

    Context 我正在使用https wiki jenkins io display JENKINS Amazon EC2 Plugin https wiki jenkins io display JENKINS Amazon EC2 Pl
  • 在 Linux 上以编程方式设置 DNS 名称服务器

    我希望能够通过我的 C C 程序为 Linux 上的 DNS 名称服务器添加 IP 地址 我在一个带有只读 etc resolv conf 的嵌入式平台上 这意味着我不能简单地将 nameserver xxx xxx xxx xxx 行添加
  • tcpdump 是否受 iptables 过滤影响?

    如果我的开发机器有iptables规则到FORWARD一些数据包 这些数据包是否被 tcpdump 捕获 我有这个问题 因为我知道存在其他链称为INPUT如果数据包路由到 它会过滤发往应用程序的数据包FORWARD链 它会到达吗tcpdum
  • 如何在linux中以编程方式获取dir的大小?

    我想通过 C 程序获取 linux 中特定目录的确切大小 我尝试使用 statfs path struct statfs 但它没有给出确切的大小 我也尝试过 stat 但它返回任何目录的大小为 4096 请建议我如何获取 dir 的确切大小
  • 添加文件时运行 shell 命令

    我的 Linux 机器上有一个名为 images 的文件夹 该文件夹连接到一个网站 该网站的管理员可以向该网站添加图片 但是 当添加图片时 我想要一个命令来运行调整目录中所有图片的大小 简而言之 我想知道当新文件添加到特定位置时如何使服务器
  • .net-core:ILDASM / ILASM 的等效项

    net core 是否有相当于 ILDASM ILASM 的功能 具体来说 我正在寻找在 Linux 上运行的东西 因此为什么是 net core ildasm 和 ilasm 工具都是使用此存储库中的 CoreCLR 构建的 https
  • Bash - 在与当前终端分开的另一个终端中启动命令的新实例

    我有一个简单的 bash 脚本 test sh 设置如下 bin bash args if args 0 check capture then watch n 1 ls lag home user capture0 watch n 1 ls
  • 内核的panic()函数是否完全冻结所有其他进程?

    我想确认内核的panic 功能和其他类似kernel halt and machine halt 一旦触发 保证机器完全冻结 那么 所有的内核和用户进程都被冻结了吗 是panic 可以被调度程序中断吗 中断处理程序仍然可以执行吗 用例 如果
  • 错误:“rjags”的包或命名空间加载失败

    在终端的 conda 环境之一中 我能够成功安装包 rjags 但是 当我在该环境中运行 R 并运行库 rjags 时 出现以下错误 加载所需的包 coda 错误 rjags 的包或命名空间加载失败 rjags 的 loadNamespac
  • Linux 为一组进程保留一个处理器(动态)

    有没有办法将处理器排除在正常调度之外 也就是说 使用sched setaffinity我可以指示线程应该在哪个处理器上运行 但我正在寻找相反的情况 也就是说 我想从正常调度中排除给定的处理器 以便只有已明确调度的进程才能在那里运行 我还知道
  • 使用 gdb 调试 Linux 内核模块

    我想知道 API 在内核模块 中返回什么 从几种形式可以知道 这并不是那么简单 我们需要加载符号表来调试内核模块 所以我所做的就是 1 尝试找到内核模块的 text bss和 data段地址 2 在 gdb 中使用 add symbol f
  • Linux/POSIX:为什么 fork() 不分叉*所有*线程

    众所周知 POSIX下创建新进程的默认方式是使用fork 在 Linux 下 这在内部映射到clone 我想知道的是 众所周知 当一个人打电话时fork 子进程是用单个线程创建的 调用的线程fork cf https linux die n
  • 我什么时候应该编写 Linux 内核模块?

    有些人出于某种原因想要将 Linux 中的代码从用户空间移动到内核空间 很多时候 原因似乎是代码应该具有特别高的优先级 或者只是 内核空间更快 这对我来说似乎很奇怪 我什么时候应该考虑编写内核模块 有一套标准吗 我怎样才能激励将代码保存在
  • 如何在 Mac OSX Mavericks 中正确运行字符串工具?

    如何在 Mac OSX Mavericks 中正确运行字符串工具 我尝试按照我在网上找到的示例来运行它 strings a UserParser class 但我收到此错误 错误 Applications Xcode app Content
  • 如何让 Node.js 作为后台进程运行并且永不死掉?

    我通过 putty SSH 连接到 linux 服务器 我尝试将其作为后台进程运行 如下所示 node server js 然而 2 5 小时后 终端变得不活动 进程终止 即使终端断开连接 我是否也可以使进程保持活动状态 Edit 1 事实
  • 尽管我已在 python ctypes 中设置了信号处理程序,但并未调用它

    我尝试过使用 sigaction 和 ctypes 设置信号处理程序 我知道它可以与python中的信号模块一起使用 但我想尝试学习 当我向该进程发送 SIGTERM 时 但它没有调用我设置的处理程序 只打印 终止 为什么它不调用处理程序

随机推荐

  • BUUCTF [极客大挑战 2019]Secret File

    题目 查看网页源代码
  • Tp5 根据情况开启/关闭自动日志记录

    Tp5自带的日志记录是所有的异常都会给记录 而且非常详细 而异常我把它分为两种 一种是自己代码编写错误导致的服务器错误 还有一种是用户通过输入造成的异常 这两种异常如果都给记录日志没必要 如果用户每输入一个导致异常 那就记录一下 那将会有很
  • React使用函数组件获取最新值

    一 当使用useState已经获取到最新的值了 由于异步的原因页面还没有接收到最新值 const current setCurrent useState 0 setCurrent 1 prevState是改变之前的state的值 retur
  • pyinstaller打包后,运行生成的exe报错“recursion is detected during loading of “cv2“ binary extensions.”

    解决方法 可依次尝试 1 重装cv2 这是回答比较多的 多数情况有用 先pip uninstall opencv python 再pip intall opencv python 2 设置环境变量 参考 Python Opencv ERRO
  • 三相滤波器怎么接线_单相电机和三相电机怎么接线?为什么三相电机有3或6个接线柱?...

    于电机接线柱的链接方法 下面整理了从单相和三相的接法及三个接线柱和六个接线柱的区别等知识 跟各位电工朋友分享 希望在实际操作中能帮到各位 单相电机一般是指用单相交流电源 AC220V 供电的小功率单相异步电动机 这种电机通常在定子上有两相绕
  • 时序分解

    时序分解 MATLAB实现基于EWT经验小波变换的信号分解分量可视化 目录 时序分解 MATLAB实现基于EWT经验小波变换的信号分解分量可视化 效果一览 基本介绍 程序设计 参考资料 效果一览 基本介绍 EWT经验小波变换 包含频谱相关系
  • Web Service (SOAP)和HTTP接口的区别

    什么是web service soap请求 Simple Object Access Protocol 简单对象访问协议 是HTTP POST的一个专用版本 遵循一种特殊的xml消息格式Content type设置为 text xml任何数
  • log4j+slf4j日志管理系统

    背景 当我们在项目中想使用日志系统帮我们进行日志记录管理时可以使用log4j slf4j 这两个日志框架 slf4j其实并不是日志框架 而是一个日志facade log4j日志管理框架 log4j是Apache下面的日志记录管理框架 它可以
  • 软件工程师职业道德规范和实践要求

    原 则 原则0 守 则 软件工程师的基本要求 树立软件产业界整体优良形象 0 01 自觉遵守公民道德规范标准和中国软件行业基本公约 0 02 讲诚信 坚决反对各种弄虚作假现象 不承接自己能力尚难以胜任的任务 对已经承诺的事 要保证做到 在情
  • scrapy管道文件输出为空!

    scrapy管道文件输出为空 你们是不是遇到这种情况 在管道pipelines文件输出 但结果为空列表 其实是你settings文件的管道没开而已 把注释去了就行 刚下scrapy框架默认是没开的 这样问题就解决啦
  • 吃透排序算法之遍历排序

    吃透排序算法 第一章 吃透排序算法之遍历排序 第二章 吃透排序算法之分割排序 第三章 吃透排序算法之树化排序 文章目录 吃透排序算法 前言 遍历排序 冒泡排序 选择排序 插入排序 希尔排序 总结 前言 程序等于数据结构加算法 算法可以说是程
  • 在使用spring时出现javax/servlet/ServletContext错误

    错误显示 java lang NoClassDefFoundError javax servlet ServletContext at java lang Class getDeclaredConstructors0 Native Meth
  • 0基础学Mysql:mysql入门视频教程!

    0基础学Mysql mysql入门视频教程 目前MySQL技术虽然在国内发展了许多年 但是一直都没有形成一个专门的学科 MySQL的数据库 在很多中小企业的流行做法就是让程序员来管 但是随着近几年互联网行业的高速发展 各个中小企业的数据库存
  • 究极保姆式教你如何在Ubuntu上源码安装Qt5.15.2

    Ubuntu下Qt 5 15 2源码安装 环境 Ubuntu18 04 qt5 15 2要求最少也得在18 04以上 一 下载源码 1 打开官网 https download qt io archive qt 5 15 5 15 2 sin
  • python error loading package_Pycharm Available Package无法显示/安装包的问题Error Loading Package List解决...

    使用Pycharm的时候需要导入解释器然后安装一些第三方库 讲道理都是project Interpreter里面直接install的 但是打开之后发现无法显示列表 也无法下载 Error Loading Package List报错 Err
  • 【数据结构与算法】AcWing算法自学笔记总结

    一总结才知道 我这么菜的原因是我学的真的太少了TAT 还有一些学的时候没记笔记 现在也不知道记不记得 动态规划 动态规划 背包问题总结 01 完全 多重与其二进制优化 分组背包 题解与模板 动态规划 线性dp问题总结 数字三角形 最长上升子
  • ICLR 2023

    DESIGNING BERT FOR CONVOLUTIONAL NETWORKS SPARSE AND HIERARCHICAL MASKED MODELING 目录 总结 一 Introduction 二 Method 三 Result
  • ajax无刷新加载原理

    ajax ajax开发 AJAX即 Asynchronous Javascript And XML 异步JavaScript和XML 是指一种创建交互式网页应用的网页开发技术 AJAX 异步 JavaScript和XML 标准通用标记语言的
  • 机械革命无线网消失解决办法

    机械革命无线网突然显示不出来 1 首先win R 2 输入regedit 3 找到计算机目录下的 HKEY LOCAL MACHINE SYSTEM CurrentControlSet Services Ndisuio 4 找到Displa
  • Linux内核cgroup使用介绍

    cgroup基本概念 cgroup是什么 cgroups本质上是对任意进程进行分组化管理的Linux内核模块功能 cgroup解决的问题 Linux系统每个进程都可以自由竞争系统资源 部分项目中 需要保障一些重要进程的资源开销 如内存 cp