mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-12-27 11:06:41 -05:00
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:
@@ -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()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user