来自GNU make文档:http://www.gnu.org/software/make/manual/make.html#Parallel
当系统负载较高时,您可能希望运行的作业数量比负载较轻时少。 您可以使用“-l”选项告诉make基于平均负载限制一次运行的作业数。 “-l”或“--max-load”选项后跟一个浮点数。例如,
如果负载平均值高于2.5,则make不会启动多个作业。如果之前使用“-l”选项指定了负载限制,但现在使用“-l”选项时没有指定数字,则“-l”选项将删除负载限制。-l 2.5
更确切地说,在make尝试启动作业并且已经有至少一个作业正在运行时,它会检查当前的负载平均值;如果负载平均值不低于使用“-l”指定的限制,则make会等待,直到负载平均值降至此限制以下,或者直到所有其他作业完成为止。
来自Linux man页面uptime: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(又名-l)标志现在已经无用了?在多核心机器上运行并行makefile的人们在做什么?