当前位置:   article > 正文

[Docker][cgroups]详细讲解

[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] [<时间间隔>] [<次数>]
    
    • 1
  • 参数

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

2.stress

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

  • 语法

    stress [OPTION [ARG]] 
    
    • 1
  • 参数

    参数作用
    -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程序在运行的过程中不输出信息
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/996363
推荐阅读
相关标签
  

闽ICP备14008679号