From 1f8facbfc3915bc07863f783b48971cdf7939ecb Mon Sep 17 00:00:00 2001 From: Hani Nemati Date: Tue, 29 Sep 2026 16:28:13 -0700 Subject: [PATCH] Accept perf:cpu:cycles as well as perf:cpu:cpu-cycles for the CPU Cycle column Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- LTTngDataExtensions/Tables/ExecutionEventTable.cs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/LTTngDataExtensions/Tables/ExecutionEventTable.cs b/LTTngDataExtensions/Tables/ExecutionEventTable.cs index 0a141c7..842ce6f 100644 --- a/LTTngDataExtensions/Tables/ExecutionEventTable.cs +++ b/LTTngDataExtensions/Tables/ExecutionEventTable.cs @@ -293,7 +293,7 @@ public static void BuildTable(ITableBuilder tableBuilder, IDataExtensionRetrieva table.AddColumn(previousPidColumn, Projection.CreateUsingFuncAdaptor((i) => threads[i].PreviousPid)); table.AddColumn(instructionCountColumn, Projection.CreateUsingFuncAdaptor((i) => GetPerformanceCounterDiff(threads[i], "_perf_cpu_instructions"))); table.AddColumn(lastLevelCacheMissesColumn, Projection.CreateUsingFuncAdaptor((i) => GetPerformanceCounterDiff(threads[i], "_perf_cpu_LLC_load_misses"))); - table.AddColumn(cpuCycleColumn, Projection.CreateUsingFuncAdaptor((i) => GetPerformanceCounterDiff(threads[i], "_perf_cpu_cpu_cycles"))); + table.AddColumn(cpuCycleColumn, Projection.CreateUsingFuncAdaptor((i) => GetPerformanceCounterDiff(threads[i], "_perf_cpu_cpu_cycles", "_perf_cpu_cycles"))); table.AddColumn(cacheMissesColumn, Projection.CreateUsingFuncAdaptor((i) => GetPerformanceCounterDiff(threads[i], "_perf_cpu_cache_misses"))); table.AddColumn(nextCommandColumn, Projection.CreateUsingFuncAdaptor((i) => threads[i].NextImage)); table.AddColumn(previousCommandColumn, Projection.CreateUsingFuncAdaptor((i) => threads[i].PreviousImage)); @@ -319,9 +319,18 @@ public static void BuildTable(ITableBuilder tableBuilder, IDataExtensionRetrieva table.AddColumn(percentCpuUsagePreset, percentCpuUsageColumn); } - private static long GetPerformanceCounterDiff(IExecutionEvent executionEvent, string counterName) + // Some counters can be recorded under more than one name, e.g. "lttng add-context -t perf:cpu:cpu-cycles" vs "-t perf:cpu:cycles". + private static long GetPerformanceCounterDiff(IExecutionEvent executionEvent, params string[] counterNames) { - return executionEvent.PerformanceCountersDiffByName.TryGetValue(counterName, out long value) ? value : 0; + foreach (var counterName in counterNames) + { + if (executionEvent.PerformanceCountersDiffByName.TryGetValue(counterName, out long value)) + { + return value; + } + } + + return 0; } }