【问题标题】:How to change priority of make build process如何更改构建过程的优先级
【发布时间】:2014-08-15 15:06:14
【问题描述】:

我们有一个多用户登录的 Linux 服务器。如果有人运行 make -jN,它会占用整个服务器的 CPU 使用率,并且对其他用户的响应能力会急剧下降。

有什么办法可以减少Linux中任何人运行的make进程的priority

【问题讨论】:

    标签: c++ c shell makefile nice


    【解决方案1】:

    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的优先级,但可以避免造成过多的负载。

    【讨论】:

      【解决方案2】:

      用你自己的脚本替换make并添加一个“nice -n ”命令,这样-jN越高,nice越多。

      启动一个超级用户进程 ps -u "user name" | grep make,并计算进程数。在进程 id 上使用 renice 使它们符合要求,或者您想要的任何其他算法

      【讨论】:

      • 不是一个干净的解决方案,因为涉及多个用户,并且 make 参数是从 configure/automake 工具自动生成的
      • @Manav:这不是问题。
      • 问题是原来的make仍然需要调用,但是人们可以直接调用它。
      • 现在你有两个答案。第二个答案的问题是,您将使用 make 而不是执行实际工作的进程。
      • 你可以通过用户修改所有进程,假设 build 是他们唯一使用“renice -u”做的事情
      猜你喜欢
      • 1970-01-01
      • 2015-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-10
      • 1970-01-01
      • 2012-02-24
      相关资源
      最近更新 更多