【发布时间】:2012-12-17 06:31:14
【问题描述】:
来自 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(又名 -l)标志现在没用了?在多核机器上运行并行 makefile 的人在做什么?
【问题讨论】: