利用cgroup来限制进程的资源使用量

阿凡达2018-08-14 09:28

在实际应用或性能测试中,常常会有一些限制某类资源(可能是cpu,内存或I/O)的需求,防止出现资源泄漏影响其他应用,或者方便进行应用的性能分析。本文简单介绍一下如何方便的利用cgroup来进行这方面的设置。


工具包

在debian或ubuntu社区中,已经存在一个cgroup工具包“cgroup-bin”,在主机上安装该包后,会产生一些设置cgroup的可执行文件(cgcreate/cgset/cgexec/cgdelete),利用它们可以方便的进行cgroup设置。下面我们通过一个例子简要的介绍下用法。


cgroup设置示例

本节中,我们以设置dd程序访问某块磁盘的iops和bps为例,讲解如何使用cgroup-bin工具来进行进程资源的控制。

  • 首先,我们要创建一个测试用的 blkio cgroup(iops和bps是通过cgroups中的blkio group来设置的),对应的命令为:
    sudo cgcreate -g blkio:test
    
  • 其次,我们要为该cgroup设置好限制参数,比如说要把该进程读写某块磁盘的iops都设置为100,这块磁盘的设备号为 8:0 , 对应的命令为:
    sudo cgset -r blkio.throttle.write_iops_device='8:0 100' test
    sudo cgset -r blkio.throttle.read_iops_device='8:0 100' test
    
  • 上述参数配置好后,我们可以在该cgroup下执行dd进程,对应的命令为:

    sudo cgexec -g blkio:test dd if=/dev/sda of=/home/dd_test iflag=direct oflag=direct bs=1M count=1024
    
  • 最后,进程执行完毕,不需要该cgroup,可通过如下命令来删除:

    sudo cgdelete blkio:test
    


网易云新用户大礼包:https://www.163yun.com/gift

本文来自网易实践者社区,经作者管强授权发布。