Skip to content

NativeAOT EventPipe drops events in multi-threaded scenarios. #89878

Open
@LakshanF

Description

@LakshanF

NativeAOT EventPipe seems to drop significant number of events when sending events over multiple threads. Leveraging the EventPipeStress program shows results for different configuration values as shown in the table below.

  • The efficiency column (2nd column) shows the ratio of events received and dropped (shown in the 3rd and 4th columns in millions of events)
  • NativeAOT transmits more events than CoreCLR (roughly 3 times) and require a larger buffer size in the default mode to hit similar efficiency as CoreCLR
  • Transmitting events in multiple threads shows significant event drops (50%) when the duration of the events gets longer (60 seconds)
  • Stress program needs to be built as a NativeAOT application and EventSourceSupport needs to be set to true.
Runtime Efficiency EventsReceived (M) EventsDropped (M) BufferSize Threads EventRate (M) EventCount (M) BurstPattern EventSize Duration (s)
NativeAOT 52 176 163 32768 2 -1 -1 None 100 60
NativeAOT 50 5 5 4096 10 -1 10 None 100 2
NativeAOT 37 198 338 4096 10 1 -1 None 100 60
NativeAOT 51 51 48 4096 10 10 10 None 100 12
NativeAOT 68 143 66 256 1 -1 -1 None 100 60
CoreCLR 99 58 0.7 256 1 -1 -1 None 100 60
NativeAOT 95 182 9 4096 1 -1 -1 None 100 60
CoreCLR 100 58 0 4096 1 -1 -1 None 100 60
NativeAOT 91 191 18 32768 1 -1 -1 None 100 60
CoreCLR 100 103 0 32768 2 -1 -1 None 100 60
NativeAOT 100 10 0 4096 10 -1 1 None 100 2
NativeAOT 100 1 0 4096 10 10 0.1 None 100 0.2
NativeAOT 100 10 0 4096 10 10 1 None 100 2
NativeAOT 100 10 0 4096 10 10 1 BOLUS 100 2  
NativeAOT 100 10 0 4096 10 10 1 DRIP 100 2
NativeAOT 100 10 0 4096 10 10 1 HEAVY_DRIP 100 2

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    No status

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions