TianoCore Community Design Meeting Minutes - Jul 26

Ni, Ray

1. Edk2 Build Cache Enhancement
Presenter: Steven Shi
Slides: https://edk2.groups.io/g/devel/files/Designs/2019/0726/Edk2BuildCacheEnhancement-v1.pdf

* Background (page #2 - #8)
Build cache is enabled already in today's build tool.
Hash depends on unnecessary inputs.
Cache is very easy to miss.

* Proposal (page #9 - #12)
Fine-grain and precise hash is needed -> Post-makefile Cache checkpoint
Today's coarse hash is still needed to quickly bypass no source change -> Pre-makefile Cache checkpoint
Question to page #3: The proposal is to improve the cache hit rate through Fine-grain and precise hash. When cache is hit, build task directly jumps from AutoGen to GenFds. Do we have plans to consider jumping from AutoGen to other phases?
Answer: We call it multiple-level build caches. Refer to last page. Today focuses on improving the cache hit rate only.
No build options to enable it individually.
Question to page #10: What Others in AutoGen mean?
Answer: Others can be removed in the flow chart. Post-makefile Cache checkpoint is the last step in AutoGen.
Module Post-makefile hash = Hash(Makefile content) + Hash (include headers contents) + hash (AutoGen files contents) + lib Post-makefile hash + Hash (Module files contents)

* Performance (page #13)
With only pre-makefile cache checkpoint, build is fast (<30s) without changes, but slow (2-3mins) with DSC changes.
With both pre&post-makefile cache checkpoint, build is fast (~40s) with DSC changes.
Question: What's the penalty (extra time if all modules post-makefile cache miss against cache disable) of post-makefile cache checkpoint?
Answer: Haven't collected the data. Will collect and present.

* Open
Question: Cache can be shared across platforms or is bound to a specific platform?
Answer: No share across platforms. But a good timing to consider the share across platforms with the new fine-grain and precise hash. Share is possible if the output path can be excluded from hash.
No support of debug symbol cache.

2. Open: Seeking tasks for Google Summer of Code (Stephano Cetola)
Who will investigate "BZ1959 BaseLib.h linked list macros EFI_LIST_FOR_EACH_SAFE"? Pkg maintainers or new comers to work on?
Liming will have a look at it.
Google Summer of Code looks for projects that students can learn from. EDKII Bugzilla is a good candidate.

3. Open: HPE will bring Redfish topics to this meeting in future (Abner Chang)