Docker进阶之Cgroup介绍

本文深入探讨了Docker中Cgroup的使用,详细介绍了如何通过Cgroup进行CPU优先级、周期限制、核心控制和内存、磁盘I/O的限制,以实现对容器资源的有效管理和控制。
摘要由CSDN通过智能技术生成

Docker进阶之Cgroup介绍

文章目录

前言

一、Cgroup介绍

二、CPU控制

1.1:CPU优先级限制
1.2:CPU周期限制
1.3:CPU Core 控制
1.4:CPU 配额控制参数的混合使用

三、内存控制

四、磁盘控制

4.1:Blocak IO 的限制
4.2:bps 和 iops 的限制

前言

CGroup 是 Control Groups 的缩写,是 Linux 内核提供的一种可以限制、记录、隔离进程组 (process groups) 所使用的物力资源 (如 cpu memory i/o 等等) 的机制。2007 年进入 Linux 2.6.24 内核,CGroups 不是全新创造的,它将进程管理从 cpuset 中剥离出来,作者是 Google 的 Paul Menage。CGroups 也是 LXC 为实现虚拟化所使用的资源管理手段。

一、Cgroup介绍

Linux CGroup全称Linux Control Group, 是Linux内核的一个功能,用来限制,控制与分离一个进程组群的资源(如CPU、内存、磁盘输入输出等)。这个项目最早是由Google的工程师在2006年发起(主要是Paul Menage和Rohit Seth),最早的名称为进程容器(process containers)。在2007年时,因为在Linux内核中,容器(container)这个名词太过广泛,为避免混乱,被重命名为cgroup,并且被合并到2.6.24版的内核中去。然后,其它开始了他的发展。

Linux Cgroup 可为系统中所运行任务(进程)的用户定义组群分配资源 — 比如 CPU 时间、系统内存、网络带宽或者这些资源的组合。可以监控您配置的 cgroup,拒绝 cgroup 访问某些资源,甚至在运行的系统中动态配置 cgroup。

Docker通过 Cgroup 来控制容器使用的资源配额,包括 CPU、内存、磁盘三大方面, 基本覆盖了常见的资源配额和使用量控制。

Cgroup 本身是提供将进程进行分组化管理的功能和接口的基础结构,I/O 或内存的分配控制等具体的资源管理是通过该功能来实现的。
这些具体的资源 管理功能称为 Cgroup 子系统,有以下几大子系统实现:

  • blkio:设置限制每个块设备的输入输出控制。例如:磁盘,光盘以及 usb 等等。
  • CPU:使用调度程序为 cgroup 任务提供 CPU 的访问。
  • cpuacct:产生 cgroup 任务的 CPU 资源报告。
  • cpuset:如果是多核心的 CPU,这个子系统会为 cgroup 任务分配单独的 CPU 和 内存。
  • devices:允许或拒绝 cgroup 任务对设备的访问。
  • freezer:暂停和恢复 cgroup 任务。
  • memory:设置每个 cgroup 的内存限制以及产生内存资源报告。
  • net_cls:标记每个网络包以供 cgroup 方便使用。
  • ns:命名空间子系统。
  • perf_event:增加了对每个 group 的监测跟踪的能力,可以监测属于某个特定的 group 的所有线程以及运行在特定CPU上的线程。

下面我们就通过stress测试工具来具体测试下Cgroup的控制情况

二、CPU控制

1.1:CPU优先级限制
  • 安装stress压力测试软件来测试负载情况
[root@cgroup ~]# mkdir /opt/stres
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值