[Docker][cgroups]详细讲解


1.什么是cgroups

  • Control Groups:是一种用于**限制和隔离一个或一组进程对系统资源使用的机制**
    • 将一组进程组织在一个控制组中,为这个控制组分配特定的资源限制与优先级
      • 包括CPU资源、内存、网络等
    • 确保容器在共享主机上合理利用系统资源,避免资源竞争和过度使用
  • cgroups本质:内核附加在程序上的一系列钩子(hook),通过程序运行时对资源的调度触发相应的钩子以达到资源追踪和限制的目的

2.cgroups的用途

  • cgroups用途

    • Resource limitation:限制资源使用
      • 例:内存使用上限/CPU的使用限制
    • Prioritization:优先级控制
      • 例:CPU利用/磁盘IO吞吐
    • Accounting: 一些审计或一些统计
    • Control:挂起进程/恢复执行进程
  • cgroups可以控制的子系统

    子系统说明
    blkio对块设备的IO进行限制
    cpu下面自己哦CPU时间片的分配
    cpuacct生成cgroup中的任务占用CPU资源的报告,与CPU挂载在同一目录
    cpuset给cgroup中的任务分配独立的CPU(多处理器系统)和内存节点
    devices限制设备文件的创建,和对设备文件的读写
    freezer暂停/恢复cgroup中的任务
    memory对cgroup中的任务的可用内存进行限制,并自动生成资源占用报告
    perf_event允许perf观测cgroup中的task
    net_clscgroup中的任务创建的数据报文的类别标识符,这让Linux流量控制器(tc指令)可以识别来自特定cgroup任务的数据包,并进行网络限制
    hugetlb限制使用的内存页数量
    pids限制任务的数量
    rdma限制RDMA资源(Remote Direct Memory Access,远程直接数据存取)

3.基础语法

1.pidstat

  • 功能:监控全部或指定进程的CPU、内存、线程、设备IO等系统资源的占用情况

  • 语法

    pidstat [OPTIONS] [<时间间隔>] [<次数>]
    
  • 参数

    参数作用
    -u默认参数,显示各进程的CPU使用统计
    -r显示各进程的内存使用统计
    -d显示各进程的IO使用情况
    -p指定进程号,ALL表示所有进程
    -C指定命令
    -l显示命令名和所有参数

2.stress

  • 功能:压力测试工具,可以对CPU、Memory、IO、磁盘进行压力测试

  • 语法

    stress [OPTION [ARG]] 
    
  • 参数

    参数作用
    -c, --cpu N产生N个进程,每个进程都循环调用sqrt()产生CPU压力
    -i, --io N产生N个进程,每个进程循环调用sync将内存缓冲区内容写到磁盘上,产生IO压力
    -m, --vm N产生N个进程,每个进程循环调用malloc/free分配和释放内存
    –vm-bytes B指定分配内存的大小
    –vm-keep一直占用内存,区别于不断的释放和重新分配(默认是不断释放并重新 分配内存)
    -d, --hdd N产生N个不断执行write和unlink函数的进程(创建文件,写入内容,删除文件)
    –hdd-bytes B指定文件大小
    -t, --timeout N在 N 秒后结束程序
    -q, --quiet程序在运行的过程中不输出信息
  • 21
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DieSnowK

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值