Add support for the NetTrace EventPipe file format
authornoahfalk <noahfalk@microsoft.com>
Mon, 10 Jun 2019 20:48:50 +0000 (13:48 -0700)
committerNoah Falk <noahfalk@users.noreply.github.com>
Mon, 10 Jun 2019 20:50:38 +0000 (13:50 -0700)
commit835836c9d34409af0f31529201dfd57cb2bd053c
tree8497dd808d2804ff8fa454158292bd60e372167a
parent7a44fb1530b920eb000e7ccb3378bb5e246f91d5
Add support for the NetTrace EventPipe file format

Right now the new format is not on by default, but it can be enabled using COMPlus_EventPipeNetTraceFormat = 1 for testing purposes. The plan to have a follow up PR that will add shipping configuration mechanisms and change the default setting.

See the documentation in the PerfView repo for more details about the format. At a glance the goal is to create a format that is more efficient to produce, has a smaller on disk size, and offers enhanced functionality in a few areas:
a) 64 bit thread id support
b) Detection of dropped events via sequence numbers
c) Better support for extracting subsets of the file

Together with the change there was also some refactoring of the EventPipeBufferManager and EventPipeThread.

This change addresses (at least in part) the following issues:
#19688, #23414, #24188, #20751, #20555, #21827, #24852, #25046
34 files changed:
src/System.Private.CoreLib/src/System/Diagnostics/Eventing/EventPipeController.cs
src/debug/daccess/request.cpp
src/inc/clrconfigvalues.h
src/pal/inc/pal.h
src/pal/src/include/pal/thread.hpp
src/pal/src/synchmgr/synchmanager.cpp
src/pal/src/thread/process.cpp
src/pal/src/thread/thread.cpp
src/vm/CMakeLists.txt
src/vm/eventpipe.cpp
src/vm/eventpipe.h
src/vm/eventpipeblock.cpp
src/vm/eventpipeblock.h
src/vm/eventpipebuffer.cpp
src/vm/eventpipebuffer.h
src/vm/eventpipebuffermanager.cpp
src/vm/eventpipebuffermanager.h
src/vm/eventpipeconfiguration.cpp
src/vm/eventpipeconfiguration.h
src/vm/eventpipeeventinstance.cpp
src/vm/eventpipeeventinstance.h
src/vm/eventpipefile.cpp
src/vm/eventpipefile.h
src/vm/eventpipeinternal.cpp
src/vm/eventpipeprotocolhelper.cpp
src/vm/eventpipesession.cpp
src/vm/eventpipesession.h
src/vm/eventpipethread.cpp [new file with mode: 0644]
src/vm/eventpipethread.h [new file with mode: 0644]
src/vm/fastserializableobject.h
src/vm/fastserializer.cpp
src/vm/threads.cpp
src/vm/threads.h
src/vm/threadsuspend.cpp