cgroup限制资源(CPU、memory)

使用cgroup限制CPU核数、memory利用率和CPU利用率

cgroup(Control Groups):以分组的形式对进程使用系统的行为进行管理和控制的机制。

通过cgroup对所有进程进行分组,再对分组整体进行资源的分配和控制。每个进程组包含多个进程。如果某个进程组的进程创建了子进程,那么该子进程默认与父进程处于同一进程组。也就是说,cgroup对该进程组的资源控制同样作用于子进程。

cgroup中每个子系统都代表一种类型分资源,具体如下:

1)CPU子系统:每个子系统为每个进程组设置一个使用CPU的权重,一次来管理进程对cpu的访问。

2)cpuset子系统:对于多核cpu,该子系统可以设置进程组只能在指定的核上运行,并且还可以设置进程组在指定的内存节点上申请内存。

3)cpuacct子系统:该子系统只用于生成当前进程组内的进程对cpu的使用报告。

4)memory子系统:该子系统提供了以页面为单位对内存的访问,比如对进程组设置内存使用上限等,同时可以生成内存资源报告。

5) blkio子系统:该子系统用于限制块设备的输入输出。首先,与CPU子系统类似,该系统通过为每个进程组设置权重来控制块设备对其的I/O时间;其次,该子系统也可以限制进程组的I/O带宽以及IOPS。

6) devices子系统:通过该子系统可以限制进程组对设备的访问,即该允许或禁止进程组对某设备的访问。

7) freezer子系统:该子系统可以使得进程组中的所有进程挂起。

8) net-cls子系统:该子系统提供对网络带宽的访问限制,比如对发送带宽和接收带宽进程限制。

9)ns子系统:名称空间子系统,可以使不同 cgroups 下面的进程使用不同的 namespace。

cpuset子系统

        cpuset.cpus(强制)

                设定该cgroup任务可以访问的CPU

# echo 0-3 > cpuset.cpus 表示允许访问cpu 0-3

        cpuset.mems(强制)

                设定该cgroup中任务可以访问的内存节点

# ehco 0 > cpusets.mems 表示允许访问0号内存节点

taskset命令

        依据线程PID查询或者设置线程的CPU亲和性(即与哪个CPU核心绑定)

# taskset -p 14567  //查询执行PID进程/线程额CPU核心数

cgexec命令

        在指定的cgroup中运行任务

# cgexec -g cpuset:mycpuset ./a.sh //在mycpuset系统中运行a.sh脚本

memory.limit_in_bytes

        设定用户内存(包括文件缓存)的最大用量。默认单位是字节。

memory.oom_control

        包含标签(0或者1),表示为cgroup启用或者禁用“内存不足”终止程序。(0)尝试消耗超过其允许内存的任务会被OOM终止程序立即终止,(1)禁用“OOM”终止程序。默认情况下该值时(0)。

# echo 1 > /cgroup/memory/lab1/memory.oom_control

cpu.rt_runtime_us

        指定在某个时间段中,cgroup中的任务对CPU资源的最长连续访问时间,单位为微秒μs。

cpu.cfs_period_us

        重新分配cgroup可用CPU资源的时间周期,单位为微秒μs。

cpu.cfs_quota_us

        在某一阶段(由cpu.cfs_period_us规定)某个cgroup中所有任务可运行的时间总量,单位为微秒μs。

//如果让一个cgroup完全使用一个CPU
# ehco 10000 > /cgroup/cpu/red/cpu.cfs_quota_us
# echo 10000 > /cgroup/cpu/red/cpu.cfs_period_us


//如果让一个cgroup使用10%的CPU
# ehco 10000 > /cgroup/cpu/red/cpu.cfs_quota_us
# echo 100000 > /cgroup/cpu/red/cpu.cfs_period_us


//在多核系统中,如果让一个cgroup完全使用两个CPU核
# ehco 200000 > /cgroup/cpu/red/cpu.cfs_quota_us
# echo 100000 > /cgroup/cpu/red/cpu.cfs_period_us

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值