cgroups是linux内核中限制、记录、隔离进程组(process groups)所使用的物理资源的机制

news2025/1/20 4:39:37

容器虚拟化
可以实现应用程序的隔离
直接使用物理机的操作系统可以快速响应用户请求

不占用部署时间
占用少量磁盘空间
缺点∶学习成本增加、操作控制麻烦、网络控制与主机虚拟化有所区别、服务治理难。

微服务架构师需要会多门编程语言,才能治理各种服务
 

三种云平台技术的侧重点不一样,laaS是需要花时间部署虚拟机,但是容器就不用花那么多时间

laaS   虚拟机
阿里云ECS
OpenStack VM实例.

PaaS   容器
LXC

Docker

 OpenShift

Rancher

SaaS   应用程序
互联网中应用都是
 

NameSpace

一个容器就是一个namespace

六大命名空间

UTS
UTS ( UNIX Time-sharing System ) 命名空间允许每个容器拥有独立的主机名和域名,从而可以虚拟出一个有独立主机名和网络空间的环境,就跟网络上一台独立的主机一样。
IPC
容器中进程交互还是采用了Linux常见的进程间交互方法(Interprocess Communication, IPC ),包括信号、消息队列和共享内存等。PID Namespace和IPC Namespace可以组合起来一起使用,同一个IPC命名空间内的进程可以彼此可见,允许进行交互;不同空间的进程则无法交互。
Mount
类似于chroot,将一个进程放到一个特定的目录执行。挂载命名空间允许不同命名空间的进程看到的文件结构不同,这样每个命名空间中的进程所看到的文件目录彼此被隔离。
Net
通过网络命名空间,可以实现网络隔离。网络命名空间为进程提供了一个完全独立的网络协议栈的视图,包括网络设备接口、IPv4和IPv6协议栈、IP路由表、防火墙规则、sockets等,这样每个容器的网络就能隔离开来。Docker采用虚拟网络设备(Virtual Network Device )的方式,将不同命名空间的网络设备连接到一起。默认情况下,容器中的虚拟网卡将同本地主机上的docker0网桥连接在一起。
User
每个容器可以有不同的用户和组id,也就是说可以在容器内使用特定的内部用户执行程序,而非本地系统上存在的用户
每个容器内部都可以有root帐号,但跟宿主主机不在一个命名空间。通过使用隔离的用户命名空间可以提高安全性,避免容器内进程获取到额外的权限。


PID
Linux通过命名空间管理进程号,对于同一进程(即同一个task_struct ),在不同的命名空间中,看到的进程号不相同,每个进程命名空间有一套自己的进程号管理方法。进程命名空间是一个父子关系的结构,子空间中的进程对于父空间是可见的。新fork出的进程在父命名空间和子命名空间将分别有一个进程号来对应。

总结

 子进程在容器中,物理机中的就是父进程,子进程也叫线程

什么是命名空间?


应用程序运行环境隔离的空间,就是一个命名空间,每一个空间都将拥有UTS、IPC、Mount 、 Net、User、PID

Control Groups

 PAM资源限制

 

CGroups资源限制是针对进程的,主要是CPU和内存

 

CGroups九大子系统

 总结

 9大子系统
把资源定义为子系统,可以通过子系统对资源进行限制

CPU          可以控制进程使用CPU的比例,1024等份一分钟,每秒各进程占用cpu都是分比例分配的
memory          限制内存使用,例如50Mi,150Mi

blkio        限制块设备的IO,也就是限制IO流的带宽
cpuacct        生成Cgroup使用CPU的资源报告,显示各子系统占用的CPU资源

cpuset        用于多CPU执行Cgroups时,对进程进行CPU分组,例如nginx使用4颗,tomcat2颗

应用程序分配到的CPU越多,响应不一定越快

部署CGroup

第一步:安装cgroup

yum -y install libcgroup*

devel开发包和tools工具包都必须安装

 

第二步:cgconfig的开机自启设置

cgroup限制步骤


1.创建cgroup,定义相应的限制

2.分配进程到cgroup

 定义两个cpu子系统的cpu占用分片

 

 通过md5sum 进行入侵检测,判断文件是否被修改过

md5和sha1都可以计算文件的哈希值

黑洞/dev/null  白洞/dev/zero   白洞的数据是无穷无尽的适合用来测试

md5计算白洞的值一直会增加,可以测试cgroup是否能控制cpu的资源分配

可以在主机里面同时用md5和sha1计算白洞,产生两个进程

然后top查看cpu负载

 注意,运行进程之前必须分组:

之前创建了两个cpu子系统的cgroup组,和手动分配CPU占用率,1024等份就是1000分之200和800,20%和80%,限制了两个算法进程的CPU资源,这就是利用cgroup限制进程对CPU的使用。

 Linux系统中有物理内存mem和swap虚拟内存,限制内存必须一起,要不然无效

 

total:机器总内存量;
used:以用内存(tips: 包括划出来的缓存);
free:未使用内存;
shared:共享内存;
buffers:缓冲区内存;
cached:缓存;
其中:
物理已用内存 = 实际已用内存 - 缓冲 - 缓存 = 48G - 3.2G - 31G

物理空闲内存 = 总物理内存 - 实际已用内存 + 缓冲 + 缓存

应用程序可用空闲内存 = 总物理内存 - 实际已用内存

应用程序已用内存 = 实际已用内存 - 缓冲 - 缓存

一般都看第二行: -/+ buffers/cache  :第一个是-代表物理内存已使用多少,第二个是+代表空闲


 memory.memsw.limit_in_bytes=值;  限制虚拟内存swap分区

如果这个memsw限制的值减去物理内存限制的值,产生的差值就是swap空间提供的内存

cgroup限制容器的资源

已经挂载的要umount解挂之后才能重新挂载

文件缓存tmpfs


基于内存的文件系统,直接使用ram(物理内存)+swap(交换分区)

tmpfs缓存文件系统:动态的使用虚拟内存,文件删除后释放内存,没有持久性(重启失效)

2007年-Control Groups

Control Groups也就是谷歌实现的cgroups,其于2007年被添加至Linux内核当中。


 

 

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

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

相关文章

web路径专题+会话技术

目录自定义快捷键1. 工程路径问题及解决方案1.1 相对路径1.2 相对路径缺点1.3 base标签1.4 作业11.5 作业21.6注意细节1.7 重定向作业1.8 web工程路径优化2. Cookie技术2.1 Cookie简单示意图2.2 Cookie常用方法2.2 Cookie创建2.3 Cookie读取2.3.1 JSESSIONID2.3.2 读取指定Cook…

Linux文件目录操作命令

目录 Linux常用的基础命令 使用技巧 1. ls命令:查看当前目录所有内容 ls 命令的多种使用方法: 注:假如执行乱码,则执行以下两步的代码: 2. cd命令:切换当前工作目录,即进入指定目录 3. …

网络-IP地址(嵌入式学习)

IP地址基本概念IPv4 五类:A B C D E特殊地址子网掩码子网号概念IPv6优势举个栗子基本概念 IP地址是Internet中主机的标识 IP地址(Internet Protocol Address 互联网国际地址)是一种在Internet上的给主机编址的方式,它主要是为互…

Java Web 开发技术的演进:从 Servlet、Spring MVC 到 WebFlux 及其竞品分析

前言 随着互联网技术的快速发展,Web 应用程序在处理海量用户访问和大数据时面临着巨大的挑战。在这个过程中,Java Web 开发技术经历了从 Servlet 到 Spring MVC 再到 WebFlux 的演变。在这篇文章中,我们将探讨这三个技术的发展历程、痛点及解…

Go的IO -- Go语言设计与实现

Go合IO的不解之缘 协程是Go的很大的一个优势。Go天然支持高并发,那么我们来研究一下这个高并发的秘诀在哪里? 执行体调度得当。CPU 不停的在不同的执行体( Goroutine )之间反复横跳!CPU 一直在装填和运行不同执行体的…

数字化坚鹏:金融数据治理、数据安全政策解读及银行数字化转型

金融数据治理、数据安全政策解读及银行数字化转型课程背景: 很多银行存在以下问题: 不知道如何准确理解金融数据治理及数据安全相关政策 不清楚金融数据治理及数据安全相关政策对银行有什么影响? 不清楚如何进行银行数字化转型&#xff1f…

Azure DevOps Pipelines

Azure DevOps主要通过管理代码、管理服务器、管理发布的管道来实现一体化解决方案 发布流程: 1、代码上传Repos仓储 略 2、DevOps连接并管理发布服务器 2.1、Deployment Groups配置 2.2、服务器执行连接指令 2.3、服务器状态查看 3、创建 Pipline(构建代码) 3.1…

前端中font的使用

知识点&#xff1a; 运行截图&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta http-equiv"X-UA-Compatible" content"IEedge"> <meta name&…

【RabbitMQ】SpringBoot整合RabbitMQ、实现RabbitMQ五大工作模式(万字长文)

