Linux进程资源限制如何配置_cgroups基础应用【指导】

1次阅读

linux中进程资源限制主要通过cgroups v2实现,挂载于/sys/fs/cgroup,支持内存(memory.max)、CPU(cpu.max)等精细化控制,并可通过systemd持久化配置及接口文件实时监控。

Linux进程资源限制如何配置_cgroups基础应用【指导】

Linux中进程资源限制主要通过cgroups(control groups)实现,它能对CPU、内存、IO等资源进行精细化分组管理。配置cgroups不依赖第三方工具,现代Linux发行版(如centos 7+/ubuntu 16.04+)默认启用cgroups v2,推荐优先使用v2统一接口。

确认cgroups版本与挂载点

cgroups v2通常挂载在/sys/fs/cgroup,且为单一层级结构。运行以下命令验证:

  • cat /proc/cgroups:若第三列(enabled)全为1,且name=字段为空,说明v2已启用
  • mount | grep cgroup:应看到cgroup2 on /sys/fs/cgroup type cgroup2
  • 若看到多个cgroup挂载点(如/sys/fs/cgroup/cpu),说明系统运行在v1兼容模式,需检查systemd配置或内核启动参数(systemd.unified_cgroup_hierarchy=1

创建并配置资源控制组(v2)

以限制某个后台服务的内存和CPU为例:

Linux进程资源限制如何配置_cgroups基础应用【指导】

腾讯AI 开放平台

腾讯AI开放平台

Linux进程资源限制如何配置_cgroups基础应用【指导】 381

查看详情 Linux进程资源限制如何配置_cgroups基础应用【指导】

  • 新建子目录:sudo mkdir /sys/fs/cgroup/myapp
  • 限制内存上限为512MB:echo 536870912 | sudo tee /sys/fs/cgroup/myapp/memory.max
  • 限制CPU使用率不超过2个逻辑核心(即200%):echo 200000 | sudo tee /sys/fs/cgroup/myapp/cpu.max(格式为quota period,默认period=100000微秒,200000表示200ms/100ms)
  • 将进程加入该组:echo $PID | sudo tee /sys/fs/cgroup/myapp/cgroup.procs(PID为要限制的进程ID)

持久化配置(避免重启失效)

手动写入/sys/fs/cgroup仅临时生效。生产环境建议用systemd管理:

  • 为服务单元添加资源限制:编辑/etc/systemd/system/myapp.service,在[Service]段下添加:
  • MemoryMax=512M
  • CPUQuota=200%
  • IOWeight=50(可选,限制IO权重)
  • 重载配置:sudo systemctl daemon-reload && sudo systemctl restart myapp

监控与调试技巧

实时查看资源使用情况可直接读取cgroup接口文件:

  • 当前内存使用:cat /sys/fs/cgroup/myapp/memory.current
  • 内存使用峰值:cat /sys/fs/cgroup/myapp/memory.peak
  • CPU时间统计:cat /sys/fs/cgroup/myapp/cpu.stat(含usage_usec、nr_periods等)
  • 若进程被OOM Killer终止,检查memory.events中的oom_kill计数

text=ZqhQzanResources