我最近试图从离开
PARALLEL_MAKE
和BB_NUMBER_THREADS
空白的情况下开始Yocto构建任务用48或64 VCPU的主机发表评论并启动构建。构建失败了。使用32个VCPU,它仍然有效。 Yocto仍然是古老的Krogoth,目前无法更新。有人知道是否有一个限制比32个VCPU的限制?这是仅适用于较旧的Yocto版本还是通常是问题?
update:该错误与用于编译rnnoise-plugin的自定义配方有关:
../rnnoise-plugin/1.0-r0/temp/log.do_compile.1449627
rnnoise-plugin/1.0-r0/asound-pcm-plugin-rnnoise.c:16:28: fatal error: alsa/asoundlib.h: No such file or directory
#include <alsa/asoundlib.h>
^
如上所述,我只在48或64 VCPU主机上使用
PARALLEL_MAKE
和
BB_NUMBER_THREADS
留空白时才会遇到此错误。如果我设置了PARALLEL_MAKE="-j 32"
和BB_NUMBER_THREADS="32"
,则没有任何错误。
似乎在用这么多线程编译时,您遇到了比赛条件。
PARALLEL_MAKE
因此,使用多个物理CPU时最多使用20个线程。如果您的系统只有一个CPU,这可能是一个虚拟化问题。
对于单个插座系统(即一个CPU),您不必覆盖此变量即可在构建过程中获得最佳并行性。但是,如果您使用非常大的系统使用多个物理CPU,则可能需要确保parallel_make变量设置不高于“ -j 20”。
YOCTO项目-Parallel_Make
对于提高的建筑速度,您可以通过修补适当的makefile(depebugging Parallel MakeRaceseDit)来尝试解决此依赖性问题。
:
在覆盖其食谱中覆盖特定软件包的情况下,可以设置make
PARALLEL_MAKE
来编译一个特定的软件包。而其他软件包则使用最大的并行性。
但请记住,YOCTO参考还建议将使用硬件虚拟化时可能是多个CPU的大型系统上限制为cpu的大型系统。