dotnet / runtime

.NET is a cross-platform runtime for cloud, mobile, desktop, and IoT apps.
https://docs.microsoft.com/dotnet/core/
MIT License
15.05k stars 4.69k forks source link

Add Missing OS information to EventPipe traces #11358

Open vancem opened 5 years ago

vancem commented 5 years ago

In ETL files we have a bunch of OS events that we do not have in EventPipe *.NetPerf files. This lack of information is unfortunate, and we should fix it. Here are some missing things.

These could be put on the ProcessInfo event

To replace the page fault events, some memory statstics, logged every second or two. (Can get from System.Diagnostics.Process including

* Working Set
* Peak Working Set
* Virtual Memory Allocated
* Private Memory Allocated
* Page Faults.   
* Disk I/O bytes and number.   
* Average Disk response time (if available).  
* Network activity.  

We also need an unambiguous version number for the runtime (we have the Runtime/Start but it should be a rundown event (always logged even in circular buffer), and the version number should be accurate (today we don't have a sensible version number).

In short a trace should never be WORSE than any common performance counter.

This is a very straightforward work item (and can be implemented in managed code).

sywhang commented 4 years ago

The VS blocking part of this issue has been moved to #37374 instead. I'm marking this one for Future release unless anybody has objections.