[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [UNIKRAFT PATCH v2 1/2] build: Add PGO support
Profile-Guided Optimization is a method used by compilers to produce optimal code by using application runtime data. PGO involves two phases one that implies a compilation and a run that will generate the profiling files for the application and one that implies a compilation in which the compiler uses the profiling data to make a better estimate of the program’s control flow and to produce an optimized executable file. Add the configuration for PGO phases in MENUCONFIG and the correspondent flag for LDFLAGS. Signed-off-by: Alice Suiu <alicesuiu17@xxxxxxxxx> --- Config.uk | 26 ++++++++++++++++++++++++++ Makefile.uk | 8 ++++++++ 2 files changed, 34 insertions(+) diff --git a/Config.uk b/Config.uk index 3235b91..a815b6b 100644 --- a/Config.uk +++ b/Config.uk @@ -86,6 +86,32 @@ config OPTIMIZE_LTO will increase overall building time but creates more efficient Unikraft binaries. +config OPTIMIZE_PGO + bool "PGO - Profile-guided optimization" + default n + help + Enables GCC to do code optimizations through PGO. + +if OPTIMIZE_PGO + choice PGO_PHASES + prompt "PGO Options" + default OPTIMIZE_PGO_GENERATE + help + Enables GCC to do code optimizations through PGO. + + config OPTIMIZE_PGO_GENERATE + bool "profile-generate" + help + Enables GCC to generate data for code optimization through PGO. + + config OPTIMIZE_PGO_USE + bool "profile-use" + help + Enables GCC to do code optimizations using data generated from + the profile-generated phase of PGO. + endchoice +endif + choice prompt "Debug information level" default DEBUG_SYMBOLS_LVL3 diff --git a/Makefile.uk b/Makefile.uk index a78afc0..78d802c 100644 --- a/Makefile.uk +++ b/Makefile.uk @@ -36,6 +36,14 @@ COMPFLAGS-$(CONFIG_OPTIMIZE_LTO) += -flto LIBLDFLAGS-$(CONFIG_OPTIMIZE_LTO) += $(COMPFLAGS) $(COMPFLAGS-y) $(ARCHFLAGS) $(ARCHFLAGS-y) LDFLAGS-$(CONFIG_OPTIMIZE_LTO) += $(COMPFLAGS) $(COMPFLAGS-y) $(ARCHFLAGS) $(ARCHFLAGS-y) +# PGO - profile-generate phase - requires the -fprofile-generate flag +# when compiling the application and linking all libraries in the system. +LDFLAGS-$(CONFIG_OPTIMIZE_PGO_GENERATE) += $(COMPFLAGS) $(COMPFLAGS-y) $(ARCHFLAGS) $(ARCHFLAGS-y) -fprofile-generate + +# PGO - profile-use phase - requires the -fprofile-use flag +# when compiling the application and linking all libraries in the system. +LDFLAGS-$(CONFIG_OPTIMIZE_PGO_USE) += $(COMPFLAGS) $(COMPFLAGS-y) $(ARCHFLAGS) $(ARCHFLAGS-y) -fprofile-use + DBGFLAGS-$(CONFIG_DEBUG_SYMBOLS_LVL0) += -g0 DBGFLAGS-$(CONFIG_DEBUG_SYMBOLS_LVL1) += -g1 DBGFLAGS-$(CONFIG_DEBUG_SYMBOLS_LVL2) += -g2 -- 2.17.1
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |