以mcj用户为例,首先查看用户id:
|
1 2 |
(base) mcj@dell-PowerEdge-T640:~$ id mcj uid=1002(mcj) gid=1002(mcj) groups=1002(mcj),997(lxd) |
然后编辑该用户的资源配置文件:
|
1 |
sudo systemctl edit --force --full user-1002.slice |
之后会打开一个配置文件,填入:
|
1 2 3 4 5 6 7 |
[Unit] Description=User Slice for UID 1002 [Slice] CPUQuota=50% MemoryAccounting=yes CPUAccounting=yes |
最后,保存,重新加载配置并重启 slice 生效:
|
1 2 |
sudo systemctl daemon-reload sudo systemctl restart user-1002.slice |
验证:
|
1 2 3 4 |
# 切换到 mcj 用户,运行一个占满 CPU 的测试进程 su - mcj -c 'yes > /dev/null &' # 查看进程的 CPU 使用情况 top -u mcj |
如果是多核的话,就不要单纯用50%了,先看下一共多少个核:
|
1 2 3 4 |
(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 |
查到服务器是64 核 CPU(NUMA 架构分两个节点,各 32 核),总算力 = 64×100%=6400%
所以根据上面这个总核数进行限制即可。
马春杰杰