地方门户网站开发/最近的重要新闻
Docker的资源控制:
对容器使用宿主机的资源进行限制,Docker 通过 Cgroup 来控制容器使用的资源配额,包括
CPU 内存 磁盘i/o
Docker 使用Linux自带的功能cgroup,Cgroup 是 ControlGroups 的缩写
C crontrol groups是Linux内核系统提供的一种可以限制,记录,隔离进程所使用的物理资源的机制,docker借助这个机制来实现资源的控制
cgroup本身是提供将进程进行分组化管理的功能和接口的基础结构,分配控制的机制来实现资源控制
Host:容器和宿主机共用一个网络命名空间
Container:容器和容器之间共用一个网络命名空间
其他的资源依然是隔离的,
-
CPU资源控制:
Linux通过CFS(completely Fair Scheduler 完全公平调度器),通过这个调度器来对各个进程对CPU的使用,CFS的调度器100ms.
我们自定义容器的调度周期,以及在这个周期之内,各个容器能够使用CPU的调度时间
--cpu-period设置容器调度CPU的周期
--cpu-quota 设置在每个周期内,容器可以使用CPU的时间
可以配合使用
CFS周期的有效范围是:1ms-1s --cpu-period 1000-1000000
容器使用CPU的配额时间必须,大于1ms, --cpu-quota的值,必须是>=1000
cd /sys/fs/cgroup/cpu
cpu.cfs_quota_us 容器占用的时间分片
如果配置是-1,那么容器在使用宿主机CPU的时间不做任何限制,想用多少用多少
cat cpu.cfs_period_us
表示 CFS 调度周期的长度,以微秒为单位。
在每个周期内,容器可以使用指定比例的 CPU 时间。默认情况下,cpu.cfs_period_us 的值是 100000(即 100 毫秒)
CFS调度周期的长度,微秒,容器可以使用指定比例的CPU时间,默认情况都是100毫秒
CFS调度器,100毫秒就是定义了一个周期,在这个周期内,调度任务(容器)的基本时间单位
cd /sys/fs/cgroup/cpu
100毫秒一次调度器请求CPU资源,然后内核把CPU的资源分配给容器
Cpu.cfs_quota_us:调度器请求之后,根据配额,内核分配给容器使用CPU的时间
#进行CPU压力测试,正常启用的cpu,测试使用上限
正常创建容器(此时容器遵守的默认的占用CPU资源规则)
docker run -id --name c1 centos:7
写一个循环脚本
先安装vim工具
yum -y install vim
#!/bin/bash
i=0
while true
do
let i++
done
chmod +x cpu.sh #赋权
./ cpu.sh #启动死循环脚本
top #可以看到这个脚本占了很多的cpu资源
CPU此时占用为100%,由此可以看出,如果在创建容器时不限制它CPU使用限制,是一件非常危险的事情,一旦某个容器的程序异常陷入死循环,将直接导致其他容器的中断
修改默认的容器时间分片上限规则,再次创建启动测试
cd /sys/fs/cgroup/cpu/docker/
启动该容器的死循环脚本
另开一台终端查看
创建容器时指定容器的cpu资源占用量上限
#设置50%的比例分配CPU使用时间上限
docker run -itd --name test6 --cpu-quota 50000 centos:7 /bin/bash #可以重新创建一个容器并设置限额
#可以看到cpu占用率接近50%,cgroups对cpu的控制起了效果
多cpu分配容器的使用上限
设置cpu资源的占用比
设置CPU的容器占用CPU的权重比,需要多个容器才能生效,创建容器时可以使用选项 --cpu-shares 数值(该数值要为1024的倍数,1024代表一份,当个容器占用cpu的份额由自身分配的份数除于所有容器占用cpu的份数,就为该容器所占用cpu资源的百分比)
--cpu-shares 指定容器占用cpu的份额,权重模式1024,1024代表一份,设置的值只能是1024的倍数
--cpu-shares 是给每个容器使用CPU设置了相对的权重,权重高的,可以使用的CPU的资源更多,但是,如果只有一个容器在运行,即使设置了权重,但是没有其他更高的权重容器来占用资源,权重低的容器依然不受限制
演示:
创建两个容器
Docker 通过 --cpu-shares 指定 CPU 份额,默认值为1024,值为1024的倍数。
#创建两个容器为 c1 和 c2,若只有这两个容器,设置容器的权重,使得c1和c2的CPU资源占比为1/3和2/3。
docker run -itd --name c1 --cpu-shares 512 centos:7
docker run -itd --name c2 --cpu-shares 1024 centos:7
#分别进入容器,进行压力测试
yum install -y epel-release
yum install -y stress
#stress 是一个用于模拟系统负载的工具,它可以测试系统在高负载条件下的稳定性。
stress -c 4 #产生四个进程,每个进程都反复不停的计算随机数的平方根
#查看容器运行状态(动态更新)
docker stats
可以看到在 CPU 进行时间片分配的时候,容器 c2 比容器 c1 多一倍的机会获得 CPU 的时间片。
但分配的结果取决于当时主机和其他容器的运行状态, 实际上也无法保证容器 c1 一定能获得 CPU 时间片。
比如容器 c1 的进程一直是空闲的,那么容器 c2 是可以获取比容器 c1 更多的 CPU 时间片的。
极端情况下,例如主机上只运行了一个容器,即使它的 CPU 份额只有 50,它也可以独占整个主机的 CPU 资源。
设置容器绑定CPU,容器只能使用指定的CPU内核
#先分配虚拟机1个CPU核数
docker run -itd --name test3 --cpuset-cpus 1 centos:7 /bin/bash
#进入容器,进行压力测试
yum install -y epel-release
yum install stress -y
stress -c 4
#退出容器,执行 top 命令再按 1 查看CPU使用情况
总结:
容器占用CPU时间
容器占用CPU的权重比(多个容器时,才有效)
容器占用CPU的内核数,绑定指定CPU的内核给容器使用
内存:
如和限制对内存的使用
限制容器可用的swap 大小
//限制可用的 swap 大小, --memory-swap
docker run -itd --name test10 -m 512m --memory-swap=1g centos:7
限制使用swap:想要限制容器使用swap,必须和限制内存一块使用
如果限制了内存是512,swap是1G,那么容器实际上能够使用swap空间为1g-512m=512M
例如: -m 300m --memory-swap=1g 的含义为:容器可以使用300M 的物理内存,并且可以使用700M (1G - 300M)的swap。 设置为0或者不设置,则容器可以使用的 swap 大小为 -m 值的两倍。 如果 --memory-swap 的值和 -m 值相同,则容器不能使用swap。 如果 --memory-swap 值为 -1,它表示容器程序使用的内存受限,而可以使用的swap空间使用不受限制(宿主机有多少swap 容器就可以使用多少)。
总结:
如果不设置:-m 512m但是使用的swap的空间是-m的两倍
如果设置--memory-swap的值,和内存限制一样,容器就不能使用swap
-m 512m --memory-swap=1,内存受限制还是512M,但是容器使用swap空间不再受限制
磁盘i/o配额(了解):
读:
写:
限制容器在磁盘上的读速度:
--device-read-bps:限制某个设备上的读速度bps(数据量),单位可以是kb、mb(M)或者gb。
例:docker run -itd --name test11 --device-read-bps /dev/sda:1M centos:7 /bin/bash
限制容器在磁盘上的写速度:
--device-write-bps : 限制某个设备上的写速度bps(数据量),单位可以是kb、mb(M)或者gb。
例:docker run -itd --name test12 --device-write-bps /dev/sda:1mb centos:7 /bin/bash
演示:
#创建容器,并限制写速度
docker run -it --name test10 --device-write-bps /dev/sda:1mb centos:7 /bin/bash
dd if=/dev/zero of=test.out bs=1M count=10 oflag=direct #添加oflag参数以规避掉文件系统cache
Oflag=direct
在使用dd获取空字符集是从文件系统的缓存当中输入,速度是比较快的,禁用文件系统缓存,直接把数据写入磁盘,可以更真实的测试设备的性能,模拟直接写入物理设备的情况
限制容器读取的次数:
docker run -itd --name test4 --device-read-iops /dev/sda:100 centos:7 /bin/bash
限制读取操作,每秒100次
限制容器写入的次数:
docker run -itd --name test5 --device-write-iops /dev/sda:50 centos:7 /bin/bash
限制写入的操作,每秒50次
如何清理docker占用的磁盘空间
docker system prune -a
删除已经停止的容器
删除所有未被使用的网络设备
删除创建容器时的缓存,以及无用的数据卷,都是这条命令
总结今天的内容:
怎么对容器使用CPU进行限制(一定要会):
容器占用CPU的时间
容器占用CPU的权重
容器绑定CPU
容器对宿主机的内存使用限制:
-m
Swap:必须和限制内存一块使用
-m 512m --memory-wap=1g
磁盘i/o限制,了解即可
清理docker缓存
相关文章:

