Linux 下使用 cgroup 控制进程的cpu,内存

来源:互联网 发布:执行偏差算法含义 编辑:程序博客网 时间:2024/06/10 04:28

简介

Cgroups是control groups的缩写,是Linux内核提供的一种可以限制、记录、隔离进程组(process groups)所使用的物理资源(如:cpu,memory,IO等等)的机制。最初由google的工程师提出,后来被整合进Linux内核。

环境

 Ubuntu 16.04 LTS

Cgroup 安装

% apt install cgroup-bin cgroup-tools cgroup-lite 

相关术语

任务(task),控制族群(control group),层级(hierarchy),子系统(subsytem

可在 /sys/fs/cgroup/目录下查看已经挂载的子系统

使用方法

控制 cpu

% cd /sys/fs/cgroup/cpu% mkdir test && cd test                   # 新建 控制族群,其中自动会生成一系列文件% echo 50000 > cpu.cfs_quota_us           # 设置 cpu 使用率为50% (将 cpu.cfs_quota_us 中的值除以 cpu.cfs_period_us 中的值)% echo 12345 > tasks                      # 将进程id写入tasks% cd .. && rmdir test                     # 删除 控制族群

可以发现进程cpu使用率不会超过50%


控制 内存

% cd /sys/fs/cgroup/memory% mkdir test && cd test                   # 新建 控制族群,其中自动会生成一系列文件% echo 1M > memory.limit_in_bytes         # 设置内存使用上限是 1M% echo 12345 > tasks                      # 将进程id写入tasks% cd .. && rmdir test                     # 删除 控制族群
当进程内存使用超过1M时,会触发OOM( out of memory ),进程会被 kill 掉

注意

当某个进程加入了某个控制族群,它之后产生的子进程也会自动加入
% echo $$28259% echo $$ > tasks % cat tasks2825928304
进程 28304 是 cat 进程

参考文章

  • http://www.cnblogs.com/lisperl/archive/2012/04/17/2453838.html
  • http://www.cnblogs.com/yjf512/p/3298582.html
  • http://www.cnblogs.com/yanghuahui/p/3751826.html


原创粉丝点击