docker容器CPU共享比例——通过--cpu-shares选项设置容器按比例共享CPU资源(弹性)

2023-10-30

  • 多容器任务运行时,很难计算CPU的使用率

命令中的–cpu-shares选项值不能保证可以获得1个vcpu或者多少GHz的CPU资源,仅仅只是一个弹性的加权值。

[root@10 ~]# docker run --name=con1 -itd --cpu-shares 1024 centos:stress /bin/bash
f66fe17649f5b08401348fea37f4b1b4454dc581341f451697172d09716cbc6a
[root@10 ~]# docker run --name=con2 -itd --cpu-shares 1024 centos:stress /bin/bash
a2150bc7a7f2e2491abb1679ffad744badb07652bd38803824e2ded8410e5ba2
[root@10 ~]# docker run --name=con3 -itd --cpu-shares 2048 centos:stress /bin/bash
ae249a8f18d01d0fa61e638e26c86271c961b7c203b10eb6f3dee45be571d0e3

如果有一个容器D需要更多CPU资源,则可以将其–cpu-shares的值设置为4096,那么ABCD的CPU资源比例变为1:1:2:4。

	默认情况下,每个docker容器的CPU份额都是1024。单独一个容器的份额是没有意义的。只有在同时运行多个容器时,容器的CPU加权的效果才能体现出来。
例如,两个容器A、B的CPU份额分别为1000和500,在CPU进行时间片分配的时候,容器A比容器B多一倍的机会获得CPU的时间片。
但分配的结果取决于当时主机和其他容器的运行状态,实际上也无法保证容器A一定能获得CPU时间片。
比如容器A的进程一直是空闲的那么容器B是可以获取比容器A更多的CPU时间片的。
极端情况下,比如说主机只运行了一个容器,即使它的CPU份额只有50,它也可以独占整个主机的CPU资源
	Cgroups只在容器分配ID额资源紧缺时,也就是说在需要对容器使用的资源进行限制时才会生效。
因此无法单纯根据某个容器的CPU份额来确定有多少CPU资源分配给它,资源分配结果取决于同时运行的其他cpu shares可以设置容器使用CPU的优先级

启动了两个容器及运行查看CPU使用百分比。