Docker的资源控制
Docker的资源控制: 对容器使用宿主机的资源进行限制,Docker 通过 Cgroup 来控制容器使用的资源配额,包括 CPU 内存 磁盘i/o Docker 使用Linux自带的功能cgroup,Cgroup 是 ControlGroups 的缩写 C crontrol groups是Linux内核…...

SpringBoot 自动装配原理详解
什么是 SpringBoot 自动装配? 我们现在提到自动装配的时候,一般会和 Spring Boot 联系在一起。但是,实际上 Spring Framework 早就实现了这个功能。Spring Boot 只是在其基础上,通过 SPI 的方式,做了进一步优化。 Spr…...

深度探索Linux操作系统 —— 构建initramfs
系列文章目录 深度探索Linux操作系统 —— 编译过程分析 深度探索Linux操作系统 —— 构建工具链 深度探索Linux操作系统 —— 构建内核 深度探索Linux操作系统 —— 构建initramfs 文章目录 系列文章目录前言一、为什么需要 initramfs二、initramfs原理探讨三、构建基本的init…...

使用cmake构建Qt6.6的qt quick项目,添加应用程序图标的方法
最近,在学习qt的过程中,遇到了一个难题,不知道如何给应用程序添加图标,按照网上的方法也没有成功,后来终于自己摸索出了一个方法。 1、准备一张图片作为图标,保存到工程目录下面,如logo.ico。 …...

