[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