[edk2-devel] [Patch 00/10 V3] Enable multiple process AutoGen
Laszlo Ersek
lersek at redhat.com
Tue Jul 23 11:30:57 UTC 2019
On 07/23/19 05:58, Bob Feng wrote:
> BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=1875
>
> In order to improve the build performance, we implemented
> multiple-processes AutoGen. This change will reduce 20% time
> for AutoGen phase.
>
> The design document can be got from:
> https://edk2.groups.io/g/devel/files/Designs/2019/0627/Multiple-thread-AutoGen.pdf
>
> This patch serial pass the build of Ovmf, MinKabylake, MinPurley, packages
> under Edk2 repository and intel client and server platforms.
>
> V3:
> 1. Fixed incremental build issue.
> 2. Set AutoGen worker number to be align with "-n THREADNUMBER"
> 3. Enable block log queue.
> V2:
> 1. The first version missed autogen related commit
> from e812a812c1a0800c49e11507cb46222351520cc7. V2 add those commit
> back.
> 2. Move CreateAsBuildInf into AutoGenWorker process
> 3. Save GlobalVar_<platform guid>_<arch>.bin to build folder.
> 4. Regenerate patches based on master bb824f685d
Tested this series on top of commit cf2d8d4978e8.
(1) The GlobalVar*.bin files are now located under the Build directory,
so that's OK.
(2) Rebuilding OVMF (in a standalone edk2 clone, not as a QEMU
submodule) with different -D flags works fine now. The fw binary hash
matches a similar rebuild without the series applied.
(3) The blocking log queue works fine with Ctrl-S / Ctrl-Q.
Please see my note on the queue size (currently: constant 60) under
patch#10. I think the factor 10 that I suggested makes sense as well,
because I tested V3 with 4 threads (meaning room for 60/4=15 messages
per thread), and I felt that the compilation threads got blocked just a
bit too late after I pressed Ctrl-S. Therefore, a factor of 10 (rather
than the effective 15 that I tested now) will make for a more direct
user experience.
(4) I tested "-n1" and "-n2"; they seem to work fine.
(5) Restarting a build (incrementally) after Ctrl-C seems to work fine.
(6) The build seems to notice changes to .c files. OK.
(7) This version works fine as part of QEMU's edk2 submodule, with "make
-j 4 -C roms efi". All six firmware binaries built there are functional.
* For patches 01 through 09:
Tested-by: Laszlo Ersek <lersek at redhat.com>
* For patch 10: I'd like to test v4, with the proportional log queue
size, and give my T-b then.
* If you change other patches in v4 (01-09), then please drop my
Tested-by from those.
* Note that I didn't test:
- python3
- the "--hash" option
- the "--binary-destination" / "--binary-source" options
(I'm not sure what those options do in the first place)
- the "--re-parse" option
- the "--no-cache" option
- the "--genfds-multi-thread" option
Hopefully others can test those.
Thanks
Laszlo
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#44246): https://edk2.groups.io/g/devel/message/44246
Mute This Topic: https://groups.io/mt/32567312/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-
More information about the edk2-devel-archive
mailing list