VUE宝典之vue-dialog使用
文章目录 🍁vue-dialog概述🍁vue-dialog项目引入🍂安装Vue Dialog插件🍂引入Vue Dialog插件🍂引入 Vue Dialog 组件🍂在组件中使用Vue Dialog 🍁vue-dialog代码示例🍁vue-dialog父子…...

AWTK 串口屏开发(1) - Hello World
1. 功能 这个例子很简单,制作一个调节温度的界面。在这里例子中,模型(也就是数据)里只有一个温度变量: 变量名数据类型功能说明温度整数温度。范围 (0-100) 摄氏度 2. 创建项目 从模板创建项目,将 hmi/…...

鸿蒙Harmony开发初探
一、背景 9月25日华为秋季全场景新品发布会,余承东宣布鸿蒙HarmonyOS NEXT蓄势待发,不再支持安卓应用。网易有道、同程旅行、美团、国航、阿里等公司先后宣布启动鸿蒙原生应用开发工作。 二、鸿蒙Next介绍 HarmonyOS是一款面向万物互联,全…...

【MySQL语言汇总[DQL,DDL,DCL,DML]以及使用python连接数据库进行其他操作】
MySQL语言汇总[DQL,DDL,DCL,DML] SQL分类1.DDL:操作数据库,表创建 删除 查询 修改对数据库的操作对表的操作复制表(重点)!!!!! 2.DML:增删改表中数据3.DQL:查询表中的记录…...

