来自 GNU make 的文档:http ://www.gnu.org/software/make/manual/make.html#Parallel
当系统负载很重时,您可能希望运行的作业比轻负载时要少。您可以使用 '-l' 选项告诉 make 根据平均负载限制一次运行的作业数量。'-l' 或 '--max-load' 选项后跟一个浮点数。例如,
-l 2.5
如果平均负载高于 2.5,将不会让 make 启动多个作业。没有后面数字的 '-l' 选项会删除负载限制,如果之前的 '-l' 选项给出了负载限制。
更准确地说,当 make 启动一个作业,并且它已经至少有一个作业在运行时,它会检查当前的平均负载;如果它不低于 '-l' 给出的限制,则 make 等待直到平均负载低于该限制,或者直到所有其他作业完成。
从 Linux 手册页了解正常运行时间:http ://www.unix.com/man-page/Linux/1/uptime/
系统负载平均值是处于可运行或不可中断状态的平均进程数。处于可运行状态的进程要么正在使用 CPU,要么正在等待使用 CPU。处于不可中断状态的进程正在等待一些 I/O 访问,例如等待磁盘。取三个时间间隔的平均值。负载平均值未针对系统中的 CPU 数量进行标准化,因此负载平均值为 1 意味着单个 CPU 系统一直在加载,而在 4 CPU 系统上则意味着它有 75% 的时间处于空闲状态。
我有一个并行的 makefile,我想做一件显而易见的事情:让 make 继续添加进程,直到我得到完整的 CPU 使用率,但我不会引起抖动。
今天的许多(全部?)机器都是多核的,这意味着平均负载不是制造商应该检查的数字,因为需要根据内核数量调整该数字。
这是否意味着 GNU make 的--max-load
(aka -l
) 标志现在没用了?在多核机器上运行并行 makefile 的人在做什么?