技术解析

大侠们,求问一个负载均衡的问题
0
2021-06-15 08:57:22
idczone
我们有个大概 50 人的 team,有大概 10 台左右 36 核的机器

有人在某一台机器上用“make -jnproc”的时候,会把这台 instance 的整个 cpu 资源消耗掉,然后其他人完全不能用了,有什么好办法做限制么?

我考虑过改 /etc/security/limits.conf
但是,问题是,
1. 有时候如果这台机器是很空闲的,那限制了这个进程数就会降低效率了。
2. 如果改了这个文件,很快就会被 cfengine 给改回去,不知道这个要怎么配置 cfengine
我觉得这样的需求使用 cgroups 更加合理,你应该限制单个用户的 slice 整体的 cpu.shares (或者是 cpu.weight, 对于 cgroupv2) 保证在用户之间争夺 CPU 时间的时候能按照用户(而非进程)公平分配。
当然,服务器整个占用爆炸的时候会导致相应性下降,想要保证响应性的话,这时候应该考虑所有用户设置占用上限,比如 95% 这样的数值(会浪费性能)

不必用技术方法去解决行政问题
规定编译必须加 nice 。不 nice 导致其他人用不了的,一次罚 xx
或者往所有人的 bash profile 加 alias make="nice make"
或者可以跑个后台服务,看到 gcc 和 make 就 renice
正经办法当然是 cgroup 啦

*可以把 alias 加到 /etc/bash.bashrc 或者 /etc/profile 里

cgroup 也依然是硬限制吧?在机器闲置的情况下会导致用不满

行政手段不太现实,每一个 it 人都很桀骜不驯很有自己 idea 的。

谢谢大佬回答,我对 cgroups 还不太了解,等我学习一下。我的一个担忧是,如果做了 cpu shares 的限制,用户上去做 make 操作的时候,如果一旦超出限制,是不是会把 make 整个停掉?

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服