美文网首页Linux学习之路Linux小知识
如何调整Make编译所占负载

如何调整Make编译所占负载

作者: QuietHeart | 来源:发表于2020-09-16 10:55 被阅读0次

本文主要概述Linux下如何调整使用Make进行编译时占用的系统负载。

设置方式

为了使编译的时候负载不要过高,运行 make 之前最好设置好 MAKEFLAGS ,例如如下运行:

$export MAKEFLAGS=-l16
$make

为简单期间,可以将 export MAKEFLAGS-l16= 追加到 ~/.bashrc 中,这样以后登录后便不用重复设置了。

echo "export MAKEFLAGS=-l16" >>~/.bashrc

若添加到 /etc/profile 或者 /etc/bash.bashrc 中,那么所有用户都不用设置了(当然需要管理员权限)。

设置前的负载:

设置后的负载:

缺陷

也有一些限制,

  1. 这样控制的是所有人的 make 占用系统资源的情况,目前还无法精确到一个人占用多少(不太可能实现)

    所以如果期望所有人编译时,系统能留出8个核是空闲的,那么就设置成 MAKEFLAGS=-l24

  2. 当然如果有人脚本里面私下写成 make -l xxx 就控制不住了(一般不会有人专门这样改)。

原理

结合 MAKEFLAGS 环境变量,和 -l 选项。 将合适的 -l 内容,放到 MAKEFLAGS 之后,再执行 make.

  1. make 可通过 -l 选项可以指定负载上限,当负载超过指定值,Make将不会再创建额外job。
  2. MAKEFLAGS 环境变量指定所有 make 进程的默认选项。
  3. 系统负载单核单CPU,1以下是空闲,3的时候表示很忙,5-8的时候表示忙得难以处理进程了。
  4. 当前系统 cat /proc/cpuinfo 可知 cpu 总共为 32 核心,所以建议设置成32*0.5=16。
  5. 通过 top 或者 uptime 可查看最新1分钟、5分钟、15分钟的平均系统负载,正常以5-15分钟为准。

负载单核单CPU负载在1以下比较空闲,3的时候就会很忙,5-8的时候就会难以处理进程了。

我们可以将阈值设置为3。那么单核单CPU若达到3, 则MAKE不继续创建新的任务。当前系统为32核,那么如果负载达到96就不很忙了。

top,包括 uptime, 可以查看负载,依次列出1,5,15分钟的平均负载,正常以5-15分钟为基准。

相关文章

网友评论

    本文标题:如何调整Make编译所占负载

    本文链接:https://www.haomeiwen.com/subject/nfrbektx.html