perf jevents: Add descriptions to metricgroup abstraction

Add a function to recursively generate metric group descriptions.

Signed-off-by: Ian Rogers <irogers@google.com>
Tested-by: Thomas Falcon <thomas.falcon@intel.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
This commit is contained in:
Ian Rogers
2025-12-02 09:50:00 -08:00
committed by Namhyung Kim
parent e7b9e750b3
commit 38d9d511ed

View File

@@ -475,6 +475,8 @@ class Metric:
return result
def ToMetricGroupDescriptions(self, root: bool = True) -> Dict[str, str]:
return {}
class _MetricJsonEncoder(json.JSONEncoder):
"""Special handling for Metric objects."""
@@ -493,10 +495,12 @@ class MetricGroup:
which can facilitate arrangements similar to trees.
"""
def __init__(self, name: str, metric_list: List[Union[Metric,
'MetricGroup']]):
def __init__(self, name: str,
metric_list: List[Union[Metric, 'MetricGroup']],
description: Optional[str] = None):
self.name = name
self.metric_list = metric_list
self.description = description
for metric in metric_list:
metric.AddToMetricGroup(self)
@@ -516,6 +520,12 @@ class MetricGroup:
def ToPerfJson(self) -> str:
return json.dumps(sorted(self.Flatten()), indent=2, cls=_MetricJsonEncoder)
def ToMetricGroupDescriptions(self, root: bool = True) -> Dict[str, str]:
result = {self.name: self.description} if self.description else {}
for x in self.metric_list:
result.update(x.ToMetricGroupDescriptions(False))
return result
def __str__(self) -> str:
return self.ToPerfJson()