当前位置: 首页 > news >正文

Docker容器资源控制--CGroup

目录

一、CGroups的含义

二、CGroup的功能和特点

1、CGroups的主要功能

2、CGroups的特点

三、实训

1、利用CGroups实现CPU资源控制

2、利用CGroups实现内存资源控制

3、利用CGroups实现磁盘I/O控制


一、CGroups的含义

        CGroups是Linux内核提供的一 种可以限制单个进程或者多个进程所使用资源的机制,可以对 CPU、内存和磁盘I/O等资源实现检制。Docker可使用CGroups提倡的资源限制功能来完成CPU、内存等部分的资源控制。

        CGroups提供了对进程进行分组化管理的功能和接口的基础结构,内存或磁盘I/O的分配控制等具体的资源管理功能是通过对进程进行分组化管理来实现的。这些具体的资源管理功能称为CGroups子系统或控制器,主要通过以下九大子系统实现。

(1)blkio:为每个块设备设置I/O限制,如磁盘、光盘和USB等设备。

(2) cpu:使用调度程序提供对CPU的CGroup任务访问。

(3) cpuacct:自动生成CGroup任务的CPU资源使用报告。

(4)cpuset:为CGroup中的任务分配独立CPU (在多核系统中)和内存节点。

(5) devices:允许或拒绝CGroup任务访问设备。

(6) freezer: 暂停和恢复CGroup任务。

(7)memory:设置每个CGroup任务使用的内存限制,并自动生成内存资源使用报告。

(8)net_ clsI: 标记每个网络包以供CGroup任务使用。

(9)ns:命名空间子系统。(namesparce)

二、CGroup的功能和特点

1、CGroups的主要功能

(1) CGroups可实现对进程组使用的资源总额的限制。例如,使用memory子系统为进程组设定一个内存使用上限, 当进程组使用的内存达到限额后再申请内存时,会触发OOM(OutOfMemory)警告。

(2)CGroups可实现对进程组的优先级控制。通过分配CPU时间片数量及硬盘I/O、带宽大小可控制进程的优先级。例如,使用CPU子系统为某个进程组分配特定cpu share。

(3) CGroups 可实现对进程组使用的资源数量的记录。例如,使用cpuacct子系统可记录某个进程组使用的CPU时间。

(4) CGroups 可实现对进程组的隔离和控制。例如,使用ns子系统对不同的进程组使用不同的namespace,以达到隔离的目的,使用不同的进程组实现各自的进程、网络、文件系统挂载空间,也可使用feezer子系统将进程组暂停和恢复。

2、CGroups的特点

(1)控制族群:控制族群是组按照某种标准划分的进程。CGroups中的资源控制都是以控制族群为单位实现的。一个进程可以加入某个控制族群中,也可以从一个进程组迁移到另一个控制族群。一个进程组的进程可以使用CGroups以控制族群为单位分配资源,并受到CGroups以控制族群为单位设定的限制。

(2)层级:控制族群可以组织为hierarchical 的形式,即一棵控制族群树。子控制组自动继承父节点的特定属性,子控制组还可以有自己特定的属性。

(3)子系统:一个子系统就是一个资源控制器, 如memory 子系统是一个内存控制器。子系统必须附加到一个层级上才能起作用。个子 系统附加到某个层级以后, 这个层级上的所有控制族群都受到这个子系统的控制。

三、实训

1、利用CGroups实现CPU资源控制

(1)利用busybox镜像生成容器,设置容器调度的周期为5000,将容器在每个周期内的CPU配额设置为25000

[root@controller ~]# docker run -dit --name t1 --cpu-period 50000 --cpu-quota 25000 busybox:latest
da8f5d80873d6dc349e7aae44ef51571b7c530070b8600468aceaec9c20936ac

(2)利用busybox镜像生成容器。将容器绑定到CPU上执行,设置容器调度的周期和周期内的CPU配额为50000

