make 命令中使用 $($(nproc) + 1) 的逻辑是什么?

make 命令中使用 $($(nproc) + 1) 的逻辑是什么?

我试图根据一些在线指南在 Ubuntu 中安装 OpenCV。其中指南之一是这个。它有以下行:

make -j $(($(nproc) + 1))

返回nproc系统上可用的处理器/线程的数量。那么,比现有的更高的有什么优势呢?

答案1

大多数构建都受 I/O 限制,而不是 CPU 限制,因此 whilenproc是一个不错的起点(另请参阅如何确定传递给 make -j 选项的最大数量?),大多数构建可以使用更多。如果您使用小型虚拟机进行构建(您经常会在构建场中找到这种虚拟机),则尤其如此;在那里你最终会得到-j 1or -j 2,并且使用-j 2or-j 3通常会导致更短的构建时间,而没有与诸如$(nproc) * 2(即使在 8 线程系统上也可能导致问题的公式相关的风险,更不用说你发现的更大的线程数了服务器)。

相关内容