Adding John and Marko for doc review. 22/10/2019 13:54, Andrzej Ostruszka: > --- /dev/null > +++ b/doc/guides/prog_guide/lto.rst
This new file is not included in the prog guide index. > @@ -0,0 +1,36 @@ You are missing the mandatory SPDX and Copyright header. > +Link Time Optimization > +====================== > + > +The DPDK framework supports compilation with link time optimization Instead of "The DPDK framework", I prefer just "DPDK". > +turned on. This depends obviously on the capabilities of the compiler Not sure what you are talking about. If it is about fat objects, it is not obvious. > +to do "whole program" optimization at link time and is available only > +for compilers that support that feature (gcc and icc). To be more Please start a new sentence at the beginning of a line in the RsT file. It is easier to review and update. > +specific compiler have to support creation of ELF objects containing A comma is missing after "specific". > +both normal code and internal representation (fat-lto-objects). This is > +required since during build some code is generated by parsing produced > +ELF objects (pmdinfogen). > + > +The amount of performance gain that one can get from LTO depends on the > +compiler and the code that is being compiled. However LTO is also > +useful for additional code analysis done by the compiler. In particular > +due to interprocedural analysis compiler can produce additional warnings > +about variables that might be used uninitialized. Some of these > +warnings might be "false positives" though and you might need to > +explicitly initialize variable in order to silence the compiler. Any word about build speed degradation? > + > +Link time optimization can be enabled for whole DPDK framework by > +setting: > + > +.. code-block:: console > + CONFIG_ENABLE_LTO=y > + > +in config file for the case of make based build and by: > + > +.. code-block:: console > + meson build -Db_lto=true > + ninja -C build No need to add the ninja step here. > +for the case of meson based build. Better to describe the case (make or meson) before the code-block. > +Please note that turning LTO on causes considerable extension of > +compilation time. "compilation time" is not accurate. When referring to compilation + linking, it is better to use the words "build time". > --- a/doc/guides/rel_notes/release_19_11.rst > +++ b/doc/guides/rel_notes/release_19_11.rst > @@ -56,6 +56,14 @@ New Features > Also, make sure to start the actual text at the margin. > ========================================================= > > +**Added build support for Link Time Optimization.** > + > + LTO is an optimization technique used by the compiler to perform whole > + program analysis and optimization at link time. In order to do that > + compilers store their internal representation of the source code that > + the linker uses at the final stage of compilation process. > + > + See :doc:`../prog_guide/lto` for more information: Please rebase and add a blank line when adding a paragraph. > > Removed Items > ------------- > --- a/lib/librte_distributor/rte_distributor.c > +++ b/lib/librte_distributor/rte_distributor.c > -void > +void __vsym I replied in v2 about this change. Better to not talk about it here. I wanted to merge this series in 19.11-rc1 but I think it is better to move its merge in 19.11-rc2. Thanks for the work.