解决方案:Mac 安装 pip
python3 --version 通过以下命令来下载pip: curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py curl命令允许您指定一个直接下载链接。使用-o选项来设置下载文件的名称。 通过运行以下命令安装下载的包: python3 get-pip.py...

【恋上数据结构】前缀树 Tire 学习笔记
Tire 需求分析 如何判断一堆不重复的字符串是否以某个前缀开头? 用 Set\Map 存储字符串(不重复)遍历所有字符串进行判断缺点:时间复杂度 O(n) 有没有更优的数据结构实现前缀搜索? Tire(和 Tree 同音&a…...

2023五岳杯量子计算挑战赛数学建模思路+模型+代码+论文
赛题思路:12月6日晚开赛后第一时间更新,获取见文末名片 “五岳杯”量子计算挑战赛,是国内专业的量子计算大赛,也是玻色量子首次联合移动云、南方科技大学共同发起的一场“企校联名”的国际竞赛,旨在深度融合“量子计算…...

Angular中的单向和双向数据绑定
1、单向数据绑定: 单向数据绑定是指数据从组件流向视图或从视图流向组件,但数据的流动是单向的。 在Angular中,主要有以下两种形式的单向数据绑定: 从组件到视图(插值表达式): 使用插值表达式…...

【Vue】vue整合element
上一篇: vue项目的创建 https://blog.csdn.net/m0_67930426/article/details/134816155 目录 整合过程 使用: 整合过程 项目创建完之后,使用编译器打开项目 在控制器里输入如下命令 npm install element-ui 如图表示安装完毕 然后在…...

HarmonyOS应用开发者高级认证考试答案
一、判断题 云函数打包完成后,需要到AppGallery Connect创建对应函数的触发器才可以在端侧中调用(错)在column和Row容器组件中,aligntems用于设置子组件在主轴方向上的对齐格式,justifycontent用于设置子组件在交叉轴…...

6、Broker消息处理流程(六)
前面分析完Broker启动会启动RemotingServer服务同时会注册Processor处理器,接着分析Producer进行消息的发送,当Producer发送完消息后就得到Broker去接收Producer发送的消息了。 Producer发送给Broker消息时候,发送的请求code为SEND_MESSAGE(这…...

Clean 架构下的现代 Android 架构指南
Clean 架构下的现代 Android 架构指南 Clean 架构是 Uncle Bob 提出的一种软件架构,Bob 大叔同时也是 SOLID 原则的命名者。 Clean 架构图如下: 这张图描述的是整个软件系统的架构,而不是单体软件,其中至少包括服务端以及客户端…...

代码随想录算法训练营第四十六天| 139 单词拆分
目录 139 单词拆分 139 单词拆分 class Solution { public:bool wordBreak(string s, vector<string>& wordDict) {vector<bool>dp(s.size() 1);//长度为i的字符串时能否成功拆分unordered_set<string>set(wordDict.begin(),wordDict.end());dp[0] t…...

IEEE期刊论文模板
一、模板下载 1、登陆IEEE作者中心Author Center 地址:Publish with IEEE Journals - IEEE Author Center Journals 2、点击“Download a template” 3、在弹出的模板下载页面点击IEEE模板选择器“IEEE Template Selector” 4、在弹出的模板选择器页面点击“Tran…...

上位机与PLC:ModbusTCP通讯之数据类型转换
前请提要: 从PLC读取的数值,不管是读正负整数还是正负浮点数,读取过来后都会变成UInt16,也就是Ushort类型 一、ushort(UInt16)转成 Int32 源代码方法: //ushort类型转Int32类型的方法private int ushortToInt32(ushort[] date, int start){//先进行判断,长度是否正确…...

界面控件DevExpress WPF导航组件,助力升级应用程序用户体验!(上)
DevExpress WPF的Side Navigation(侧边导航)、TreeView、导航面板组件能帮助开发者在WPF项目中添加Windows样式的资源管理器栏或Outlook NavBar(导航栏),DevExpress WPF NavBar和Accordion控件包含了许多开发人员友好的…...

联合基于信息论的安全和隐蔽通信的框架
这个标题很帅 abstractintroductionsystem modelPROPOSED JOINT OPTIMIZATION OF ITS AND COVERT TRANSMISSION RATE信息论安全 (ITS)隐蔽通信需要(CC)Joint Information-Theoretic Secrecy and Covert Communication in the Presence of an Untrusted User and Warden 202…...

行业地位失守,业绩持续失速,科沃斯的故事不好讲
特劳特曾在《定位》一书中提到,为了在容量有限的消费者心智中占据品类,品牌最好的差异化就是成为第一,做品类领导者或开创者,销量遥遥领先;其次分化品类,做到细分品类的唯一,即细分品类的第一。…...

蓝桥杯:货物摆放--因数存到数组里的技巧--减少运算量的方法
小蓝有一个超大的仓库,可以摆放很多货物。 现在,小蓝有 n 箱货物要摆放在仓库,每箱货物都是规则的正方体。小蓝规定了长、宽、高三个互相垂直的方向,每箱货物的边都必须严格平行于长、宽、高。 小蓝希望所有的货物最终摆成一个大…...

我的创作纪念日——一年
机缘 初心始于对技术的热爱和分享知识的渴望。最初,我在一次练习中遇到了一些问题,通过解决这些问题并将解决方案记录下来,我意识到分享经验对自己和他人都非常有价值。于是,我开始在博客和社交平台上记录日常学习过程、撰写技术…...

Windows server 部署iSCSI共享磁盘搭建故障转移群集
在域环境下,在域控制器中配置iSCSI服务,配置共享网络磁盘,在节点服务器使用共享磁盘,并在节点服务器中搭建故障转移群集,实现故障转移 环境准备 准备3台服务器,配置都是8g2核,50g硬盘…...

2023年山东省职业院校技能大赛信息安全管理与评估二三阶段样题
2023年山东省职业院校技能大赛信息安全管理与评估二三阶段 样题 第二阶段 模块二 网络安全事件响应、数字取证调查、应用程序安全 一、竞赛内容 Geek极安云科专注技能竞赛技术提升,基于各大赛项提供全面的系统性培训,拥有完整的培训体系。团队拥有曾…...

数据结构——栈与栈排序
栈的特性 栈是一种遵循后进先出(LIFO)原则的数据结构。其基本操作包括: push:将元素添加到栈顶。pop:移除栈顶元素。peek:查看栈顶元素,但不移除。 栈排序的原理 栈排序的核心是使用两个栈&…...

Java Web应用小案例 - 实现用户登录功能
文章目录 一、使用纯JSP方式实现用户登录功能(一)项目概述(二)实现步骤1、创建Web项目2、创建登录页面 二、使用JSPServlet方式实现用户登录功能三、使用JSPServletDB方式实现用户登录功能 一、使用纯JSP方式实现用户登录功能 &a…...

Excel——多列合并成一列的4种方法
Excel怎么将多列内容合并成一列? 怎么将多个单元格的内容连接起来放在一个单元格里? 比如下图,要将B、C、D列的内容,合并成E列那样,该怎么做呢? △图1 本文中,高潜老师将给大家介绍 4种 将多…...

Vue笔记(四)路由
路由(Vue Router) 用Vue Vue Router创建单页面应用非常简单。当加入Vue Router时,需要将组件映射到路由上,让Vue知道在哪里渲染它们。 路由基本例子 <!-- 引入Vue 和 router --><script src"https://unpkg.com/vu…...