是否可以根据 CPU 负载使 -jN 动态化?

是否可以根据 CPU 负载使 -jN 动态化?

例如,在 CPU 负载较低的配置阶段使用 -jN > nrcpus 不是有益吗?然后编译时有-jN = nrcpus,负载应该均匀分配到每个CPU吗?

在构建环境中实施这有多困难?是否需要更改每个步骤的每个配置文件?如果多个项目使用相同的“make”程序,是否可以实现它们的自动化?

这是假设工作负载永远不受 I/O 限制。

答案1

虽然指定的 Nmake -jN是固定的最大值,但有一种方法可以根据系统负载限制并行作业。请参阅make -l loadmake --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还可以帮助避免服务器过载。

相关内容