50 lines
1.4 KiB
Python
Executable File
50 lines
1.4 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
# SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause)
|
|
import argparse
|
|
import os
|
|
from metric import (JsonEncodeMetric, JsonEncodeMetricGroupDescriptions, LoadEvents,
|
|
MetricGroup)
|
|
from common_metrics import Cycles
|
|
|
|
# Global command line arguments.
|
|
_args = None
|
|
|
|
|
|
def main() -> None:
|
|
global _args
|
|
|
|
def dir_path(path: str) -> str:
|
|
"""Validate path is a directory for argparse."""
|
|
if os.path.isdir(path):
|
|
return path
|
|
raise argparse.ArgumentTypeError(
|
|
f'\'{path}\' is not a valid directory')
|
|
|
|
parser = argparse.ArgumentParser(description="ARM perf json generator")
|
|
parser.add_argument(
|
|
"-metricgroups", help="Generate metricgroups data", action='store_true')
|
|
parser.add_argument("vendor", help="e.g. arm")
|
|
parser.add_argument("model", help="e.g. neoverse-n1")
|
|
parser.add_argument(
|
|
'events_path',
|
|
type=dir_path,
|
|
help='Root of tree containing architecture directories containing json files'
|
|
)
|
|
_args = parser.parse_args()
|
|
|
|
directory = f"{_args.events_path}/arm64/{_args.vendor}/{_args.model}/"
|
|
LoadEvents(directory)
|
|
|
|
all_metrics = MetricGroup("", [
|
|
Cycles(),
|
|
])
|
|
|
|
if _args.metricgroups:
|
|
print(JsonEncodeMetricGroupDescriptions(all_metrics))
|
|
else:
|
|
print(JsonEncodeMetric(all_metrics))
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|