通过Cgroup限制进程cpu使用率

本文介绍了一种通过cgroup机制来限制MySQL进程CPU使用率的方法。具体步骤包括:查找MySQL进程ID,创建对应的cgroup目录,并设置进程ID及CPU使用限额。

限制方法

1、找到需要限制的进程

ps -ef | grep mysql

image.png

2、到cgroup目录创建一个专用目录

cd /sys/fs/cgroup/cpu/ 
mkdir mysql
cd  mysql 
echo  22112 > cgroup.procs  # 22112 是第一步中找到的进程id
echo  "200000" > cpu.cfs_quota_us  # 这是限制使用率,限制进程可以用到 200%

3、验证
mysql 进程的cpu使用率最大 200%image.png

参考文档

https://www.cnblogs.com/wuchangblog/p/13937715.html

### 在 Ubuntu 20.04 中通过 cgroup 配置限制 CPU 使用率的具体示例 #### 创建和配置 Cgroup 环境 在 Ubuntu 20.04 上,Cgroup v1 和 v2 可能同时存在。默认情况下,Cgroup v1 是更常用的版本。以下是基于 Cgroup v1 的具体配置方法[^2]。 #### 检查 Cgroup 挂载点 确保 Cgroup 已正确挂载到系统中。可以通过以下命令检查: ```bash mount -t cgroup ``` 如果未挂载,可以手动挂载 Cgroup 的 `cpu` 子系统: ```bash sudo mount -t cgroup -o cpu none /sys/fs/cgroup/cpu ``` #### 创建 Cgroup 组 进入 Cgroup 的 `cpu` 子系统目录,并创建一个新的组: ```bash cd /sys/fs/cgroup/cpu sudo mkdir my_cpu_group ``` #### 设置 CPU 使用率限制 使用 `cpu.cfs_quota_us` 和 `cpu.cfs_period_us` 来控制 CPU 使用率。例如,将 CPU 使用率限制为 50%(即每个周期内最多使用 50 毫秒): ```bash echo 50000 | sudo tee /sys/fs/cgroup/cpu/my_cpu_group/cpu.cfs_quota_us echo 100000 | sudo tee /sys/fs/cgroup/cpu/my_cpu_group/cpu.cfs_period_us ``` 这里,`cpu.cfs_quota_us` 设置为 50000 微秒,表示每个周期允许使用的 CPU 时间;`cpu.cfs_period_us` 设置为 100000 微秒,表示周期长度[^1]。 #### 将进程加入 Cgroup 组 找到需要限制进程的 PID,并将其添加到 Cgroup 组的任务列表中: ```bash echo <PID> | sudo tee /sys/fs/cgroup/cpu/my_cpu_group/tasks ``` 例如,如果目标进程的 PID 为 1234,则执行: ```bash echo 1234 | sudo tee /sys/fs/cgroup/cpu/my_cpu_group/tasks ``` #### 验证配置效果 可以通过以下命令查看 CgroupCPU 使用情况: ```bash cat /sys/fs/cgroup/cpu/my_cpu_group/cpuacct.usage ``` 此命令返回当前 Cgroup 组的累计 CPU 使用时间(单位为纳秒)。结合实际运行时间,可以计算出 CPU 使用率是否符合预期[^2]。 #### 注意事项 - 如果系统使用的是 Cgroup v2 版本,则相关路径和文件名可能会有所不同。例如,v2 版本中可能没有 `cpu.cfs_quota_us` 和 `cpu.cfs_period_us`,而是使用 `cpu.max` 来控制 CPU 资源[^4]。 - 在多核 CPU 环境中,`cpu.cfs_quota_us` 的值应根据 CPU 核心数进行调整,确保不超过总带宽限制[^3]。 #### 示例脚本 以下是一个完整的脚本示例,用于创建 Cgroup 组并限制 CPU 使用率: ```bash #!/bin/bash CGROUP_PATH="/sys/fs/cgroup/cpu" GROUP_NAME="my_cpu_group" QUOTA_US=50000 # 限制 CPU 使用率为 50% # 检查 Cgroup 路径是否存在 if [ ! -d "$CGROUP_PATH" ]; then echo "Cgroup 路径不存在,请检查系统配置!" exit 1 fi # 创建 Cgroup 组 cd $CGROUP_PATH sudo mkdir -p $GROUP_NAME # 设置 CPU 使用率限制 echo $QUOTA_US | sudo tee $CGROUP_PATH/$GROUP_NAME/cpu.cfs_quota_us > /dev/null echo 100000 | sudo tee $CGROUP_PATH/$GROUP_NAME/cpu.cfs_period_us > /dev/null # 添加进程Cgroup 组 echo "请输入要限制进程 PID:" read PID echo $PID | sudo tee $CGROUP_PATH/$GROUP_NAME/tasks > /dev/null echo "CPU 使用率已成功限制为 50%!" ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值