我们有一个有多个用户登录的 Linux 服务器。如果有人运行make -jN
它,则会占用整个服务器的 CPU 使用率,并且对其他用户的响应能力会急剧下降。
有什么办法可以减少Linux 中任何人运行priority
的make
进程的数量吗?
Make 有一个 '-l' (--load-average) 选项。如果您指定“make -l 3”,如果已经有作业在运行并且负载超过 3,make 将不会启动其他作业。
从手册页:
-l [load], --load-average[=load] Specifies that no new jobs (commands) should be started if there are others jobs running and the load average is at least load (a floating-point number). With no argument, removes a previous load limit.
它并没有真正降低make的优先级,但可以避免造成过多的负载。
用你自己的脚本替换 make 并添加一个“nice -n <>”命令,这样 -jN 越高越好。
启动一个执行 ps -u "user name" | 的超级用户进程 grep make,并计算进程数。在进程 ID 上使用 renice 使它们符合要求,或者您想要的任何其他算法