目录 一、准备 1、创建SpringBoot项目 2、添加配置信息 3、创建配置类 二、RabbitMQ的配置类里创建队列 三、RabbitMQ的配置类里创建交换机及绑定队列 四、SpringBoot整合RabbitMQ入门案例 1、生产者 2、消费者 四、SpringBoot里实现RabbitMQ五大工作模式 1、简单模式…

Linux--进程多线程(上)

前言 精神内耗一方面可能是消极的&#xff0c;人好像一直在跟自己过不去&#xff0c;但其实它也是一种积极的情绪。精神内耗在某种程度上&#xff0c;是在寻找一种出口&#xff0c;寻找他自己人生的出口&#xff0c;寻找我今天的出口&#xff0c;或者寻找我一觉醒来明天的出口。…

【k8s完整实战教程5】网络服务配置(nodeport/loadbalancer/ingress)

系列文章&#xff1a;这个系列已完结&#xff0c;如对您有帮助&#xff0c;求点赞收藏评论。 读者寄语&#xff1a;再小的帆&#xff0c;也能远航&#xff01; 【k8s完整实战教程0】前言【k8s完整实战教程1】源码管理-Coding【k8s完整实战教程2】腾讯云搭建k8s托管集群【k8s完…

恐怖的ChatGPT!

大家好&#xff0c;我是飞哥&#xff01;不知道大家那边咋样。反正我最近感觉是快被ChatGPT包围了。打开手机也全是ChatGPT相关的信息&#xff0c;我的好几个老同学都在问我ChatGPT怎么用&#xff0c;部门内也在尝试用ChatGPT做一点新业务出来。那就干脆我就趁清明假期这一天宝…

AB测试基本原理

AB测试基本原理AB测试AB测试的基本步骤1、AB测试的基本步骤①选取指标指标的分类②建立假设③选取实验单位④计算样本量⑤流量分割⑥实验周期计算⑦线上验证⑧数据检验AB测试 所谓的AB测试就是使用实验组和对照组&#xff0c;通过控制变量法保证实验组和对照组基本条件一致&am…

NumPy 数组学习手册:6~7

原文&#xff1a;Learning NumPy Array 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 六、性能分析&#xff0c;调试和测试 分析&#xff0c;调试和测试是开发过程的组成部分。 您可能熟悉单元测试的概念。 单元测试是程序员编写的用于测试其代码的自动测试。 例如&…

AI —— 一看就懂的代码助手Copilot获取教程

背景 随着chatgpt的发布&#xff0c;人工智能领域近期站上了风口浪尖。GitHub Copilot由github与 OpenAI 合作创建&#xff0c;是世界上第一个使用 OpenAI 的 Codex 模型&#xff08;GPT-3 的后代&#xff09;制作的大规模生成式 AI 开发工具。GitHub Copilot 作为 AI 结对程序…

【条件判断】

目录知识框架No.0 筑基No.1 条件判断题目来源&#xff1a;PTA-L1-031 到底是不是太胖了题目来源&#xff1a;PTA-L1-063 吃鱼还是吃肉题目来源&#xff1a;PTA-L1-069 胎压监测题目来源&#xff1a;PTA-L1-077 大笨钟的心情题目来源&#xff1a;PTA-L1-083 谁能进图书馆知识框架…

Day15-二维数组字符串

文章目录一 二维数组二 字符串案例1案例2案例3-随堂练习案例4-输入-类型转换案例5案例6案例7一 二维数组 <script>// 书:编号 名称 描述 价格/*** 二维数组* */let arr [ [1001,"HTML","网页设计",100],[1002,"CSS","样式设计"…

Leetcode刷题之环形链表

莫等闲&#xff0c;白了少年头&#xff0c;空悲切。 --岳飞 目录 1.环形链表 2.环形链表Ⅱ 1.环形链表 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next …

Stable Diffusion扩散模型

1 GAN到Stable Diffusion的改朝换代 随着人工智能在图像生成&#xff0c;文本生成以及多模态生成等生成领域的技术不断累积&#xff0c;生成对抗网络&#xff08;GAN&#xff09;、变微分自动编码器&#xff08;VAE&#xff09;、normalizing flow models、自回归模型&#xf…

Android Textview Button 等基础组件学习

一 Textview 1 基本使用 <?xml version"1.0" encoding"utf-8"?><LinearLayout android:layout_height"match_parent"android:layout_width"match_parent"android:orientation"vertical"xmlns:android"http…