Sound Open Firmware
Loading...
Searching...
No Matches
telemetry.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: BSD-3-Clause
2 *
3 * Copyright(c) 2024 Intel Corporation. All rights reserved.
4 */
5
12#ifndef __SOF_TELEMETRY_H__
13#define __SOF_TELEMETRY_H__
14
15#include <ipc4/base_fw.h>
16#ifdef __ZEPHYR__
17#include <zephyr/timing/timing.h>
18#endif
19
20#ifndef CONFIG_INTEL_ADSP_DEBUG_SLOT_MANAGER
22#define SOF_DW_TELEMETRY_SLOT 1
23#endif
24
26#define SOF_AVG_PERF_MEAS_DEPTH 64
28#define SOF_AVG_PERF_MEAS_PERIOD 16
29
39 uint32_t count;
42 uint32_t last_ccount;
43 uint32_t avg_utilization;
47 uint32_t rsvd[2];
48} __packed;
49
55 uint32_t separator_1;
56 struct system_tick_info system_tick_info[CONFIG_MAX_CORE_COUNT];
57} __packed;
58
65 size_t index;
66 uint8_t full;
67 size_t size;
68 size_t sum;
69};
70
77void telemetry_update(uint32_t begin_ccount, uint32_t current_ccount);
78
79#ifdef CONFIG_INTEL_ADSP_DEBUG_SLOT_MANAGER
86#endif
87
88#ifdef CONFIG_TIMING_FUNCTIONS
90#define telemetry_timestamp timing_counter_get
91#else
93#define telemetry_timestamp sof_cycle_get_64
94#endif
95
96#endif /* __SOF_TELEMETRY_H__ */
IPC4 Base Firmware parameters, memory configuration, and status definitions.
void telemetry_update(uint32_t begin_ccount, uint32_t current_ccount)
Update periodic telemetry metrics with elapsed core clock cycles.
struct system_tick_info * telemetry_get_systick_info_ptr(void)
Retrieve pointer to system tick telemetry structure for current core.
Per-core system tick and cycle execution metrics.
Definition telemetry.h:38
uint32_t last_ccount
Cycle counter snapshot at end of previous tick.
Definition telemetry.h:42
uint32_t peak_utilization
Peak CPU utilization percentage observed.
Definition telemetry.h:44
uint32_t rsvd[2]
Reserved for padding and future metrics.
Definition telemetry.h:47
uint32_t last_time_elapsed
Cycles consumed during previous tick interval.
Definition telemetry.h:40
uint32_t count
Total tick / measurement iteration count.
Definition telemetry.h:39
uint32_t max_time_elapsed
Peak cycle consumption observed across all intervals.
Definition telemetry.h:41
uint32_t avg_utilization
Rolling average CPU utilization percentage (0-100)
Definition telemetry.h:43
uint32_t peak_utilization_4k
Peak utilization over 4K sample rolling window.
Definition telemetry.h:45
uint32_t peak_utilization_8k
Peak utilization over 8K sample rolling window.
Definition telemetry.h:46
Circular queue tracking execution cycle history for rolling averages.
Definition telemetry.h:63
size_t elements[SOF_AVG_PERF_MEAS_DEPTH]
Historic cycle measurements.
Definition telemetry.h:64
uint8_t full
1 if queue has wrapped, 0 otherwise
Definition telemetry.h:66
size_t size
Number of valid measurements stored.
Definition telemetry.h:67
size_t sum
Running cumulative sum of valid measurements.
Definition telemetry.h:68
size_t index
Current head index in circular queue.
Definition telemetry.h:65
Layout of telemetry data published in shared Memory Window.
Definition telemetry.h:54
uint32_t separator_1
Header boundary delimiter.
Definition telemetry.h:55
#define SOF_AVG_PERF_MEAS_DEPTH
Number of historic entries in circular performance measurement queue.
Definition telemetry.h:26