diff options
Diffstat (limited to 'resources/libraries')
-rw-r--r-- | resources/libraries/python/TelemetryUtil.py | 9 | ||||
-rw-r--r-- | resources/libraries/robot/performance/performance_actions.robot | 12 |
2 files changed, 16 insertions, 5 deletions
diff --git a/resources/libraries/python/TelemetryUtil.py b/resources/libraries/python/TelemetryUtil.py index 63d0bf60a7..1dbb2d45a3 100644 --- a/resources/libraries/python/TelemetryUtil.py +++ b/resources/libraries/python/TelemetryUtil.py @@ -1,4 +1,4 @@ -# Copyright (c) 2022 Cisco and/or its affiliates. +# Copyright (c) 2025 Cisco and/or its affiliates. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at: @@ -16,7 +16,8 @@ from resources.libraries.python.model.ExportResult import append_telemetry from resources.libraries.python.Constants import Constants from resources.libraries.python.ssh import exec_cmd_no_error -from resources.libraries.python.topology import NodeType +from resources.libraries.python.topology import Topology, NodeType +from resources.libraries.python.SysctlUtil import SysctlUtil __all__ = ["TelemetryUtil"] @@ -51,6 +52,10 @@ class TelemetryUtil: cd_cmd += f"sh -c \"cd {Constants.REMOTE_FW_DIR}/" cd_cmd += f"{Constants.RESOURCES_TOOLS}" + # Allow userspace to directly access perf counters on aarch64 + if Topology.get_node_arch(node) == u"aarch64": + SysctlUtil.set_sysctl_value(node, u"kernel/perf_user_access", 1) + if spath: bin_cmd = f"python3 -m telemetry --config {config} --hook {spath}\"" else: diff --git a/resources/libraries/robot/performance/performance_actions.robot b/resources/libraries/robot/performance/performance_actions.robot index d588bc9f83..df520e0757 100644 --- a/resources/libraries/robot/performance/performance_actions.robot +++ b/resources/libraries/robot/performance/performance_actions.robot @@ -1,4 +1,4 @@ -# Copyright (c) 2023 Cisco and/or its affiliates. +# Copyright (c) 2025 Cisco and/or its affiliates. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at: @@ -110,6 +110,9 @@ | | ${transaction_scale} = | Get Transaction Scale | | ${transaction_type} = | Get Transaction Type | | ${use_latency} = | Get Use Latency +| | ${node_arch} = | Get Node Arch | ${nodes[u'DUT1']} +| | ${profile} = | Set Variable If | "${node_arch}" == "aarch64" +| | ... | vppctl_runtime_arm.yaml | vppctl_runtime.yaml | | Send traffic on tg | | ... | duration=${-1} | | ... | rate=${runtime_rate} @@ -126,7 +129,7 @@ | | ... | ramp_up_duration=${ramp_up_duration} | | ... | ramp_up_rate=${ramp_up_rate} | | Run Telemetry On All DUTs -| | ... | ${nodes} | profile=vppctl_runtime.yaml +| | ... | ${nodes} | profile=${profile} | | ... | rate=${telemetry_rate} | export=${telemetry_export} | | Stop traffic on tg @@ -212,6 +215,9 @@ | | ... | See documentation of the called keyword for required test variables. | | | | ${runtime_duration} = | Get Runtime Duration +| | ${node_arch} = | Get Node Arch | ${nodes['${iperf_server_node}']} +| | ${profile} = | Set Variable If | "${node_arch}" == "aarch64" +| | ... | vppctl_runtime_arm.yaml | vppctl_runtime.yaml | | ${pids}= | iPerf Client Start Remote Exec | | | ... | ${nodes['${iperf_client_node}']} | | | ... | duration=${-1} @@ -226,7 +232,7 @@ | | | ... | bind=${iperf_client_bind} | | | ... | affinity=${iperf_client_affinity} | | Run Telemetry On All DUTs -| | ... | ${nodes} | profile=vppctl_runtime.yaml +| | ... | ${nodes} | profile=${profile} | | ... | rate=${telemetry_rate} | export=${telemetry_export} | | iPerf Client Stop Remote Exec | ${nodes['${iperf_client_node}']} | ${pids} |