大侠们,求问一个负载均衡的问题

2020-11-20 16:05:12 +08:00
 arcaitan
我们有个大概 50 人的 team,有大概 10 台左右 36 核的机器

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

我考虑过改 /etc/security/limits.conf
但是,问题是,
1. 有时候如果这台机器是很空闲的,那限制了这个进程数就会降低效率了。
2. 如果改了这个文件,很快就会被 cfengine 给改回去,不知道这个要怎么配置 cfengine
2047 次点击
所在节点    Linux
6 条回复
yanqiyu
2020-11-20 17:01:43 +08:00
我觉得这样的需求使用 cgroups 更加合理,你应该限制单个用户的 slice 整体的 cpu.shares (或者是 cpu.weight, 对于 cgroupv2) 保证在用户之间争夺 CPU 时间的时候能按照用户(而非进程)公平分配。

当然,服务器整个占用爆炸的时候会导致相应性下降,想要保证响应性的话,这时候应该考虑所有用户设置占用上限,比如 95% 这样的数值(会浪费性能)
ryd994
2020-11-20 17:33:20 +08:00
不必用技术方法去解决行政问题
规定编译必须加 nice 。不 nice 导致其他人用不了的,一次罚 xx
或者往所有人的 bash profile 加 alias make="nice make"
或者可以跑个后台服务,看到 gcc 和 make 就 renice

正经办法当然是 cgroup 啦
ryd994
2020-11-20 17:37:09 +08:00
*可以把 alias 加到 /etc/bash.bashrc 或者 /etc/profile 里
julyclyde
2020-11-20 17:47:01 +08:00
@yanqiyu cgroup 也依然是硬限制吧?在机器闲置的情况下会导致用不满
arcaitan
2020-11-24 10:13:09 +08:00
@ryd994 行政手段不太现实,每一个 it 人都很桀骜不驯很有自己 idea 的。
arcaitan
2020-11-24 10:24:55 +08:00
@yanqiyu 谢谢大佬回答,我对 cgroups 还不太了解,等我学习一下。我的一个担忧是,如果做了 cpu shares 的限制,用户上去做 make 操作的时候,如果一旦超出限制,是不是会把 make 整个停掉?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/727586

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX