mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-14 22:10:14 +00:00
perf script: Add -e option to flamegraph script
When processing the perf data file generated with multiple events, the flamegraph script will count all the events regardless of different event names. This patch tries to add a -e option to specify the event name that the flamegraph will be generated accordingly. If the -e option omitted, the behavior remains unchanged. 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-2-tianyou.li@intel.com Signed-off-by: Namhyung Kim <namhyung@kernel.org>
This commit is contained in:
@@ -94,6 +94,11 @@ class FlameGraphCLI:
|
||||
return child
|
||||
|
||||
def process_event(self, event):
|
||||
# ignore events where the event name does not match
|
||||
# the one specified by the user
|
||||
if self.args.event_name and event.get("ev_name") != self.args.event_name:
|
||||
return
|
||||
|
||||
pid = event.get("sample", {}).get("pid", 0)
|
||||
# event["dso"] sometimes contains /usr/lib/debug/lib/modules/*/vmlinux
|
||||
# for user-space processes; let's use pid for kernel or user-space distinction
|
||||
@@ -130,7 +135,10 @@ class FlameGraphCLI:
|
||||
else:
|
||||
output = subprocess.check_output(["perf", "report", "--header-only"])
|
||||
|
||||
return output.decode("utf-8")
|
||||
result = output.decode("utf-8")
|
||||
if self.args.event_name:
|
||||
result += "\nFocused event: " + self.args.event_name
|
||||
return result
|
||||
except Exception as err: # pylint: disable=broad-except
|
||||
print("Error reading report header: {}".format(err), file=sys.stderr)
|
||||
return ""
|
||||
@@ -241,6 +249,11 @@ if __name__ == "__main__":
|
||||
default=False,
|
||||
action="store_true",
|
||||
help="allow unprompted downloading of HTML template")
|
||||
parser.add_argument("-e", "--event",
|
||||
default="",
|
||||
dest="event_name",
|
||||
type=str,
|
||||
help="specify the event to generate flamegraph for")
|
||||
|
||||
cli_args = parser.parse_args()
|
||||
cli = FlameGraphCLI(cli_args)
|
||||
|
||||
Reference in New Issue
Block a user