0


[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中的tasknet_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程序在运行的过程中不输出信息
标签: docker linux 运维

本文转载自: https://blog.csdn.net/qq_37281656/article/details/140746095
版权归原作者 DieSnowK 所有, 如有侵权,请联系我们删除。

“[Docker][cgroups]详细讲解”的评论:

还没有评论