马春杰杰 Exit Reader Mode

如何限制Linux下某个用户的CPU使用率

mcj用户为例,首先查看用户id

(base) mcj@dell-PowerEdge-T640:~$ id mcj
uid=1002(mcj) gid=1002(mcj) groups=1002(mcj),997(lxd)

然后编辑该用户的资源配置文件:

sudo systemctl edit --force --full user-1002.slice

之后会打开一个配置文件,填入:

[Unit]
Description=User Slice for UID 1002

[Slice]
CPUQuota=50%
MemoryAccounting=yes
CPUAccounting=yes

最后,保存,重新加载配置并重启 slice 生效:

sudo systemctl daemon-reload
sudo systemctl restart user-1002.slice

验证:

# 切换到 mcj 用户,运行一个占满 CPU 的测试进程
su - mcj -c 'yes > /dev/null &'
# 查看进程的 CPU 使用情况
top -u mcj

如果是多核的话,就不要单纯用50%了,先看下一共多少个核:

(base) mcj@dell-PowerEdge-T640:~$ lscpu | grep "CPU(s):"
CPU(s):                                  64
NUMA node0 CPU(s):                       0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62
NUMA node1 CPU(s):                       1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47,49,51,53,55,57,59,61,63

查到服务器64CPUNUMA 架构分两个节点,各 32 核),总算力 = 64×100%=6400%

所以根据上面这个总核数进行限制即可。