Centos下,使用CGroup限制VPS CPU的占用

2023-08-27 9263阅读 0评论
Kdatacenter:$17.1/月/1G内存/100GB SSD空间/1TB流量/1Gbps端口/KVM/韩国SK/直连;原生IP

Linux CGroup可为系统中所运行任务(进程)的用户定义组群分配资源—比如CPU 时间、系统内存、网络带宽或者这些资源的组合。下面主要是限制CPU的占用。
共享CPU的占用时间和比率,建议查看各个VPS商家的TOS。

Centos下,使用CGroup限制VPS CPU的占用 第1张

Virmach是CPU不能超过2小时使用50%。

一、安装并启用CGroup

yum install libcgroup libcgroup-tools  numactl  -y

启用CGroup

systemctl start cgconfig.service

二、限制用户的CPU占用

1、添加配置

vi /etc/cgconfig.conf

在最后面添加

group users_normal_limit{
    cpu{
        # 限制CPU使用率为30%
        cpu.cfs_period_us=100000;
        cpu.cfs_quota_us=30000;
    }
}

主要修改cpu.cfs_quota_us,为与cpu.cfs_period_us的比例。

2、添加受限制用户

vi /etc/cgrules.conf

在最后面添加

@user          cpu             users_normal_limit

添加限制用户

usermod -a -G users root

或者更多

usermod -a -G users www
usermod -a -G users mysql

3、使用配置生效

设置Cgroup服务开机启动

systemctl enable cgconfig
systemctl enable cgred

重启Cgroup服务

systemctl restart cgconfig
systemctl restart cgred


三、限制单个程序的CPU占用
1、查看VPS CPU的线程数

grep 'processor' /proc/cpuinfo | sort -u | wc -l

2、创建隔离组

cd /sys/fs/cgroup/cpu
mkdir cpu_test

说明:目录创建完成会自动生成以下文件(注:该目录无法手动删除,如果不加入开机自启,重启后会消失)

ls cpu_test/

3、修改参数

echo 30000 > /sys/fs/cgroup/cpu/cpu_test/cpu.cfs_quota_us

注:默认-1不限制,现在改成20000,是将cpu.cfs_quota_us设为30000,相对于cpu.cfs_period_us的100000是30%;可以理解cpu使用率限制在30%。

4、限制某个程序占用的CPU
查看进程

top

限制程序

echo 进程pid >> /sys/fs/cgroup/cpu/cpu_test/tasks

把多个进程写入tasks,表示共享30% CPU。

四、跑一个耗cpu的脚本

vi cpu.sh

写入

#/bin/bash
x=0
while [ True ];do
    x=$x+1
done;

设置权限并运行

chmod +x cpu.sh
sh cpu.sh  &

主要参考:http://note.jues.org.cn/index.php/comment/12、https://www.cnblogs.com/llwxhn/p/12558577.html


免责声明
1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明。
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所
提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何
损失或损害承担责任。
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在
转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并白负版权等法律责任。

手机扫描二维码访问

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,9263人围观)

还没有评论,来说两句吧...

目录[+]