Cgroup 资源配置方法

本文介绍了进程与线程的关系,强调进程是资源分配的最小单位,线程是执行的最小单位。重点讲解了 Docker 中 Cgroup 的使用,通过 Cgroup 可以限制容器的 CPU、内存、Block IO 等资源,如通过--cpu-shares设置CPU份额,--cpu-period和--cpu-quota限制CPU周期,--memory和--memory-swap设置内存限额,以及--blkio-weight调整IO优先级等。此外,还介绍了如何通过 stress 工具测试这些配置的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、进程和线程

1.进程

  • 开发写的代码我们称为程序,那么将开发的代码运行起来。我们称为进程。

  • 明白点: 当我们运行一个程序,那么我们将运行的程序叫进程。

  • 进程是申请一块内存空间,将数据放到内存空间中去, 是申请数据的过程是最小的资源管理单元

  • 进程是线程的容器

程序与进程的区别

  • 程序是数据和指令的集合, 是一个静态的概念, 就是一堆代码, 可以长时间的保存在系统中
  • 进程是程序运行的过程, 是一个动态的概念, 进程存在着生命周期, 也就是说进程会随着程序的终止而销毁, 不会永久存在系统中

进程之间交互

  • 进程之间通过 TCP/IP 端口实现

2.线程

什么是线程

  • 线程是操作系统能够进行运算调度的最小单位
  • 它被包含在进程之中,是进程中的实际运作单位
  • 一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
  • 是进程的一条流水线, 只用来执行程序,而不涉及到申请资源, 是程序的实际执行者最小的执行单元

线程之间交互

  • 多个线程共享同一块内存,通过共享的内存空间来进行交互

3.进程与线程的关系

进程是线程的容器

例子:

  • 我们打开一个聊天软件,这就是开启了一个进程;当我们在软件里面打开一些功能,比如空间, 扫一扫, 设置…,这些操作就是线程;所以可以说 “进程” 包含 “线程”, “线程” 是 “进程” 的子集

工厂流水线例子:

mark

mark

4.总结

  • 进程:指在系统中正在运行的一个应用程序;程序一旦运行就是进程;进程——资源分配的最小单位。
  • 线程:系统分配处理器时间资源的基本单元,或者说进程之内独立执行的一个单元执行流。线程——程序执行的最小单位。
  • 进程要分配一大部分的内存,而线程只需要分配一部分栈就可以了.
  • 一个程序至少有一个进程,一个进程至少有一个线程.
  • 一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行.

二、Cgroup 资源配置方法

2.1 Cgroup概述

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

  • Cgroup 是 Control Groups 的缩写,是Linux 内核提供的一种可以限制、记录、隔离进程组所使用的物理资源(如 CPU、内存、磁盘 IO 等等)的机制,被 LXC、docker 等很多项目用于实现进程资源控制。
  • Cgroup 本身是提供将进程进行分组化管理的功能和接口的基础结构,I/O 或内存的分配控制等具体的资源管理是通过该功能来实现的。

这些具体的资源 管理功能称为 Cgroup 子系统,有以下几大子系统实现:

子系统 功能
blkio 设置限制每个块设备的输入输出控制。例如:磁盘,光盘以及 usb 等等
CPU 使用调度程序为 cgroup 任务提供 CPU 的访问
cpuacct 产生 cgroup 任务的 CPU 资源报告
cpuset 如果是多核心的 CPU,这个子系统会为 cgroup 任务分配单独的 CPU 和 内存
devices 允许或拒绝 cgroup 任务对设备的访问
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值