mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-12-27 12:21:22 -05:00
perf jevents: Update metric constraint support
Previous metric constraints were binary, either none or don't group when the NMI watchdog is present. Update to match the definitions in 'enum metric_event_groups' in pmu-events.h. 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:
@@ -4,8 +4,14 @@ import ast
|
||||
import decimal
|
||||
import json
|
||||
import re
|
||||
from enum import Enum
|
||||
from typing import Dict, List, Optional, Set, Tuple, Union
|
||||
|
||||
class MetricConstraint(Enum):
|
||||
GROUPED_EVENTS = 0
|
||||
NO_GROUP_EVENTS = 1
|
||||
NO_GROUP_EVENTS_NMI = 2
|
||||
NO_GROUP_EVENTS_SMT = 3
|
||||
|
||||
class Expression:
|
||||
"""Abstract base class of elements in a metric expression."""
|
||||
@@ -423,14 +429,14 @@ class Metric:
|
||||
groups: Set[str]
|
||||
expr: Expression
|
||||
scale_unit: str
|
||||
constraint: bool
|
||||
constraint: MetricConstraint
|
||||
|
||||
def __init__(self,
|
||||
name: str,
|
||||
description: str,
|
||||
expr: Expression,
|
||||
scale_unit: str,
|
||||
constraint: bool = False):
|
||||
constraint: MetricConstraint = MetricConstraint.GROUPED_EVENTS):
|
||||
self.name = name
|
||||
self.description = description
|
||||
self.expr = expr.Simplify()
|
||||
@@ -464,8 +470,8 @@ class Metric:
|
||||
'MetricExpr': self.expr.ToPerfJson(),
|
||||
'ScaleUnit': self.scale_unit
|
||||
}
|
||||
if self.constraint:
|
||||
result['MetricConstraint'] = 'NO_NMI_WATCHDOG'
|
||||
if self.constraint != MetricConstraint.GROUPED_EVENTS:
|
||||
result['MetricConstraint'] = self.constraint.name
|
||||
|
||||
return result
|
||||
|
||||
|
||||
Reference in New Issue
Block a user