[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [UNIKRAFT PATCH 2/3] plat/kvm, build: Implement the profle-generate and profile-use phase for PGO.
Call the __gcov_exit() function in a conditional way (using ifdef guard) in the function ukplat_terminate(). Thus, the data file (*.gcda) is generated within the Unikraft filesystem. Use 9pfs to transfer the *.gcda file from Unikraft to the host system. Signed-off-by: Alice Suiu <alicesuiu17@xxxxxxxxx> --- Makefile.uk | 6 ++++-- plat/kvm/shutdown.c | 27 +++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/Makefile.uk b/Makefile.uk index abc5475..e201785 100644 --- a/Makefile.uk +++ b/Makefile.uk @@ -36,10 +36,12 @@ 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 -COMPFLAGS-$(CONFIG_OPTIMIZE_PGO_GENERATE) += -fprofile-generate +# PGO - profile-generate phase LDFLAGS-$(CONFIG_OPTIMIZE_PGO_GENERATE) += $(COMPFLAGS) $(COMPFLAGS-y) $(ARCHFLAGS) $(ARCHFLAGS-y) -fprofile-generate +# PGO - profile-use phase +LDFLAGS-$(CONFIG_OPTIMIZE_PGO_USE) += $(COMPFLAGS) $(COMPFLAGS-y) $(ARCHFLAGS) $(ARCHFLAGS-y) -O3 -fprofile-use=main.gcda + # ASAN COMPFLAGS-$(CONFIG_OPTIMIZE_ASAN) += -fsanitize=address LDFLAGS-$(CONFIG_OPTIMIZE_ASAN) += $(COMPFLAGS) $(COMPFLAGS-y) $(ARCHFLAGS) $(ARCHFLAGS-y) -fsanitize=address diff --git a/plat/kvm/shutdown.c b/plat/kvm/shutdown.c index cce26b7..9ca909f 100644 --- a/plat/kvm/shutdown.c +++ b/plat/kvm/shutdown.c @@ -27,11 +27,38 @@ #include <uk/print.h> #include <uk/plat/bootstrap.h> +#if CONFIG_OPTIMIZE_PGO_GENERATE +#include <sys/stat.h> +#include <sys/types.h> + +#define GCOV_GENERATE_FILE "/home/alice/Documents/Diploma/Comp-opt/apps/helloworld/build/apphelloworld/main.gcda" + +void create_hierarchy() +{ + mkdir("/home", 0777); + mkdir("/home/alice", 0777); + mkdir("/home/alice/Documents", 0777); + mkdir("/home/alice/Documents/Diploma", 0777); + mkdir("/home/alice/Documents/Diploma/Comp-opt", 0777); + mkdir("/home/alice/Documents/Diploma/Comp-opt/apps", 0777); + mkdir("/home/alice/Documents/Diploma/Comp-opt/apps/helloworld", 0777); + mkdir("/home/alice/Documents/Diploma/Comp-opt/apps/helloworld/build", 0777); + mkdir("/home/alice/Documents/Diploma/Comp-opt/apps/helloworld/build/apphelloworld", 0777); +} + +#endif + static void cpu_halt(void) __noreturn; /* TODO: implement CPU reset */ void ukplat_terminate(enum ukplat_gstate request __unused) { + +#if CONFIG_OPTIMIZE_PGO_GENERATE + create_hierarchy(); + __gcov_exit(); +#endif + uk_pr_info("Unikraft halted\n"); /* Try to make system off */ -- 2.17.1
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |