On 07/22/19 09:11, Jordan Justen wrote: > Maybe a commit message tweak would be: > > OvmfPkg/build.sh: enable multithreaded build by default > > On 2019-07-21 17:58:16, Rebecca Cran wrote: >> When building both BaseTools and OvmfPkg, enable multiprocessor builds, >> using up to the number of cores available in the system. This can >> drastically reduce build times. >> For example, on a modern ThreadRipper system the >> time required to build decreases from 3 minutes to 1 minute. >> >> Signed-off-by: Rebecca Cran <rebe...@bsdio.com> >> --- >> OvmfPkg/build.sh | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/OvmfPkg/build.sh b/OvmfPkg/build.sh >> index 4fcbdd2bc9..5d3a672bd2 100755 >> --- a/OvmfPkg/build.sh >> +++ b/OvmfPkg/build.sh >> @@ -40,7 +40,7 @@ ARCH_X64=no >> BUILDTARGET=DEBUG >> BUILD_OPTIONS= >> PLATFORMFILE= >> -THREADNUMBER=1 >> +THREADNUMBER=$(getconf _NPROCESSORS_ONLN) > > Based on OvmfPkg/build.sh --help, I think initializing THREADNUMBER to > 0 might have the same effect, but not depend on getconf. Does that > work?
My understanding is the same. The zero value causes the edk2 "build" utility to fetch the logical CPU count with Python's multiprocessing.cpu_count() method: [Source/Python/build/build.py] if self.ThreadNumber == 0: try: self.ThreadNumber = multiprocessing.cpu_count() except (ImportError, NotImplementedError): self.ThreadNumber = 1 > I'm not sure why I defaulted this to single threaded build way back in > 578630802e. Your commit 578630802ee5 ("accept "-n THREADNUMBER" in OvmfPkg build script", 2012-07-10) predates the now-default invocation of multiprocessing.cpu_count() in "build.py". The latter was added in 29af38b0f8f2 ("BaseTools: Enable MAX_CONCURRENT_THREAD_NUMBER = 0 feature", 2018-01-15). Therefore, your patch was consistent with the BaseTools behavior, at the time you wrote it. We can consider Rebecca's patch to restore the consistency between "OvmfPkg/build.sh" and the BaseTools default behavior. > It looks like if we tweaked things more, and omitted adding the -n > parameter to the build command by default, then it would use the > Conf/target.txt value, which by default appears to also be 0, so this > could accomplish the same thing, but also let a user set it in > target.txt. I assume that users prefer passing a simple command line parameter to editing a text file. IOW I believe "THREADNUMBER=0" would be the best solution. Thanks Laszlo > > -Jordan > >> LAST_ARG= >> RUN_QEMU=no >> ENABLE_FLASH=no >> -- >> 2.22.0 >> > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#44151): https://edk2.groups.io/g/devel/message/44151 Mute This Topic: https://groups.io/mt/32553200/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-