Skip to content

Implement Text-Based Performance Log#14409

Merged
brianrob merged 2 commits intodotnet:release/5.0.2xxfrom
brianrob:perf-log-5.0.2xx
Nov 3, 2020
Merged

Implement Text-Based Performance Log#14409
brianrob merged 2 commits intodotnet:release/5.0.2xxfrom
brianrob:perf-log-5.0.2xx

Conversation

@brianrob
Copy link
Copy Markdown
Member

@brianrob brianrob commented Nov 3, 2020

Implements a text-based performance log scheme that writes coarse-grained performance logs:

  • No logs are written unless the user opts-in by setting DOTNET_CLI_PERF_LOG=1.
  • Each log is represented on disk as a directory, containing a collection of log files. Each process involved in an invocation of the CLI writes its own log file. Thus, when new processes are spawned by the CLI, there can be more than one log file.
  • Logs are written by default to <DotnetUserProfilePath>\PerformanceLogs. Logs for an individual invocation of the CLI can be redirected via DOTNET_PERFLOG_DIR.
  • By default, the most recent 10 logs are kept. This is changeable via DOTNET_PERF_LOG_COUNT. Set this variable to -1 to keep all logs.
  • Data in the logs are emitted via PerformanceLogEventSource so that the events can be consumed through other profilers, such as those that use ETW.
  • Sets DOTNET_PERFLOG_DIR when spawning msbuild processes so that msbuild can contribute to the performance log.

cc: @marcpopMSFT, @davidfowl, @DamianEdwards, @bwadswor

@brianrob brianrob requested a review from wli3 November 3, 2020 00:37
@wli3
Copy link
Copy Markdown

wli3 commented Nov 3, 2020

@sfoslund @dsplaisted @joeloff FYI, I reviewed most of the PR in a fork wli3#1 already

@brianrob
Copy link
Copy Markdown
Member Author

brianrob commented Nov 3, 2020

Confirmed that GlobalMemoryStatusEx works on nanoserver:

C:\dotnet>type c:\users\ContainerUser\.dotnet\PerformanceLogs\f1cb9ab6bd3f4268be1ff25cb9e6a8db\perf-8764-97a83818cc9c492
1bee3ffa80ac3d72a.log
...
[2020-11-03T19:35:13.3215336Z] Event=Microsoft-Dotnet-CLI-Performance/MemoryConfiguration ProcessID=8764 ThreadID=1
memoryLoad="36" availablePhysicalMB="5172" totalPhysicalMB="8191"
...

@wli3
Copy link
Copy Markdown

wli3 commented Nov 3, 2020

@brianrob good to merge

@brianrob
Copy link
Copy Markdown
Member Author

brianrob commented Nov 3, 2020

Thanks @wli3!

@brianrob brianrob merged commit 2456ed2 into dotnet:release/5.0.2xx Nov 3, 2020
@brianrob brianrob deleted the perf-log-5.0.2xx branch November 3, 2020 19:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants