容器管理中关于CGroup的那些事

news2025/1/13 9:26:09

前言

在一个docker宿主机上可以启动多个容器,默认情况下,docker并没有限制其中运行的容器使用硬件资源。

但如果在实际环境中,容器的负载过高,会占用宿主机大量的资源。这里的资源主要指的CPU,内存,和IO带宽这三个方面。

🏠个人主页:我是沐风晓月
🧑个人简介:大家好,我是沐风晓月,阿里云社区博客专家😉😉
💕 座右铭: 先努力成长自己,再帮助更多的人 ,一起加油进步🍺🍺🍺
💕欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信😘

文章目录

  • 前言
  • 什么是CGroup?
  • 查看系统是否启用CGroup
  • 限制CPU使用率
  • 总结

什么是CGroup?

Cgroup(Control Group)是Linux内核提供的一种机制,用于对进程组(process group)进行资源分配和限制。它可以对进程组设置资源限制,例如CPU、内存、磁盘IO、网络带宽等,以帮助管理和控制系统中运行的进程和容器。

Cgroup通过将进程组组织为一个层次结构,并为每个层级分配资源,实现对资源的限制和隔离。

在Cgroup层次结构中,每个Cgroup都可以包含其他子Cgroup,并且可以为每个Cgroup设置特定的资源限制。这样可以为不同的应用程序、进程或容器分配适当的资源,并确保它们不会互相干扰。

使用场景和优势:

Cgroup(Control Group)是Linux内核提供的功能强大的机制,用于资源管理和控制,具有以下主要功能:

  • 资源限制和配额:Cgroup可以为进程组(process group)设置资源限制和配额。这包括CPU使用量、内存使用量、磁盘IO、网络带宽等资源。通过设置适当的限制,可以确保每个Cgroup内的进程不会过度消耗系统资源。
  • 资源统计和监控:Cgroup可以统计和监控进程组的资源使用情况。这包括CPU使用率、内存使用量、磁盘IO操作等。通过实时监控Cgroup的资源消耗,可以了解系统中各个进程组的状态,并进行性能分析和优化。
  • 资源隔离和控制:Cgroup可以实现资源的隔离和控制,确保各个进程组之间不会互相干扰。通过将进程组划分为不同的Cgroup,并为每个Cgroup设置适当的资源限制,可以实现资源的隔离和分配。
  • 进程管理:Cgroup提供了一种管理进程的方式。可以将进程添加到或从Cgroup中移除,以及查看和管理Cgroup中的进程列表。这对于组织和管理具有特定资源需求的进程非常有用,例如容器化环境。
  • Cgroup层次结构:Cgroup支持创建一个层次结构来组织进程组和资源。Cgroup可以包含其他的子Cgroup,并继承父级Cgroup的资源限制。这样可以实现更灵活和层次化的资源管理。
  • 容器化支持:Cgroup是容器技术的基础之一。容器平台(如Docker、Kubernetes等)使用Cgroup来隔离和管理容器的资源使用。通过Cgroup,容器可以被限制在一定的资源范围内,从而实现隔离和控制。

查看系统是否启用CGroup

G_CGROUPS=y
# CONFIG_CGROUP_DEBUG is not set
CONFIG_CGROUP_FREEZER=y
CONFIG_CGROUP_PIDS=y
CONFIG_CGROUP_DEVICE=y
CONFIG_CGROUP_CPUACCT=y
CONFIG_CGROUP_HUGETLB=y
CONFIG_CGROUP_PERF=y
CONFIG_CGROUP_SCHED=y
CONFIG_BLK_CGROUP=y
# CONFIG_DEBUG_BLK_CGROUP is not set
CONFIG_NETFILTER_XT_MATCH_CGROUP=m
CONFIG_NET_CLS_CGROUP=y
CONFIG_NETPRIO_CGROUP=y
[root@mufeng41 ~]# 

可以看到CGroup=Y 说名已经启动了linux CGroup

限制CPU使用率

  • 写一段死循环
[root@mufeng41 ~]# vim hello.c
[root@mufeng41 ~]# cat hello.c 
int main(void)
{
 int i = 0;
 for(;;) i++;
 return 0

}

执行:

[root@mufeng41 ~]# gcc -o hello hello.c
[root@mufeng41 ~]# ./hello

在这里插入图片描述

[root@mufeng41 ~]# cd /sys/fs/cgroup/cpu
[root@mufeng41 cpu]# mkdir hello
[root@mufeng41 cpu]# cd hello/
[root@mufeng41 hello]# ls
cgroup.clone_children  cpuacct.usage         cpu.rt_period_us   notify_on_release
cgroup.event_control   cpuacct.usage_percpu  cpu.rt_runtime_us  tasks
cgroup.procs           cpu.cfs_period_us     cpu.shares
cpuacct.stat           cpu.cfs_quota_us      cpu.stat
[root@mufeng41 hello]# cat cpu.cfs_quota_us 
-1
[root@mufeng41 hello]# echo 20000 > cpu.cfs_quota_us 
[root@mufeng41 hello]# echo 84783 > tasks 
[root@mufeng41 hello]# top 

在这里插入图片描述
发现CPU的使用率已经降到了20%

如果在重启一个hello应用,并按照上面进行操作,会发现两个应用各占10%

总结

以上就是关于cgoup的全部内容,你学会了吗,我是沐风晓月,我在csdn等你。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/684856.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python Pandas 筛选数据以及字符串替换

str.replace使用示例 假设有一个DataFrame df,其中有一个列名为text,包含一些文本字符串: import pandas as pd data {text: [hello world, foo bar, hello there]} df pd.DataFrame(data) 我们可以使用str.replace方法来替换字符串。比…

操作系统——Linux 进程控制

一、实验题目 Linux 进程控制 二、实验目的 通过进程的创建、撤销和运行加深对进程概念和进程并发执行的理解,明确进程和程序之间的区别。 三、实验内容(实验原理/运用的理论知识、算法/程序流程图、步骤和方法、关键代码) (…

开源网安S-SDLC解决方案,为银行打造主动防御的安全体系

​某银行是全国上市最早的一批股份制商业银行,总部位于深圳,在全国拥有上百家分行、上千家营业机构,资产总额达数千亿元。近年来,该银行围绕数据化、智能化、生态化,全力打造“数字银行”,助力建设“数字中…

第十六届CISCN复现----MISC

1.被加密的生产流量 下载附件,发现是一个文件名为modus的压缩包,解压后是一个pcap文件,用wireshark打开 文件名modus,已经提示了工控流量,很多情况下都是和TCP协议结合起来的 工控CTF之协议分析1——Modbus_ctf modb…

基于java+swing+mysql学生信息管理系统V2.0

基于javaswingmysql学生信息管理系统V2.0 一、系统介绍二、功能展示1.项目骨架2.数据库表3.项目内容4.登陆5.学生信息查询6、学生信息添加7、学生信息修改8、学生信息删除 四、其它1.其他系统实现五.获取源码 一、系统介绍 项目类型:Java SE项目(awtswi…

Gorm Many To Many

写cmdb的时候要去做一些软件资源的落库,发布要使用到的应用属性。应用有哪些属性? 应用有它的type类型,是api还是admin,还是job或者task。它的语言是go java.....,它的own也就是属于哪个开发的,这是它的属…

设备管理模块实现

文章目录 1 .导航树模块的实现2. 查询定位功能的实现3. 资源管理功能的实现4. 电缆段入沟功能实现 1 .导航树模块的实现 导航树的各节点是通过Ajax 技术异步加载的,系统初始化时导航树只会加载初始的城市节点,用户根据自身需要选择相应的父节点加载其逻…

Flink安装与编程实践

系列文章目录 Ubuntu常见基本问题 Hadoop3.1.3安装(单机、伪分布) Hadoop集群搭建 HBase2.2.2安装(单机、伪分布) Zookeeper集群搭建 HBase集群搭建 Spark安装和编程实践(Spark2.4.0) Spark集群搭建 文章目…

mongoDB相关知识

目录 常用操作删除数据库 启动问题集如何远程访问mongDB数据库由于widows安全策略,linux访问不到windows的mongDB 常用操作 删除数据库 windows下mongDB通过下面命令行进入 D:\mongodb\mongodb-win32-x86_64-2008plus-ssl-3.6.23-8-gc2609ed3ed\bin>mongod.exe…

Unity开发前的一些建议1_设置脚本的编码格式,设置IDE的编码格式

Unity开发前的一些建议1_设置脚本的编码格式,设置IDE的编码格式 乱码之后是是不可以撤回的哦。 这么做的理由,Unity右侧的Inspector面板看代码是UTF-8格式的。可以在Inspector中速览代码,且如果修改IDE,UTF-8比其他编码格式用的…

K8S复习

本文原文出自本人自己复习时整理,原文非常系统,建议拜师#yyds干货盘点# 手把手教你玩转 Kubernete 集群搭建(03)_wzlinux的博客-CSDN博客 1.docker的优势 在某一段时期内,大家一提到 Docker,就和容器等价起来,认为 Doc…

【架构】后端服务架构高性能设计方法

文章目录 前言1、无锁化1.1、串行无锁1.2、结构无锁 2、零拷贝2.1、内存映射2.2、零拷贝 3、序列化3.1、分类3.2、性能指标3.3、选型考量 4、池子化4.1、内存池4.2、线程池4.3、连接池4.4、对象池 5、并发化5.1、请求并发5.2、冗余请求 6、异步化6.1、调用异步化6.2、流程异步化…

【跟晓月学数据库】使用MySQLdump 对数据导入导出

前言 大家好,我是沐风晓月,今天给大家介绍MySQLdump的数据导出导入,希望对你有用。 🏠个人主页:我是沐风晓月 🧑个人简介:大家好,我是沐风晓月,阿里云社区专家博主&…

vue3+antd-design-vue+vite项目总结

代码热更新能力失效,每次都需要手动刷新,开发体验极差 1、先看看是否开启了热更新 2、再看看引入模块文件名是否正确。当前的项目部分人可以更新,部分不能,所以和1没什么关系,网上搜索发现vite对文件名大小写十分敏感&…

2-3查找树

2-3查找树 为了保证查找树的平衡性,我们需要一些灵活性,因此在这里我们允许树中的一个结点保存多个键。确切的说,我 们将一棵标准的二叉查找树中的结点称为2-结点(含有一个键和两条链),而现在我们引入3-结点,它含有两…

Java版本企业招投标采购管理系统源码 +支持二开+spring cloud

一、立项管理 1、招标立项申请 功能点:招标类项目立项申请入口,用户可以保存为草稿,提交。 2、非招标立项申请 功能点:非招标立项申请入口、用户可以保存为草稿、提交。 3、采购立项列表 功能点:对草稿进行编辑&#x…

如何访问NetApp E系列存储的CLI命令行

NetApp存储的E系列(e-series)是收购LSI存储而来的,所以这个产品的install base,也就是安装量其实是很大的,因为早期LSI的商业模式就是OEM,给很多的IT公司做过OEM,比较典型的就是IBM的早期的DS存…

我想搭建一个商城?有哪些流程?

近年来,我国电子商务发展迅速。淘宝、京东、亚马逊等一大批电子商务巨头受到越来越多消费者的青睐。互联网普及率大大提高,消费者也逐渐形成了网上购物的习惯。在支付体验、物流服务和售后服务不断提升的过程中,越来越多的消费者依赖网络购物…

保险信创 数据领航|GBASE南大通用亮相2023年保险行业信息技术应用创新大会

2023年6月,2023年保险行业信息技术应用创新大会在京召开,会议重点围绕保险核心业务系统的改造及终端的选型和应用展开探讨学习,分享行业成功实践经验,着力解决行业信创发展痛点难点,助力行业加快信创生态建设&#xff…

Linux用户权限和认证

linux公钥登录 useradd test -m -g root创建名为test的用户,生成相应目录,同时加入root组passwd test重置密码 分配test用户sudo权限,sudo vim etc/sudoers 编辑SSH文件 vim /etc/ssh/sshd_config PermitRootLoginyes改为no关闭ROOT登录…