欢迎光临南昌笑劳网络科技有限公司,我们是一家专注中小型企业营销推广服务的公司!

咨询热线:400 76543 55
南昌笑劳网络科技有限公司
最新资讯News
南昌笑劳网络科技有限公司

Linux服务资源限制_cgroups基础应用解析【指导】

作者:舞夢輝影 | 点击: | 来源:舞夢輝影
0801
2026
cgroups可精细化控制Linux服务进程的CPU和内存资源:先挂载cpu、memory子系统,再通过cpu.cfs_quota_us/cpu.cfs_period_us设CPU上限,memory.limit_in_bytes设内存上限并可禁用OOMkiller,systemd服务可通过CPUQuota和MemoryLimit直接配置,最后用usage_in_bytes、cpu.stat等验证生效。...
cgroups可精细化控制Linux服务进程的CPU和内存资源:先挂载cpu、memory子系统,再通过cpu.cfs_quota_us/cpu.cfs_period_us设CPU上限,memory.limit_in_bytes设内存上限并可禁用OOM killer,systemd服务可通过CPUQuota和MemoryLimit直接配置,最后用usage_in_bytes、cpu.stat等验证生效。

如果您在Linux系统中需要对服务进程的CPU、内存等资源进行精细化控制,cgroups提供了内核级的隔离与限制能力。以下是基于cgroups v1基础框架开展资源限制的实操步骤:

一、创建cgroups控制组并挂载子系统

cgroups通过层级化目录结构管理资源配额,需先确认内核已启用对应子系统,并将cpu、memory等子系统挂载到指定挂载点,以便后续写入参数。

1、检查当前已挂载的cgroups子系统:cat /proc/cgroups

2、创建挂载目录:sudo mkdir -p /sys/fs/cgroup/cpu_myapp /sys/fs/cgroup/memory_myapp

3、挂载cpu和memory子系统:sudo mount -t cgroup -o cpu none /sys/fs/cgroup/cpu_myapp

4、sudo mount -t cgroup -o memory none /sys/fs/cgroup/memory_myapp

二、为服务进程设置CPU使用上限

通过cpu子系统的cpu.cfs_quota_us与cpu.cfs_period_us文件可限定某组进程在固定周期内最多运行的微秒数,实现硬性CPU时间配额控制。

1、进入cpu控制组目录:cd /sys/fs/cgroup/cpu_myapp

2、设定调度周期为100000微秒(即100ms):echo 100000 | sudo tee cpu.cfs_period_us

3、设定该组每周期最多使用50000微秒CPU时间(即50%单核):echo 50000 | sudo tee cpu.cfs_quota_us

4、将目标服务PID写入tasks文件:echo PID | sudo tee tasks

三、为服务进程设置内存使用上限与OOM保护

memory子系统通过memory.limit_in_bytes限制最大可用物理内存,配合memory.oom_control可禁用内核OOM killer,避免进程被意外终止。

1、进入memory控制组目录:cd /sys/fs/cgroup/memory_myapp

2、设定内存上限为512MB:echo 536870912 | sudo tee memory.limit_in_bytes

3、禁用OOM killer以保留进程状态供调试:echo 1 | sudo tee memory.oom_control

4、将目标服务PID加入该组:echo PID | sudo tee tasks

四、使用systemd动态绑定服务到cgroups路径

对于由systemd管理的服务,无需手动挂载或写入tasks,可通过systemd单元配置文件直接声明资源限制,由systemd自动映射至cgroups v2路径(若启用v2)或兼容v1接口。

1、编辑目标服务单元文件:sudo systemctl edit myservice.service

2、添加CPU配额限制段:[Service]\nCPUQuota=50%

3、添加内存限制段:MemoryLimit=512M

4、重载配置并重启服务:sudo systemctl daemon-reload && sudo systemctl restart myservice.service

五、验证cgroups资源限制生效情况

限制是否实际起效需通过实时读取cgroups统计文件及系统工具交叉比对,重点关注usage、stat等关键指标是否符合预期阈值。

1、查看当前组内存使用量(字节):cat /sys/fs/cgroup/memory_myapp/memory.usage_in_bytes

2、查看CPU使用统计(毫秒):cat /sys/fs/cgroup/cpu_myapp/cpu.stat

3、观察进程是否被限频:watch -n1 'ps -o pid,pcpu,pmem,comm -p PID'

4、检查cgroups路径下tasks文件是否包含目标PID:cat /sys/fs/cgroup/cpu_myapp/tasks


# linux  # 绑定  # 重启  # 并可  # 您在  # 并将  # 精细化  # 可通过  # 最多  # 接口  # echo  # linux系统  # 配置文件  # 工具  # 字节  # app  # 重点关注 

我要咨询做网站
成功案例
建站流程
  • 网站需
    求分析
  • 网站策
    划方案
  • 页面风
    格设计
  • 程序设
    计研发
  • 资料录
    入优化
  • 确认交
    付使用
  • 后续跟
    踪服务
  • 400 76543 55
    sale#ncxiaolao.cn
Hi,Are you ready?
准备好开始了吗?
那就与我们取得联系吧

咨询送礼现在提交,将获得笑劳科技策划专家免费为您制作
价值5880元《全网营销方案+优化视频教程》一份!
下单送礼感恩七周年,新老用户下单即送创业型空间+域名等大礼
24小时免费咨询热线400 76543 55
合作意向表
您需要的服务
您最关注的地方
预算

直接咨询