以下是 cgroup-tools 包中相关命令的详解及典型应用场景举例,基于 Linux 资源管理需求整理:
📌 核心命令详解与示例
1. cgcreate - 创建新 cgroup
功能:在指定子系统(如 CPU、内存)下创建 cgroup 目录结构。
语法:cgcreate -g <子系统>:<路径>
示例:
cgcreate -g cpu,memory:/testgroup # 创建名为 testgroup 的 cgroup,控制 CPU 和内存
应用场景:为特定应用(如数据库服务)创建独立资源组,限制其 CPU 和内存使用,避免影响其他进程。
2. cgset - 配置 cgroup 参数
功能:动态修改 cgroup 的资源限制值(无需重启)。
语法:cgset -r <参数>=<值> <cgroup>
示例:
cgset -r memory.limit_in_bytes=1G /testgroup # 限制内存上限为 1GB
cgset -r cpu.cfs_quota_us=50000 /testgroup # 限制 CPU 使用率为 50%(周期 100ms)
应用场景:应对突发流量时,临时调整 Web 服务的资源配额,防止进程 OOM 崩溃。
3. cgexec - 在 cgroup 中运行进程
功能:直接启动进程并绑定到指定 cgroup。
语法:cgexec -g <子系统>:<cgroup> <命令>
示例:
cgexec -g cpu,memory:/testgroup ./data_processor.sh # 在 testgroup 中运行数据处理脚本
应用场景:运行高 CPU 消耗的批处理任务时,避免影响实时服务(如 Nginx)的响应延迟。
4. cgclassify - 将进程移入 cgroup
功能:将 已运行 的进程加入现有 cgroup。
语法:cgclassify -g <子系统>:<cgroup> <PID>
示例:
cgclassify -g cpu,memory:/testgroup 1234 # 将 PID 1234 的进程移入 testgroup
应用场景:运维监控发现某 Java 进程内存泄漏,将其移入限制组避免系统资源耗尽。
5. cgget - 查看 cgroup 配置
功能:查询 cgroup 的当前资源限制值。
语法:cgget -g <子系统>:<cgroup>
示例:
cgget -g memory:/testgroup # 显示 testgroup 的内存限制
应用场景:审计资源分配策略,确认是否按预期限制了容器化应用的内存。
6. cgdelete - 删除 cgroup
功能:移除不再需要的 cgroup。
语法:cgdelete <子系统>:<cgroup>
示例:
cgdelete cpu,memory:/testgroup # 删除 testgroup 及其配置
应用场景:清理测试环境残留的 cgroup,释放内核资源。
⚙️ 辅助命令说明
| 命令 | 功能 | 典型使用场景 |
|---|---|---|
cgsnapshot |
备份 cgroup 配置 | 批量迁移资源策略到新服务器 |
cgclear |
清除所有 cgroup | 快速重置实验环境 |
cgconfigparser |
解析配置文件加载 cgroup | 开机自动加载预定义资源规则(如 /etc/cgconfig.conf) |
cgrulesengd |
守护进程自动分类进程 | 根据 UID 或进程名自动分配 cgroup(需配置 /etc/cgrules.conf) |
💻 综合案例:多租户服务器资源隔离
问题:一台服务器同时运行 Web 服务(Nginx)和数据分析脚本,需确保 Web 服务高优先级。
解决方案:
# 1. 创建 cgroup
cgcreate -g cpu,memory:/web_group
cgcreate -g cpu,memory:/data_group
# 2. 设置资源限制
cgset -r cpu.shares=512 /web_group # Web 组 CPU 权重更高
cgset -r memory.limit_in_bytes=2G /data_group # 数据组内存上限 2GB
# 3. 启动进程并绑定
cgexec -g cpu,memory:/web_group systemctl start nginx
cgexec -g cpu,memory:/data_group ./analyze_data.py
# 4. 监控资源
cgget -g cpu,memory:/web_group # 确认 Web 组未超限
效果:Nginx 在 CPU 竞争时获得更多资源,数据分析脚本内存溢出时被 cgroup 终止,不影响 Web 服务。
💡 提示:
-
永久生效需配置
/etc/cgconfig.conf(cgconfigparser解析)和/etc/cgrules.conf(cgrulesengd守护进程管理)。 -
结合
top或htop监控实际资源使用,动态调整 cgroup 参数。
浙公网安备 33010602011771号