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

news/2024/4/30 3:01:07/文章来源:https://blog.csdn.net/CCTVZHENG/article/details/130031719

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

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

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

三种云平台技术的侧重点不一样,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.luyixian.cn/news_show_283836.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java初始泛型

目录 一、包装类 1、基本数据类型和对应的包装类 2、装箱和拆箱 3、自动装箱和自动拆箱 二、什么是泛型 三、引出泛型 1、泛型的语法 四、泛型类的使用 1、语法 2、示例 3、类型推导(Type Inference) 六、泛型如何编译的 1、擦除机制 2、为什么不能实例化泛型类…

C指针的简介与应用

C指针 感谢b站up主江科大自化协的讲解:https://www.bilibili.com/video/BV1Mb4y1X7dz/?spm_id_from333.999.0.0 该学习笔记也是基于up课程做的笔记,我的个人能力及理解的局限,不足之处还望大佬指正~ 9.1 指针简介 指针(Pointer)是C语言的…

【NX2023/1847】UG软件安装详细指南教程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录安装包一、安装包内容检查二、安装步骤1.安装JAVA_WIN64.exe2.运行Launch.exe3.安装许可3.直接重启电脑(小白直接重启稳妥)4.重启后继续运行L…

【案例实践】R语言多元数据统计分析在生态环境中的实践应用

查看原文>>>R语言生物群落分析绘图、多元统计分析、CMIP6、遥感碳储量、GEE林业、InVEST等 生态环境领域研究中常常面对众多的不同类型的数据或变量,当要同时分析多个因变量(y)时需要用到多元统计分析(multivariate sta…

《计算机网络-自顶向下》05. 网络层-控制平面

文章目录路由控制方式每路由控制逻辑集中式控制路由选择算法LS —— 链路状态路由选择算法DV —— 距离向量路由选择算法LS 和 DV 算法的比较自治系统内部路由协议RIPOSPF自治系统外部路由协议:BGP通告 BGP 路由信息选择最好的路由相关术语热土豆选择路由选择算法&a…

使用向量机(SVM)算法的推荐系统

系统整体结构 运行环境 包括Python环境、TensorFlow环境、安装模块、MySQL数据库。 Python环境 需要Python 3.6及以上配置,在Windows环境下推荐下载Anaconda完成Python所需的配置,下载地址为https://www.anaconda.com/,也可下载虚拟机在Li…

【ES】搜索结果处理RestClient查询文档

【ES】搜索结果处理&RestClient查询文档2.搜索结果处理2.1.排序2.1.1.普通字段排序2.1.2.地理坐标排序2.2.分页2.2.1.基本的分页2.2.2.深度分页问题2.2.3.小结2.3.高亮2.3.1.高亮原理2.3.2.实现高亮2.4.总结3.RestClient查询文档3.1.快速入门3.1.1.发起查询请求3.1.2.解析响…

Java面试题总结 | Java基础部分(持续更新)

Java基础 文章目录Java基础一个Java文件里可以有多个类吗(不含内部类)?创建对象的方法面向对象和面向过程简述自动装箱拆箱Java代码块执行顺序java中的基本数据类型对应的字节数包装类型和基本数据类型的场景java中的关键字分类final关键字st…

数据结构入门(C语言版)线性表中链表介绍及无头单向非循环链表接口实现

线性表之链表导航1、链表的概念和结构2、链表的分类3、链表的实现3.1 结构体定义3.2 接口函数定义3.3 接口函数的实现4、结语导航 1、链表的概念和结构 概念: 线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素 。因此,为了表示每…

推荐NLP基础 RNN循环神经网络

NLP概述 Natural Language Processing(NLP, 自然语言处理) 目的:让计算机处理或“理解”自然语言,以执行语言翻译和问题回答等任务;最终 来讲就是构建机器语言和人类语言之间的沟通桥梁,实现人机交流为最终目的。 常见应用&…

Python 虚拟环境迁移到其他电脑

一、背景介绍 在 Python 项目开发过程中,根据不同的项目场景,需要切换不同的 Python 版本。 因此,我们经常会对不同的项目,创建特定的 Python 虚拟环境,实现项目环境间的“物理隔离”。 本地创建 Python 虚拟环境&…

三、位置判断与代码搬移

判断当前位置 判断当前位置是否在SDRAM # < cpu\arm920t\start.S > relocate1: /* relocate U-Boot to RAM */ adr r0, _start /* r0 <- current position of code */ ldr r1, _TEXT_BASE /* test if we run from flash or RAM */ cmp r0, r1 /* dont reloc…

基于支持向量机SVM的脑部肿瘤识别,脑电波样本熵提取

目录 支持向量机SVM的详细原理 SVM的定义 SVM理论 Libsvm工具箱详解 简介 参数说明 易错及常见问题 SVM应用实例,基于SVM的的脑部肿瘤识别分类预测 代码 结果分析 展望 支持向量机SVM的详细原理 SVM的定义 支持向量机(support vector machines, SVM)是一种二分类模型,它…

电视王者沦落到再度卖楼求生,家电巨头跌落神坛,凸显行业之囧

电视无疑是中国家电行业中做得最成功的行业之一&#xff0c;在国内市场将外资品牌挤压出市场&#xff0c;还走向了海外市场&#xff0c;不过有一家国内的电视企业如今却无奈再度卖楼求生&#xff0c;这家企业就是长虹。一、长虹的变幻长虹称雄国内电视市场出自上一任领导人倪润…

pytorch 线性回归总结

测试1(y3∗x1−4∗x2y3*x_{1}-4*x_{2}y3∗x1​−4∗x2​),lr1e-2 %matplotlib inline import torch import numpy as np torch.manual_seed(1) from torch.nn import Linear from torch.autograd import Variable import torch.nn as nn import random np.random.seed(1) rand…

Robocup 仿真2D 学习笔记(四)阵型编辑

一、阵型文件介绍 阵型文件里设置的是球员在比赛中的跑位点 基于helios base的阵型文件&#xff0c;在目录/src/formations-dt中 阵型的调用在/src/strategy.cpp 文件&#xff1a; before-kick-off.conf 是球员上场之后的阵型 &#xff08;或进球等待开球&#xff09; no…

049:cesium加载czml文件,显示图形

第049个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中加载czml文件, 显示图形。这是官网的一个示例,这里转换了处理方式。 直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果. 文章目录 示例效果配置方式示例源代码(共78行)相关API参考:专栏目标示…

暴击一棵树——二叉树入门一(入门基础概念)

目录 1.树的概念 2.二叉树的概念 二叉树&#xff08;Binary Tree&#xff09; 满二叉树&#xff08;Full Binary Tree&#xff09; 完全二叉树&#xff08;Complete Binary Tree&#xff09; 3.堆和二叉树 4、二叉树的结构 1.二叉树的逻辑结构 2.二叉树的物理结构 1.树…

《钢琴调律师 五级》 笔记

声音产生的三个条件&#xff1a;物体振动、媒质传播、人耳接收 复合音&#xff1a;由一些频率不同的简谐成分合成的声音。大多数乐器都是复合音&#xff0c;因此才各有不同的音色特征 纯音&#xff1a;物体做简谐振动所产生的声音 乐音&#xff1a;指有较为明确音调感的声音。噪…

spark第七章:SparkStreaming实例

系列文章目录 系列文章目录 spark第一章&#xff1a;环境安装 spark第二章&#xff1a;sparkcore实例 spark第三章&#xff1a;工程化代码 spark第四章&#xff1a;SparkSQL基本操作 spark第五章&#xff1a;SparkSQL实例 spark第六章&#xff1a;SparkStreaming基本操作 spa…