[Docker][cgroups]详细讲解

DieSnowK 2024-08-27 17:37:01 阅读 97

目录

1.什么是cgroups2.cgroups的用途3.基础语法1.pidstat2.stress


1.什么是cgroups

Control Groups:是一种用于**限制和隔离一个或一组进程对系统资源使用的机制**

将一组进程组织在一个控制组中,为这个控制组分配特定的资源限制与优先级

包括CPU资源、内存、网络等 确保容器在共享主机上合理利用系统资源,避免资源竞争和过度使用 <code>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_cls cgroup中的任务创建的数据报文的类别标识符,这让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 程序在运行的过程中不输出信息


声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。