From 3880279a0ccb5ef79a65c52bd4d95f65744292b6 Mon Sep 17 00:00:00 2001 From: Sasha Smundak Date: Sun, 1 Aug 2021 14:38:07 -0700 Subject: [PATCH] Add an option to gather CPU profile. Bug: 172923994 Test: internal Change-Id: I43e6121855e909eaca2204a811f12174fb8b6b5f --- mk2rbc/cmd/mk2rbc.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/mk2rbc/cmd/mk2rbc.go b/mk2rbc/cmd/mk2rbc.go index 4d3d8d882..5a4ab06ce 100644 --- a/mk2rbc/cmd/mk2rbc.go +++ b/mk2rbc/cmd/mk2rbc.go @@ -28,6 +28,7 @@ import ( "path/filepath" "regexp" "runtime/debug" + "runtime/pprof" "sort" "strings" "time" @@ -52,6 +53,7 @@ var ( outputTop = flag.String("outdir", "", "write output files into this directory hierarchy") launcher = flag.String("launcher", "", "generated launcher path. If set, the non-flag argument is _product_name_") printProductConfigMap = flag.Bool("print_product_config_map", false, "print product config map and exit") + cpuProfile = flag.String("cpu_profile", "", "write cpu profile to file") traceCalls = flag.Bool("trace_calls", false, "trace function calls") ) @@ -122,6 +124,14 @@ func main() { tracedVariables = strings.Split(*traceVar, ",") } + if *cpuProfile != "" { + f, err := os.Create(*cpuProfile) + if err != nil { + quit(err) + } + pprof.StartCPUProfile(f) + defer pprof.StopCPUProfile() + } // Find out global variables getConfigVariables() getSoongVariables()