当前位置: 首页 > news >正文

Ubuntu中控制用户cpu资源分配控制步骤

目的:为了限制用户的cpu资源,

假设有不同的组,假设目前是dev组吧。;里面有四个用户 zhengtengfei lisi zhangsan liuyuan
限制 最多24核 服务器一共64核

先都加入到组里

usermod -aG dev zhengtengfei

创建针对 dev 组的 cgroup

sudo apt update
sudo apt install -y cgroup-tools
sudo mkdir -p /sys/fs/cgroup/cpu/dev_users

设置 CPU 限制

echo 100000 > /sys/fs/cgroup/cpu/dev_users/cpu.cfs_period_us
echo $((24 * 100000)) > /sys/fs/cgroup/cpu/dev_users/cpu.cfs_quota_us # 这里是24核

将 dev 组中的用户进程自动加入到该 cgroup(为了确保 dev 组的用户启动的所有进程都进入 /sys/fs/cgroup/cpu/dev_users,你需要使用 systemd 的服务管理功能或通过 pam_cgroup 模块实现自动绑定。)
安装libpam-cgroup
sudo apt install libpam-cgroup

编辑 /etc/pam.d/common-session 文件,添加如下行
session required pam_cgroup.so
编辑 /etc/cgconfig.conf 文件,添加如下内容(如果不存在则创建)

group dev_users {
cpu {
cpu.cfs_period_us = 100000;
cpu.cfs_quota_us = 2400000; # 24 * 100000
}
}

然后在 /etc/cgrules.conf 中添加规则,把 dev 组的用户进程归入这个 cgroup:

@dev cpu /dev_users

手动创建 systemd 服务文件

我们将分别为 cgconfig 和 cgrulesengd 创建 systemd 服务,并设置开机自启
sudo vim/etc/systemd/system/cgconfig.service

[Unit]
Description=Control Group configuration service
Before=cgrulesengd.service

[Service]
Type=oneshot
ExecStart=/usr/sbin/cgconfigparser -l /etc/cgconfig.conf
RemainAfterExit=yes
ExecStop=/usr/sbin/cgclear
StandardOutput=journal

[Install]
WantedBy=multi-user.target

sudo vim /etc/systemd/system/cgrulesengd.service

[Unit]
Description=Control Group Rules Engine Daemon
After=network.target cgconfig.service

[Service]
Type=forking
ExecStart=/usr/sbin/cgrulesengd
Restart=on-failure

[Install]
WantedBy=multi-user.target

做完后重启服务

sudo systemctl daemon-reexec
sudo systemctl daemon-reload

sudo systemctl start cgconfig.service
sudo systemctl enable cgconfig.service
sudo systemctl start cgrulesengd.service
sudo systemctl enable cgrulesengd.service
sudo systemctl status cgconfig
sudo systemctl status cgrulesengd

安装压测工具进行压测验证

apt install stress-ng
stress-ng --cpu 32 --timeout 1m #限制的是24,给他32核,用top命令查看占用,发现32核都使用了,但是cpu占用率百分比加起来不超过24核(2400%)

可以新开一个用户的终端进行验证查看

cpu百分比 = (2400000 / 100000)* 100% = 24 * 100% = 2400%

相关文章:

  • 设计英语重庆seo小潘大神
  • 厦门手机网站建设是什么百度推广开户费用标准
  • 关于网站建设的题目sem是什么意思中文
  • 如何用dreamer做网站制作企业网站
  • 做产品推广哪个网站好链接制作
  • 哪个网站做系统好东莞seo网站排名优化
  • Flutter 多平台项目开发指南
  • 【Go语言-Day 9】指针基础:深入理解内存地址与值传递
  • 量学云讲堂2025年天山至尊刘智辉第63期视频课程+第2段位课
  • Trae IDE 大师评测:驾驭 MCP Server - Figma AI Bridge 一键成就前端瑰宝
  • 原子级制造革命:双原子镧催化剂登顶Angew,焦耳超快加热技术深度解析
  • leetcode:50. Pow(x, n)(python3解法,数学相关算法题)
  • ISP Pipeline(3):Lens Shading Correction 镜头阴影校正
  • OpenCV CUDA模块设备层-----逐通道的正弦运算函数sin()
  • AI智能体——OpenManus 源码学习
  • 【RabbitMQ】多系统下的安装配置与编码使用(python)
  • A2O MAY登上央视《中国音乐TOP榜》舞台,展现新歌榜冠军实力
  • docker repositories.json 文件学习
  • 七天学会SpringCloud分布式微服务——03——一些细节的心得感悟(续)
  • C2远控篇CC++SC转换格式UUID标识MAC物理IPV4地址减少熵值
  • ubuntu22.04系统kubeadm部署k8s高可用集群
  • Docker 部署 Kong云原生API网关
  • GitHub Actions 安全高效地推送 Docker 镜像到 AWS ECR
  • 与 AI 聊天更顺畅:GitHub 项目文件小助手
  • vue + vue-router写登陆验证的同步方法和异步方法,及页面组件的分离和后端代码
  • Vue3+ element 实现导入导出