例如,在 CPU 负载较低的配置阶段使用 -jN > nrcpus 不是有益吗?然后编译时有-jN = nrcpus,负载应该均匀分配到每个CPU吗?
在构建环境中实施这有多困难?是否需要更改每个步骤的每个配置文件?如果多个项目使用相同的“make”程序,是否可以实现它们的自动化?
这是假设工作负载永远不受 I/O 限制。
答案1
虽然指定的 Nmake -jN
是固定的最大值,但有一种方法可以根据系统负载限制并行作业。请参阅make -l load
或make --load-average[=load]
参考:
https://www.gnu.org/software/make/manual/make.html#Options-Summary https://www.gnu.org/software/make/manual/make.html#Parallel
-l load
请注意,较新的 gnu make 支持该选项,但安装的版本可能较旧。
对于选择负载,这里有一个示例:首先调整-jN
服务器上的最佳性能(也尝试使用 构建源gcc -pipe
);观察负载平均值后,进行调整-l load
,使该值足以支持您的构建活动。调整-l load
还可以帮助避免服务器过载。