CPU资源控制

一、CPU资源控制定义

  cgroups(control groups)是一个非常强大的linux内核工具,他不仅可以限制被namespace隔离起来的资源, 还可以为资源设置权重计算使用量操控进程启停等等。

  所以cgroups(control groups)实现了对资源的配额和度量

二、cgroups四大功能

  • 资源限制:可以对任务使用的资源总额进行限制
  • 资源统计:可以统计系统的资源使用量,如cpu时长,内存用量等
  • 优先级分配:通过分配的cpu时间片数量以及磁盘IO带宽大小,实际上相当于控制了任务运行优先级
  • 任务控制:cgroup可以对任务执行挂起、恢复等操作

三、设置CPU使用率上限

  Linux通过CFS(Completely Fair Scheduler,完全公平调度器)来调度各个进程对CPU的使用。CFS默认的调度周期是100ms。
  设置每个容器进程的调度周期,以及在这个周期内各个容器最多能使用多少 CPU 时间。

-cpu-period:设置调度周期

-cpu-quota:设置每个周期内各个容器最多可以用多少CPU时间

注意:周期的有效范围是 1ms~1s,对应的--cpu-period的数值范围是 1000~1000000,即周期100毫秒 ,而容器的 CPU 配额必须不小于 1ms,即 --cpu-quota 的值必须 >= 1000。

  3.1 设置50%的比例分配CPU使用时间上限

docker run -itd --name xxx centos:7 /bin/bash

docker ps -a

cd /sys/fs/cgroup/cpu/docker/容器ID

cat cpu.cfs_quota_us

cat cpu.cfs_period_us

echo 50000 > cpu.cfs_quota_us

cat cpu.cfs_quota_us

cpu.cfs_period_us:cpu分配的周期(微秒,所以文件名中用 us 表示),默认为100000。


cpu.cfs_quota_us:表示该cgroups限制占用的时间(微秒),默认为-1,表示不限制。 

  3.2进行压力测试

docker exec -it 容器ID /bin/bash

vi haha.sh

chmod +x haha.sh

./haha.txt

四、设置CPU资源占用比(设置多个容器时才有效)

  4.1 创建两个容器

docker run -itd --name xxx --cpu-shares 512 centos:7

docker run -itd --name xxx --cpu-shares 1024 centos:7

  4.2 分别进入容器内进行压力测试

  4.2.1 在容器一内进行压力测试

docker ps

docker exec -it 容器ID /bin/bash

yum install -y epel-release

yum install -y stress

docker exec -it 容器ID /bin/bash

stress -c 4

  4.2.2 在容器二内进行压力测试

docker ps

docker exec -it 容器ID /bin/bash

yum install -y epel-release

yum install -y stress

docker exec -it 容器ID /bin/bash

stress -c 4

   4.3 查看容器运行状态

docker stats

五、设置容器绑定指定的CPU

  5.1 先分配虚拟机4个CPU核数

docker run -itd --name hh2 --cpuset-cpus 1 centos:7 /bin/bash

docker ps

docker exec -it 容器ID /bin/bash

yum install -y epel-release

yum install -y stress

docker stats

六、对内存使用的限制

-m选项:限制容器可以使用的最大内存

docker run -itd --name xxx -m 512m centos:7 /bin/bash

docker stats

如果--memory-swap设置为0或者不设置,则容器可以使用的swap大小为-m值的两倍。


如果--memory-swap的值和-m值相同,则容器不能使用 swap。


如果--memory-swap值为-1,它表示容器程序使用的内存受限,而可以使用的swap空间使用不受限制(宿主机有多少 swap 容器就可以使用多少)。
 

七、对磁盘IO配额控制(blkio)的限制

--device-read-bps:限制某个设备上的读速度bps(数据量),单位可以是kb、mb(M)或者gb。
例:docker run -itd --name test9 --device-read-bps /dev/sda:1M  centos:7 /bin/bash

--device-write-bps: 限制某个设备上的写速度bps(数据量),单位可以是kb、mb(M)或者gb。
例:docker run -itd --name test10 --device-write-bps /dev/sda:1mb centos:7 /bin/bash

--device-read-iops:限制读某个设备的iops(次数)
 
--device-write-iops:限制写入某个设备的iops(次数)

  7.1 操作

    创建容器并限制写的速度,然后通过dd来验证写速度,最后用docker来清理空间

    注意:图中的验证模式,版本不兼容

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

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

相关文章

Netty学习——实战篇5 Netty 心跳监测/WebSocket长连接编程 备份

1 心跳监测 MyServer.java public class MyServer {public static void main(String[] args) {NioEventLoopGroup bossGroup new NioEventLoopGroup(1);NioEventLoopGroup workerGroup new NioEventLoopGroup();try {ServerBootstrap serverBootstrap new ServerBootstrap…

学习Docker笔记

在23号刚刚学完新版本的docker还想说回去继续学习老版本的springcloud课程里面的docker 结果一看黑马首页新版本课程出了,绷不住了。以下是我学习新版本docker的笔记,记录了我学习过程遇到的各种bug和解决,也参考了黑马老师的笔记&#xff1a…

TDengine高可用探讨

提到数据库,不可避免的要考虑高可用HA(High Availability)。但是很多人对高可用的理解并不是很透彻。 要搞清高可用需要回答以下几个问题: 什么是高可用?为什么需要高可用?高可用需要达到什么样的目标&am…

Unity射线实现碰撞检测(不需要rigbody组件)

使用physic.CapsulCast(); 前面3个参数生成一个胶囊体, 向着发射方向,发射出一串的胶囊(没有最大距离) 有最大距离,可以节约性能开销。 physic.CapsulCast(&#xff0…

easypoi 导出增加自增序列

要求:使用easypoi导出Excel的时候,要求增加”序号“列,从1开始增加。这列与业务数据无关,只是展示用,便于定位。如下图所示 实现方式:Java对象新增一列,注意name "序号", format &…

Linux-缓冲区(简单理解)

1. 缓冲区是什么 缓冲区就是一段内存空间。 2. 为什么要有缓冲区 IO写入有两种: 写透模式(WT) 成本高,效率低写回模式(WB) 成本低,效率高 写透模式:每次的文件写入都要立即刷新…

使用ClickHouse和Terraform进行CI/CD

本文字数:11047;估计阅读时间:28 分钟 审校:庄晓东(魏庄) 本文在公众号【ClickHouseInc】首发 简介 在 ClickHouse,我们致力于以 API 为先的开发方式来构建 ClickHouse Cloud。用户通过用户界面…

如何快速学习盲打键盘的指法

学习盲打键盘的指法需要一定的时间和练习,但是以下几个方法可以帮助你加快学习的速度: 掌握正确的手位:了解标准的键盘布局以及手指应该放置的位置是学习盲打的第一步。在QWERTY键盘上,你的左手应该放在ASDF键上,右手应…

人工智能入门(一):基于Pytorch的手写数字识别模型

前言: 因为还在上学,时间不太够用,很多内容写到后面心有余力不足,未来有时间我会慢慢补充。人工智能的知识涉猎范围广又杂乱无章,啃书或上课学到的知识往往很早就过时了或者离实际的项目无关。所以,我很希…

VS调试、debug和release、栈区底层简单介绍、const 修饰指针变量介绍

文章目录 前言一、调试二、debug和release三、调试需要多用,多熟悉四、栈区底层简单介绍五、优秀的代码:常见的coding技巧: 六、const 修饰指针变量1. const 出现在 * 左边2. const 出现在 * 右边 七、strcpy函数的仿写1.版本12. 版本23. 版本34. 版本4 …

Andorid进程间通信之 UNIX SOCKET

1,什么是UNIX SOCKET UNIX SOCKET,域套接字,UNIX SOCKET可用于同一台设备进程间通信,它不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序列号应答等,只需要将数据从一个进程复制到另一个进程&…

高精度加法及乘法

目录 字符串的高精度加法 为什么需要高精度加法? 怎么进行高精度加法? 链表的高精度加法 翻转链表(带虚拟头节点) 字符串的高精度乘法 字符串的高精度加法 大数加法_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.co…

linux下查看前10最耗内存的进程

lunux查找占用内存前10的进程 1、使用Top命令查询进程 输入 top 命令,然后按下大写M按照内存MEM排序,按下大写P按照CPU排序。 2、查询占用CPU最高的前10个进程 ps aux|head -1;ps aux|grep -v PID|sort -rn -k 3|head 3、查询占用内存最大的前10个进程…

2024年度西安市创新联合体备案申报条件时间要求须知

一、申报条件 组建市级创新联合体需具备牵头单位、成员单位、组建协议、首席科学家等四个条件。 (一)牵头单位 1.牵头单位应为在西安市注册登记的省市产业链龙头骨干企业,重点支持市级重点产业链“链主”企业; 2.牵头单位一般为1家。 (二)成员单位 1.成员单位…

excel 按照姓名日期年月分组求和

excel 需要按照 姓名 日期的年份进行金额求和统计,采用sumifs 进行统计 注意:sumifs 不支持 合并列拆分计算,合并列只会计算一个值 表格数据大概如下:(sheet) ABC姓名日期金额A2023/01/01500A2023/01/151500B2023/01/01200B202…

python 调试 c++源码

1. gdb常用调试命令概览和说明 2. 编译c库设置Debug模式 cmake设置debug 在CMake中设置debug模式通常意味着启用调试信息和优化。以下是一个简单的CMakeLists.txt文件示例,展示了如何设置项目以便在Debug模式下构建: cmake_minimum_required(VERSION 3…

cad中快速计算多个矩形面积的方法

1、输入命令reg,选中矩形创建面域 2、输入命令uni,选中刚刚创建的面域,组合成一个面域 3、输入命令:LI ,选中面域,即可查看面积和周长 需注意的一点,开始创建的矩形或者多段线要在一个面内,就是…

[沉浸式翻译]最好的网页翻译工具

沉浸式翻译 沉浸式翻译是一种翻译工具,它提供了多种平台的支持,包括桌面端的Edge、Chrome、Firefox、Safari以及移动端的iOS和Android。用户可以在这些平台上安装沉浸式翻译的插件,以便在浏览网页时获得翻译服务。 浏览器的安装教程 详细的…

WEB网站服务器安全漏洞扫描环境搭建及漏洞工具扫描

一、适用环境 1、企业自建有门户网站; 2、使用Struts框架的WEB网站; 3、网站服务器涉及有数据库之类的项目,如:微信登录、手机登录、充值、收费等。 4、使用安卓版、苹果版、电脑版结合的缴费类网站平台。 5、方便但需提高安全性…

排列对称串

Description:很多字串,有些是对称的,有些是不对称的,请将那些对称的字事按从小到大的顺序输出,字事先以长度论大小,如果长度相同,再以ASCI码值为大小标准 Input.输入数据中含有一些字串(1≤串长≤256)。 #…