zoukankan      html  css  js  c++  java
  • centos7 使用cgroup进行资源限制

    centos7中进行资源限制,使用的仍然是cgroup,只是配置接口使用的systemd。
    下文将介绍如何使用systemd进行资源限制。

    Step1 编写unit文件

    命令为my-demo.service

    整个文件如下:

    [Unit]
    Description=My-demo Service
    
    
    [Service]
    Type=simple
    User=orange
    ExecStart=/bin/bash /home/orange/test.sh
    
    MemoryAccounting=true
    MemoryLimit=200M
    
    [Install]
    WantedBy=multi-user.target
    
    • 关于Type的定义

      • simple 默认类型,这是最简单的服务类型。意思就是说启动的程序就是主体程序,这个程序要是退出那么一切都退出。
      • forking 标准Unix Daemon 使用的启动方式。启动程序后会调用 fork() 函数,父进程退出,留下变成Deamon精灵的子进程。
      • oneshot 表示服务类型就是启动,执行完成后,没进程存在。
    • User字段表示指定用户启动程序。

    • MemoryLimit字段表示限制服务的物理内存占用,如果超过会被系统自动Kill。

    另外,test.sh的脚本定义如下,作用是耗内存:

    #!/bin/bash
    
    tmp="a"
    
    while [ True ]
    do
    	tmp=$tmp$tmp
    done
    

    Step2 将上述的文件拷贝到/usr/lib/systemd/system/目录下

    # cp my-demo.service /usr/lib/systemd/system/
    

    Step4 配置开机启动

    # systemctl enable my-demo.service
    ln -s'/usr/lib/systemd/system/my-demo.service' '/etc/systemd/system/multi-user.target.wants/my-demo.service'
    

    输出表明,注册的过程实际上就是将服务链接到/etc/systemd/system/目录下。

    Step5 测试

    启动服务

    # systemctl start my-demo.service
    

    查看服务是否已经启动

    # systemctl status my-demo.service
    

    查看进程占用内存

    # top
    

    可以看到内存占用在上升,大约不到1分钟,就会看到进程由于内存超出限制而被Kill。
    可以在/var/log/message中看到被Kill的记录。

    参考

    https://wizardforcel.gitbooks.io/vbird-linux-basic-4e/content/150.html

    https://blog.csdn.net/fu_wayne/article/details/38018825

  • 相关阅读:
    The Best Seat in ACM Contest
    确定比赛名次
    Red and Black
    Can you find it?
    胜利大逃亡
    Reward
    DXUT编译指南(转)
    逐顶点和逐像素光照
    转战DX
    hlsl之ambient
  • 原文地址:https://www.cnblogs.com/lanyangsh/p/9464952.html
Copyright © 2011-2022 走看看