Add MethodDetails CTF event mapping for LTTng trace support#2392
Add MethodDetails CTF event mapping for LTTng trace support#2392benaadams wants to merge 4 commits intomicrosoft:mainfrom
Conversation
MethodDetailsTraceData (event ID 72, task Method, opcode 43) was added in .NET 5 but its CTF event mapping was never added to EnumerateCtfEventMappings(). This causes CtfTraceEventSource to skip DotNETRuntime:MethodDetails events when parsing perfcollect .trace.zip files, making dotnet-pgo fail with "No MethodDetails" when processing LTTng traces for SPGO profile generation.
There was a problem hiding this comment.
Pull request overview
Adds a missing LTTng/CTF event mapping so CtfTraceEventSource can translate DotNETRuntime:MethodDetails events into the corresponding CLR TraceEvent template when parsing perfcollect .trace.zip traces (enabling tooling like dotnet-pgo --spgo to find MethodDetailsTraceData).
Changes:
- Register a
DotNETRuntime:MethodDetailsentry inClrTraceEventParser.EnumerateCtfEventMappings().
…d, taskId, version)
|
@benaadams its been a while since I used |
We got it to; but had to jump though a bunch of hoops NethermindEth/nethermind#10877 |
|
Not sure using the data improved things; but need the data to improve the improvements 😅 |
Summary
DotNETRuntime:MethodDetailsCTF event mapping toClrTraceEventParser.EnumerateCtfEventMappings()Problem
MethodDetailsTraceData(event ID 72, task Method, opcode 43) was added in .NET 5 but its CTF event mapping was never included inEnumerateCtfEventMappings(). This causesCtfTraceEventSourceto skipDotNETRuntime:MethodDetailsevents when parsing perfcollect.trace.zipfiles.dotnet-pgochecks forMethodDetailsTraceDataevents at Program.cs line 1115 and fails with:The events ARE in the LTTng CTF trace (verified via CTF metadata inspection), but
CtfTraceEventSource.TryGetEventMapping()returns false because the mapping is not registered, so the events are silently dropped.This blocks SPGO (Sample-based Profile-Guided Optimization) on Linux when using perfcollect for trace collection.
Fix
One line: add the CTF mapping for
DotNETRuntime:MethodDetailsalongside the existing Method event mappings.Test plan
DotNETRuntime:MethodDetailsevents appear in perfcollect.trace.zipCTF metadataClrEtwAll.manas event ID 72, taskCLRMethod, opcode 43, keywordMethodDiagnosticKeyword.nettracefiles parseMethodDetailsTraceDatacorrectly)dotnet-pgo create-mibc --spgosucceeds with a perfcollect trace after this fix