我想知道使用GNU make
构建项目所需的最佳内核数量。
我可以使用--max-load
调优现有系统,但我想知道将核心数量和内存增加一倍或三倍是否会改善构建挂钟时间。
如果我可以收集有关等待make
多少配方等待空闲内核执行以及它们占用内核多长时间的统计信息,则可能会变成标准的作业调度问题。
真的,我认为没有任何办法可以回答您的问题。也许您可以更具体地了解自己想知道的内容。
显然,您拥有的内核越多,假设有足够的内存来支持它们,那么可以并行调用更多的配方make
而不会破坏您的系统。
[如果您有2个内核并且运行make -j300
,那么make将立即执行300个作业,而您的操作系统将尝试同时运行所有作业。最有可能的是,您的系统将进行大量的交换和上下文切换,以至于进展甚微,并且只需较少的挂钟时间即可运行make -j2
。
另一方面,如果您具有256核,那么make -j300
可能很合理...假设您有足够的内存来确保所有这些作业都不会等待换出内存。
当然,在某些时候(但是除非您有很多钱,否则可能会远离任何合理数量的内核),您将遇到磁盘IO问题,同时运行许多编译器进程,从磁盘读取源代码进行编译。