Join GitHub today
Split release/dist_release makefile rules in two, reorganize and document makefiles #4996
What have you changed? (mandatory)
The main thing this patch does is to modify the default cargo release profile to use thinLTO instead of full LTO, and to turn debuginfo off. This reduces full build time by 25%, and partial build time by 30%.
It makes the various
One thing to note about this arrangement is that if any of the
In the process it deletes all of the experimental
As part of this work I restructured and documented the entire makefile. All pre-existing rules remain, they just might be in a different order. The
I have confirmed @BusyJay that even with debuginfo off perf reports symbol names in profiles. Whether this is sufficient for practical profiling I don't know. We'll find out.
Despite weakening the LTO, I expect the runtime performance to still be excellent, and reasonable to use for benchmarking, as long as the comparison is done between two thinLTO builds. That means one should avoid comparing
What are the type of the changes? (mandatory)
How has this PR been tested? (mandatory)
Scripted timing tests and months of experiments.
Does this PR affect documentation (docs) or release note? (mandatory)
Does this PR affect tidb-ansible update? (mandatory)
Refer to a related PR or issue link (optional)
Benchmark result if necessary (optional)
Add a few positive/negative examples (optional)
I pushed commits to address feedback @siddontang .
No. There are two problems related to debuginfo in RocksDB. They aren't fixed, but they are also not related specifically to the release profile: