CGroup资源控制

1、pidstat

功能:用于监控全部或指定进程的 CPU、内存、线程、设备IO 等系统资源的占用情况。Pidstat 第一次采样显示自系统启动开始的各项统计信息,后续采样将显示自上次运行命令后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。

语法:pidstat [ 选项 ] [ <时间间隔> ] [ <次数> ]

参数:

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

2.stress: Linux 的一个压力测试工具,可以对 CPU、Memory、IO、磁盘进行压力测
试。
语法:stress [OPTION [ARG]]

参数:
-c, --cpu N:产生 N 个进程,每个进程都循环调用 sqrt 函数产生 CPU 压力。
-i, --io N:产生 N 个进程,每个进程循环调用 sync 将内存缓冲区内容写到磁盘上,产
生 IO 压力。通过系统调用 sync 刷新内存缓冲区数据到磁盘中,以确保同步。如果缓
冲区内数据较少,写到磁盘中的数据也较少,不会产生 IO 压力。在 SSD 磁盘环境中
尤为明显,很可能 iowait 总是 0,却因为大量调用系统调用 sync,导致系统 CPU 使用
率 sys 升高。
-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:程序在运行的过程中不输出信息

3.cgroups 信息查看

①cgroups 版本查看:cat /proc/filesystems |grep cgroup

如果看到 cgroup2,表示支持 cgroup v2

②cgroups 子系统查看:cat /proc/cgroups

③cgroups 挂载信息查看: mount |grep cgroup

④查看一个进程上的 限制:cat /proc/$$/cgroup

⑤比如 cpu 在 user.slice,我们可以找到这个目录,里面有对 init 进程的详细限制信息:

ll /sys/fs/cgroup/cpu/user.slice/

4.使用 cgroups 对内存进行控制

① 创建内存的 cgroup,很简单我们进入到 cgroup 的内存控制目录/sys/fs/cgroup/memory,我们创建目录 test_memory

②可以看到内存限制文件已经自动在 test_memory 中创建完成了,cgroups 文件系
统会在创建文件目录的时候自动创建相应的配置文件

③配置 cgroup 的策略为最大使用 20M 内存

④4. 启动 1 个消耗内存的进程,每个进程占用 50M 内存

⑤ 打开一个新的 shell 窗口 B 窗口,使用 pidstat 查看状态,红色为进程 id

⑥打开一个新的 shell C 窗口,将进程 id 移动到我们的 cgroup 策略

⑦可以看到进程无法申请到足够内存退出

可以看到进程消失了

5.使用 cgroups 对 cpu 进行控制

①创建内存的 cgroup,很简单我们进入到 cgroup 的内存控制目录
/sys/fs/cgroup/cpu,我们创建目录 test_cpu,可以看到系统会自动为我们创建 cgroup
的 cpu 策略

②打开新的 shell 窗口 B 窗口,使用 stress 模拟一个任务,cpu 使用率为 100

③可以看到 cpu 的使用率为 100%

④打开新的 shell 窗口 C 窗口,我们设置 cproup 的 cpu 使用率为 30%,cpu 使用率
的计算公式 cfs_quota_us/cfs_period_us

1)cfs_period_us:cfs_period_us 表示一个 cpu 带宽,单位为微秒。系统总 CPU 带
宽 ,默认值 100000。
2)cfs_quota_us:cfs_quota_us 表示 Cgroup 可以使用的 cpu 的带宽,单位为微秒。
cfs_quota_us 为-1,表示使用的 CPU 不受 cgroup 限制。cfs_quota_us 的最小值为
1ms(1000),最大值为 1s。

⑤我们可以看到进程的 PID 为 30788,我们将该进程放到 tasks 文件进行控制

⑥B 窗口中可以看到我们监控的 cpu 的使用率由 100%降低为 30%

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值