使用cgroup工具对服务器某些/全部用户进行计算资源限制
创始人
2025-01-17 09:32:25
0

使用cgroup工具对服务器某些/全部用户进行计算资源限制

主要介绍,如何对指定/所有用户进行资源限定(这里主要介绍cpu和内存占用限制),防止某些用户大量占用服务器计算资源,影响和挤占他人正常使用服务器。

  • 安装cgroup管理工具
    sudo apt-get install cgroup-tools 
  • 使用mount -t cgroup 命令检查验证

在这里插入图片描述

可以通过编写 /etc/cgconfig.conf/etc/cgrules.conf 文件进行计算资源的配置,其中:

  • /etc/cgconfig.conf 实现具体的配置设置
  • /etc/cgrules.conf 确定每个用户属于哪个配置

cgroup工具,会根据上面的两个文件中的不同资源限制,自动生成一些具体的配置文件,放在/sys/fs/cgroup/下的对应文件夹下,有点类似CMakeLists.txt

使用group限制单用户/多用户计算资源

使用 group字段,创建资源限制组,进行组内成员的资源控制限制

  1. /etc/cgconfig.conf添加如下配置,将会对组users_mem_limit 内的用户所能申请的最大内存进行限制。

    # `group`是特殊字段,`users_mem_limit`是组的名称 group users_mem_limit{         memory{                 memory.limit_in_bytes = 15G;                 memory.memsw.limit_in_bytes = 16G;         } } 

    其中:

    • memory.limit_in_bytes 只限制实际的物理内存使用,不包括交换空间

    • memory.memsw.limit_in_bytes 限制实际物理内存和交换空间的总使用

    • 一般来说,两个参数需要使用字节(bytes)为单位,但是也可以直接使用这里的G

  2. /etc/cgrules.conf添加如下配置,实现将某个/某些用户添加到该组。

    #用户名			   #限制类型        #所属组 user01               memory          users_mem_limit/ user02               memory          users_mem_limit/ 
  3. 设置限制服务开机启动

    #开机启动 systemctl enable cgconfig systemctl enable cgred #重启服务 systemctl restart cgconfig systemctl restart cgred 

注意点:

  • 这种情况下,该组内的用户将会共用受限的15G内存,而不是每个人最大15G,例如上面的例子中,user01user02将共用15G内存;

  • 如果程序申请不到内存,自己会停下来并报错。如果仅限制物理内存的容量,不限制swap的容量,那么进程不会被杀死。可以保持运行。

使用template限制多个用户的内存和CPU占用

刚才使用group 也可以实现多用户的限制,但是被限制的用户将会共用受限资源,如何实现对每个用户的计算资源进行同等配置,同时限制所有用户对共用服务器CPU和内存资源的过度使用? 这里使用template 实现。

template 本质上只是一个模板,本质上是会对所有用户都单独生成一个组?。

  1. /etc/cgconfig.conf添加如下配置,使用template,设置了memory 不能超过60GB,最多100%占用36个CPU核心。

    template users/%u {         memory {                 memory.limit_in_bytes = 60G;                 memory.memsw.limit_in_bytes = 61G;         }         cpu {                 cpu.cfs_quota_us = 3600000;                 cpu.cfs_period_us = 100000;         } } 

    其中cpu的限制逻辑是:

    • cpu.cfs_period_us 周期内,只能使用最多cpu.cfs_quota_us 的cpu资源。

    • 默认情况下,cpu.cfs_period_us的单位为微秒,默认值为100000cpu.cfs_quota_us的值为-1,即不做限制。

    • 例子中,利用两个参数的比值cpu.cfs_quota_us/cpu.cfs_period_us=3600% ,实现最多100%占用36个CPU核心。

  2. /etc/cgrules.conf添加如下配置,对所有用户的cpu和内存进行控制。

    #所有用户		 限制类型	           模板 *               cpu,memory          users/%u 
  3. 设置服务

    #开机启动 systemctl enable cgconfig systemctl enable cgred #重启服务 systemctl restart cgconfig systemctl restart cgred 

一些注意点

/sys/fs/cgroup下,有不同的文件夹,这些文件分别包含了不同的资源配置文件。

cgroup根据 /etc/cgconfig.conf配置文件,自动生成一些具体的文件,然后在在/sys/fs/cgroup的不同文件夹下生成对应的配置,例如:

  1. 刚才使用的group配置中生成的cgroup文件在/sys/fs/cgroup/memory/users_mem_limit目录下。

  2. 刚才使用的template 将会自动生成以下数据

    • /sys/fs/cgroup/memory/users/user01
    • /sys/fs/cgroup/memory/users/user02
    • /sys/fs/cgroup/cpu/users/user01
    • /sys/fs/cgroup/cpu/users/user02
  3. 可以使用如下指令删除某个用户的配置,当他重新登录时,就会自动取消

    cgdelete cpu:/users/user01 cgdelete memory:/users/user01 

参考

  1. 使用 nice、cpulimit 和 cgroups 限制 cpu 占用率
  2. 如何对占据服务器大量cpu资源的用户进行限制
  3. Linux系统使用cgroup限制用户进程过度使用内存
  4. 精准限制CPU:Cgroups

相关内容

热门资讯

WPK透视辅助!德州局脚本,w... WPK透视辅助!德州局脚本,wpk德州局透视(切实是有挂)1、超多福利:超高返利,海量正版游戏,wp...
微扑克透视辅助!pokemmo... 微扑克透视辅助!pokemmo辅助器手机版下载,hhpoker开挂教程(一贯是真的有挂)1、微扑克透...
WPK透视辅助!扑克之星辅助,... WPK透视辅助!扑克之星辅助,wepoker辅助是真的假的(真是真的有挂)wepoker辅助是真的假...
wpk透视辅助!hhpoker... wpk透视辅助!hhpoker是内部控制吗,wepoker破解工具(好像真的有挂)1、hhpoker...
微扑克透视辅助!hhpoker... 微扑克透视辅助!hhpoker德州透视,xpoker透视辅助(好像真的是有挂)1)hhpoker德州...
微扑克透视辅助!黑侠破解wep... 微扑克透视辅助!黑侠破解wepoker,wepoker辅助分析器(切实是有挂)1、首先打开wepok...
wpk透视辅助!aapoker... wpk透视辅助!aapoker怎么设置抽水,大菠萝手游辅助(总是真的有挂)运aapoker怎么设置抽...
wpk透视辅助!wepoker... wpk透视辅助!wepoker软件辅助程序,wepoker辅助器安装包定制(其实是有挂)小薇(辅助器...
微扑克透视辅助!aapoker... 微扑克透视辅助!aapoker怎么提高中牌率,hhpoker软件安装包(确实真的有挂)1、进入游戏-...
WPK透视辅助!wepoker... 您好,wepoker透视器免费这款游戏可以开挂的,确实是有挂的,需要了解加去威信【485275054...