1.什么是cgroups
- Control Groups:是一种用于**限制和隔离一个或一组进程对系统资源使用的机制**
- 将一组进程组织在一个控制组中,为这个控制组分配特定的资源限制与优先级
- 包括CPU资源、内存、网络等
- 确保容器在共享主机上合理利用系统资源,避免资源竞争和过度使用
- 将一组进程组织在一个控制组中,为这个控制组分配特定的资源限制与优先级
cgroups
本质:内核附加在程序上的一系列钩子(hook),通过程序运行时对资源的调度触发相应的钩子以达到资源追踪和限制的目的
2.cgroups的用途
-
cgroups
的用途- Resource limitation:限制资源使用
- 例:内存使用上限/CPU的使用限制
- Prioritization:优先级控制
- 例:CPU利用/磁盘IO吞吐
- Accounting: 一些审计或一些统计
- Control:挂起进程/恢复执行进程
- Resource limitation:限制资源使用
-
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 程序在运行的过程中不输出信息