[root@controller ~]# docker run -dit --name t2 --cpuset-cpus 0 --cpu-period 50000 --cpu-quota 50000 busybox
8bc68f70004e051b344948717d82acba9e9c1a0f5a15f911fa60394618436e12

(3)利用busybox镜像生成两个容器,设置第二个容器的CPU使用率是第一个容器的两倍

[root@controller ~]# docker run  -dit --name t3 --cpu-quota 1000 busybox
4908f5f5846fc5f269e5a5c7ebf82a4bf53a6f4dacf47753bbbfb2579fccbf88
[root@controller ~]# docker run  -dit --name t4 --cpu-quota 2000 busybox
71f56247679674f65c888562f3ea8f90f783a20e25a2a0f803bdb1ebef928aa4

2、利用CGroups实现内存资源控制

(1)利用busybox镜像生成容器,设置容器使用的最大内存为256MB

[root@controller ~]# docker run -dit --name  t5 --memory 256MB busybox
3349f1259d61026be4353a6d9460a5e4f43bd960451547d1c4dd383df292fadc

3、利用CGroups实现磁盘I/O控制

(1)利用busybox镜像生成容器,设置第二个容器读这些磁盘的带宽是第一个容器两倍

[root@controller ~]# docker run -dit --name t6 --device-read-bps /dev/sda1:1mb  --device-write-bps /dev/sda1:1mb busybox 
b55bce694ef2a24f029ac9c13afe28510085db2751162d876de1b97e210c1066
[root@controller ~]# docker run -dit --name t7 --device-read-bps /dev/sda1:2mb  --device-write-bps /dev/sda1:2mb busybo
79d2920ce67a8c9956d499cff05fc09bee19ab412e419817ea7f220cd6cfc45c

(2)利用busybox镜像生成容器,设置容器读写速度为30MB/s

[root@controller ~]# docker run -dit --name t8 --device-write-bps /dev/sd2:30mb busybox
70ce52a12add7635fcf082311f5cd719ade0036c0a716ced275a83c4802ea4a2

相关文章:

  • 强化学习之基于无模型的算法之时序差分法
  • Python 数据智能实战 (2):LLM 工具箱搭建 - API/库实操与高效 Prompt 设计入门
  • react-新建项目复用node_modules
  • uni-app - 微信小程序中,使用 navigateTo 传递非常大的数字传参精度丢失的问题
  • 1.6 点云数据获取方式——单目相机多视图几何
  • SpringBoot获取用户信息常见问题(密码屏蔽、驼峰命名和下划线命名的自动转换)
  • 每日算法-250429
  • selenium IDE脚本如何转换为可运行的selenium webdriver java程序
  • leetcode 21. 合并两个有序链表(c++解法+相关知识点复习)
  • 如何用vivado导出pin delay
  • DevExpressWinForms-TreeList-设置不可编辑
  • AlDente Pro for Mac电脑 充电限制保护工具 安装教程【简单,轻松上手】
  • Android学习总结之Bitmap篇
  • 单片机-89C51部分:8、定时器
  • Leetcode 3534. Path Existence Queries in a Graph II
  • 每日一道leetcode(不会做学习版,多学一题)
  • 【Redis】缓存|缓存的更新策略|内存淘汰策略|缓存预热、缓存穿透、缓存雪崩和缓存击穿
  • chatshare.xyz激活码使用说明和渠道指南!
  • JavaScript 中深拷贝浅拷贝的区别?如何实现一个深拷贝?
  • mybatis传递多个不同类型的参数到mapper xml文件
  • 国泰海通合并后首份业绩报告出炉:一季度净利润增逾391%
  • 日趋活跃!2024年我国数据生产总量同比增长25%
  • 保利发展去年净利润约50亿元,在手现金1342亿元
  • 开门红背后的韧性密码:上海八大企业的“反脆弱”与“真功夫”
  • 四川省社科联期刊:不建议在读硕士、博士将导师挂名为第一作者
  • 央行副行长谈美债和美元波动:单一市场、单一资产的变动,对外储影响总体有限