perf script: Handle -i option for perf script flamegraph
authorTianyou Li <tianyou.li@intel.com>
Tue, 10 Jun 2025 04:04:22 +0000 (12:04 +0800)
committerNamhyung Kim <namhyung@kernel.org>
Tue, 24 Jun 2025 17:27:50 +0000 (10:27 -0700)
If specify the perf data file with -i option, the script will try to
read the header information regardless of the file name specified,
instead it will try to access the perf.data. This simple patch use the
file name from -i option for command perf report --header-only to read
the header.

Signed-off-by: Tianyou Li <tianyou.li@intel.com>
Reviewed-by: Pan Deng <pan.deng@intel.com>
Reviewed-by: Zhiguo Zhou <zhiguo.zhou@intel.com>
Reviewed-by: Wangyang Guo <wangyang.guo@intel.com>
Reviewed-by: Tim Chen <tim.c.chen@linux.intel.com>
Link: https://lore.kernel.org/r/20250610040536.2390060-1-tianyou.li@intel.com
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
tools/perf/scripts/python/flamegraph.py

index cf7ce8229a6cae61848c735fd0a38cb5748a7dd2..4f82dfea0a70fe5b7e6b7e9db750daeacb75e991 100755 (executable)
@@ -123,7 +123,13 @@ class FlameGraphCLI:
             return ""
 
         try:
-            output = subprocess.check_output(["perf", "report", "--header-only"])
+            # if the file name other than perf.data is given,
+            # we read the header of that file
+            if self.args.input:
+                output = subprocess.check_output(["perf", "report", "--header-only", "-i", self.args.input])
+            else:
+                output = subprocess.check_output(["perf", "report", "--header-only"])
+
             return output.decode("utf-8")
         except Exception as err:  # pylint: disable=broad-except
             print("Error reading report header: {}".format(err), file=sys.stderr)