[root@10 ~]# docker run -tid --name cpu512 --cpu-shares 512 centos:stress stress -c 10
[root@10 ~]# docker run -tid --name cpu1024 --cpu-shares 1024 centos:stress stress -c 10
[root@10 ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
09730b873e46        centos:stress       "stress -c 10"      6 minutes ago       Up 6 minutes                            cpu1024
3ab12e09a79f        centos:stress       "stress -c 10"      6 minutes ago       Up 6 minutes                            cpu512
docker run -tid --name cpu512 --cpu-shares 512 centos:stress stress -c 10
docker run -tid --name cpu1024 --cpu-shares 1024 centos:stress stress -c 10
docker exec -it cpu512 /bin/bash

在这里插入图片描述

docker exec -it cpu1024 /bin/bash

在这里插入图片描述

开启了10个stress进程,目的是充分让系统资源变得紧张。只有这样竞争资源,设定的资源比例才可以显现出来。
如果只运行一个进程,会自动分配到空闲的CPU,这样比例就无法看出来。由于案例的环境不一样,
可能导致三个面两张图中占用CPU百分比会不同,但是从cpu share来看两个容器总比例一定会是1:2。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

docker容器CPU共享比例——通过--cpu-shares选项设置容器按比例共享CPU资源(弹性) 的相关文章

随机推荐

  • 密钥繁多难记难管理?认识高效密钥管理体系

    密钥设置是否只要够安全就能够重复使用 定期修改密钥到底有没有必要 密钥不幸遗失该如何恢复 素未谋面的双方 如何才能安全地进行密钥协商 上一论我们了解到 基于密码学的隐私保护方案 其有效性很大程度上取决于能否有效管理好密钥 这里 我们将进一步
  • Oracle创建临时表

    Oracle临时表 临时表是一种特殊的表 当需要对某一 也可以是多个 表中的一批数据进行反复的操作时 通过为这批数据创建一个临时表 可能会简化操作并且有可能提高效率 语法 CREATE GLOBAL TEMPORARY TABLE 临时表空
  • 【C语言】——调试技巧

    目录 编辑 前言 1 什么是Bug 2 什么是调试 2 1调试的基本步骤 2 2Release与Debug 3 常用快捷键 4 如何写出好的代码 4 1常见的coding技巧 assert const const修饰指针 前言 调试是每个程
  • linux系统下部署python自动化程序并配置Jenkins定时执行

    问题 自动化测试脚本代码咱已经有了 项目地址Python接口自动化框架 那么该如何部署到我们的服务器上 在服务器上定时自动执行呢 思路 首先 我们要统一环境 大家知道 python2和python3的语法和库有很多改动 而大多服务器自带的p
  • spring boot 使用@ConfigurationProperties

    有时候有这样子的情景 我们想把配置文件的信息 读取并自动封装成实体类 这样子 我们在代码里面使用就轻松方便多了 这时候 我们就可以使用 ConfigurationProperties 它可以把同类的配置信息自动封装成实体类 首先在配置文件里
  • XSS之xss-labs-level3

    文章目录 0x01 XSS Labs 0x02 实验工具 0x03 实验环境 0x04 实验步骤 0x05 实验分析 0x06 参考链接 0x01 XSS Labs XSS 跨站脚本攻击 是指恶意攻击者往Web页面里插入恶意Script代码
  • css伪元素实现选中效果【打勾效果】

    css伪元素实现选中效果 item border 1px solid 00a9ff position relative after position absolute content width 0px height 0px top 0px
  • 基于SECS协议开发的简明教程(7)

    接着前面6篇SECS GEM开发教程系列 基于SECS协议开发的简明教程 1 怎么搭建支持SECS工程 基于SECS协议开发的简明教程 2 怎么编辑交换数据的ID 基于SECS协议开发的简明教程 3 怎么收 发控制命令和数据消息 基于SEC
  • FA萤火虫算法求解二元四峰函数的简单例子(python代码)

    这个代码是应付智能优化的课的 代码有些地方有些重复啰嗦 请大家担待 可视化都是自己搞得 好多for循环打印 有些地方完全可以构造函数 大家有需要可以自己改一下 import random import numpy as np import
  • python--支持向量机应用小例

    以下内容笔记出自 跟着迪哥学python数据分析与机器学习实战 外加个人整理添加 仅供个人复习使用 SVM的分类效果 软间隔的作用 复杂算法容易造成过拟合 如何解决 核函数的作用 核函数的作用 可以实现非线性分类 import numpy
  • SpringBoot整合vue-admin-template实现登录

    vue admin template简介 前后端分离开发模式越来越受开发人员的喜爱 开源项目vue admin template 是一个后台前端解决方案 它基于 vue 和 element ui实现 更多详情请阅读vue template
  • java打印模板_怎样做一个word模板,用java调用打印功能

    1 首先新建一个空白文档 并另存为 Normal dotm Word2007及以后版本 Normal dot Word2003 2007版本 2 进行需要的模板设置 对字体 段落 页眉页脚 页面边距等进行设置 3 对字体 段落的设置 在空白
  • JSON格式化异常:JsonMappingException

    使用RestTemplate请求post json接口报错 Caused by org codehaus jackson map JsonMappingException Can not instantiate value of type
  • 【Linux命令详解

    文章标题 简介 一 参数列表 二 使用介绍 1 打包文件和目录 2 解包归档文件 3 压缩归档文件 4 列出归档文件内容 5 排除特定文件 6 保留文件权限和所有权 7 保留时间戳 8 增量备份 9 使用文件列表 10 压缩级别控制 总结
  • html iframe post,iframe实现跨域post请求的技术细节

    在最近的一个项目中 我打算在页面上实现这样一个功能 在网页上画出某种图形 上传到服务器后 返回一个src地址 这个地址可以用来分享到各种社交媒体 这个功能看似非常简单 但要实现它还需要注意各种小的细节 首先说下思路和技术要点 用canvas
  • vue下载所有格式的文件

    vue下载所有格式的文件 vue下载所有格式的文件需要先安装downloadjs插件 downloadjs官网 https github com rndme download 下载插件 npm install downloadjs vue引
  • STM32F103操作DS1302时钟芯片串口显示(标准库和HAL库)

    目录 DS1302的性能指标 DS1302的寄存器及片内RAM 标准库实现 HAL库实现 源码链接 单片机型号 STM32F103C8T6 在日常生活中 很多情况下会需要使用时间 单片机中虽然也是有定时器但并不能较为准备的实现计时功能 而且
  • SpringBoot + Poi-tl操作word,快速生成报表

    前段时间做了一个需求 需要快速生成一份数据报告 里面包含了文字 图片和数据报表 同时生成的图形数据也可以随意修改 之前想着使用Apache POI来进行实现 在翻阅一些资料后 发现poi tl更适合我们的业务 也更容易上手 于是对其进行了研
  • 什么是实例分割,与语义分割和目标检测有何不同?

    在计算机视觉领域 图像分割是一项重要任务 旨在将图像分割成具有语义或实例级别的不同区域 实例分割 语义分割和目标检测是图像分割中的三个关键概念 本文将介绍这些概念 并详细讨论它们之间的区别和特点 什么是目标检测 1 目标检测 目标检测是一种
  • docker容器CPU共享比例——通过--cpu-shares选项设置容器按比例共享CPU资源(弹性)

    多容器任务运行时 很难计算CPU的使用率 命令中的 cpu shares选项值不能保证可以获得1个vcpu或者多少GHz的CPU资源 仅仅只是一个弹性的加权值 root 10 docker run name con1 itd cpu sha