未验证 提交 bc7ab8ab 编写于 作者: T Tomas Grosup 提交者: GitHub

Compiler.Diagnostics.Diagnostics.Activity - start with tags, expose activity...

Compiler.Diagnostics.Diagnostics.Activity - start with tags, expose activity names (constant strings) (#14954)

* Activity - exposing name, starting after tags are added

* surface area updated
上级 ba6647eb
...@@ -7,11 +7,18 @@ open System.Diagnostics ...@@ -7,11 +7,18 @@ open System.Diagnostics
open System.IO open System.IO
open System.Text open System.Text
module ActivityNames =
[<Literal>]
let FscSourceName = "fsc"
[<Literal>]
let ProfiledSourceName = "fsc_with_env_stats"
let AllRelevantNames = [| FscSourceName; ProfiledSourceName |]
[<RequireQualifiedAccess>] [<RequireQualifiedAccess>]
module internal Activity = module internal Activity =
let FscSourceName = "fsc"
module Tags = module Tags =
let fileName = "fileName" let fileName = "fileName"
let project = "project" let project = "project"
...@@ -47,9 +54,6 @@ module internal Activity = ...@@ -47,9 +54,6 @@ module internal Activity =
module Events = module Events =
let cacheHit = "cacheHit" let cacheHit = "cacheHit"
let private activitySourceName = FscSourceName
let private profiledSourceName = "fsc_with_env_stats"
type System.Diagnostics.Activity with type System.Diagnostics.Activity with
member this.RootId = member this.RootId =
...@@ -67,18 +71,18 @@ module internal Activity = ...@@ -67,18 +71,18 @@ module internal Activity =
depth this 0 depth this 0
let private activitySource = new ActivitySource(activitySourceName) let private activitySource = new ActivitySource(ActivityNames.FscSourceName)
let start (name: string) (tags: (string * string) seq) : IDisposable = let start (name: string) (tags: (string * string) seq) : IDisposable =
let activity = activitySource.StartActivity(name) let activity = activitySource.CreateActivity(name, ActivityKind.Internal)
match activity with match activity with
| null -> () | null -> activity
| activity -> | activity ->
for key, value in tags do for key, value in tags do
activity.AddTag(key, value) |> ignore activity.AddTag(key, value) |> ignore
activity activity.Start()
let startNoTags (name: string) : IDisposable = activitySource.StartActivity(name) let startNoTags (name: string) : IDisposable = activitySource.StartActivity(name)
...@@ -98,7 +102,7 @@ module internal Activity = ...@@ -98,7 +102,7 @@ module internal Activity =
let profilingTags = [| workingSetMB; gc0; gc1; gc2; handles; threads |] let profilingTags = [| workingSetMB; gc0; gc1; gc2; handles; threads |]
let private profiledSource = new ActivitySource(profiledSourceName) let private profiledSource = new ActivitySource(ActivityNames.ProfiledSourceName)
let startAndMeasureEnvironmentStats (name: string) : IDisposable = profiledSource.StartActivity(name) let startAndMeasureEnvironmentStats (name: string) : IDisposable = profiledSource.StartActivity(name)
...@@ -112,7 +116,7 @@ module internal Activity = ...@@ -112,7 +116,7 @@ module internal Activity =
let l = let l =
new ActivityListener( new ActivityListener(
ShouldListenTo = (fun a -> a.Name = profiledSourceName), ShouldListenTo = (fun a -> a.Name = ActivityNames.ProfiledSourceName),
Sample = (fun _ -> ActivitySamplingResult.AllData), Sample = (fun _ -> ActivitySamplingResult.AllData),
ActivityStarted = (fun a -> a.AddTag(gcStatsInnerTag, collectGCStats ()) |> ignore), ActivityStarted = (fun a -> a.AddTag(gcStatsInnerTag, collectGCStats ()) |> ignore),
ActivityStopped = ActivityStopped =
...@@ -145,7 +149,7 @@ module internal Activity = ...@@ -145,7 +149,7 @@ module internal Activity =
let consoleWriterListener = let consoleWriterListener =
new ActivityListener( new ActivityListener(
ShouldListenTo = (fun a -> a.Name = profiledSourceName), ShouldListenTo = (fun a -> a.Name = ActivityNames.ProfiledSourceName),
Sample = (fun _ -> ActivitySamplingResult.AllData), Sample = (fun _ -> ActivitySamplingResult.AllData),
ActivityStopped = ActivityStopped =
(fun a -> (fun a ->
...@@ -237,7 +241,7 @@ module internal Activity = ...@@ -237,7 +241,7 @@ module internal Activity =
let l = let l =
new ActivityListener( new ActivityListener(
ShouldListenTo = (fun a -> a.Name = activitySourceName || a.Name = profiledSourceName), ShouldListenTo = (fun a -> ActivityNames.AllRelevantNames |> Array.contains a.Name),
Sample = (fun _ -> ActivitySamplingResult.AllData), Sample = (fun _ -> ActivitySamplingResult.AllData),
ActivityStopped = (fun a -> msgQueue.Post(createCsvRow a)) ActivityStopped = (fun a -> msgQueue.Post(createCsvRow a))
) )
......
...@@ -7,9 +7,19 @@ open System ...@@ -7,9 +7,19 @@ open System
/// For activities following the dotnet distributed tracing concept /// For activities following the dotnet distributed tracing concept
/// https://learn.microsoft.com/dotnet/core/diagnostics/distributed-tracing-concepts?source=recommendations /// https://learn.microsoft.com/dotnet/core/diagnostics/distributed-tracing-concepts?source=recommendations
[<RequireQualifiedAccess>] [<RequireQualifiedAccess>]
module internal Activity = module ActivityNames =
[<Literal>]
val FscSourceName: string = "fsc"
[<Literal>]
val ProfiledSourceName: string = "fsc_with_env_stats"
val FscSourceName: string val AllRelevantNames: string[]
/// For activities following the dotnet distributed tracing concept
/// https://learn.microsoft.com/dotnet/core/diagnostics/distributed-tracing-concepts?source=recommendations
[<RequireQualifiedAccess>]
module internal Activity =
module Tags = module Tags =
val fileName: string val fileName: string
......
...@@ -11,12 +11,13 @@ open FSharp.Compiler.Text ...@@ -11,12 +11,13 @@ open FSharp.Compiler.Text
open FSharp.Compiler.CodeAnalysis open FSharp.Compiler.CodeAnalysis
module FcsDiagnostics = FSharp.Compiler.Diagnostics.Activity module FcsDiagnostics = FSharp.Compiler.Diagnostics.Activity
module FscActivityNames = FSharp.Compiler.Diagnostics.ActivityNames
let expectCacheHits n = let expectCacheHits n =
let events = ResizeArray() let events = ResizeArray()
let listener = let listener =
new ActivityListener( new ActivityListener(
ShouldListenTo = (fun s -> s.Name = FcsDiagnostics.FscSourceName), ShouldListenTo = (fun s -> s.Name = FscActivityNames.FscSourceName),
Sample = (fun _ -> ActivitySamplingResult.AllData), Sample = (fun _ -> ActivitySamplingResult.AllData),
ActivityStopped = (fun a -> events.AddRange a.Events) ActivityStopped = (fun a -> events.AddRange a.Events)
) )
......
...@@ -2326,6 +2326,10 @@ FSharp.Compiler.DependencyManager.ResolvingErrorReport: System.IAsyncResult Begi ...@@ -2326,6 +2326,10 @@ FSharp.Compiler.DependencyManager.ResolvingErrorReport: System.IAsyncResult Begi
FSharp.Compiler.DependencyManager.ResolvingErrorReport: Void .ctor(System.Object, IntPtr) FSharp.Compiler.DependencyManager.ResolvingErrorReport: Void .ctor(System.Object, IntPtr)
FSharp.Compiler.DependencyManager.ResolvingErrorReport: Void EndInvoke(System.IAsyncResult) FSharp.Compiler.DependencyManager.ResolvingErrorReport: Void EndInvoke(System.IAsyncResult)
FSharp.Compiler.DependencyManager.ResolvingErrorReport: Void Invoke(FSharp.Compiler.DependencyManager.ErrorReportType, Int32, System.String) FSharp.Compiler.DependencyManager.ResolvingErrorReport: Void Invoke(FSharp.Compiler.DependencyManager.ErrorReportType, Int32, System.String)
FSharp.Compiler.Diagnostics.ActivityNames: System.String FscSourceName
FSharp.Compiler.Diagnostics.ActivityNames: System.String ProfiledSourceName
FSharp.Compiler.Diagnostics.ActivityNames: System.String[] AllRelevantNames
FSharp.Compiler.Diagnostics.ActivityNames: System.String[] get_AllRelevantNames()
FSharp.Compiler.Diagnostics.CompilerDiagnostics: System.Collections.Generic.IEnumerable`1[System.String] GetSuggestedNames(Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.Unit],Microsoft.FSharp.Core.Unit], System.String) FSharp.Compiler.Diagnostics.CompilerDiagnostics: System.Collections.Generic.IEnumerable`1[System.String] GetSuggestedNames(Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.Unit],Microsoft.FSharp.Core.Unit], System.String)
FSharp.Compiler.Diagnostics.CompilerDiagnostics: System.String GetErrorMessage(FSharp.Compiler.Diagnostics.FSharpDiagnosticKind) FSharp.Compiler.Diagnostics.CompilerDiagnostics: System.String GetErrorMessage(FSharp.Compiler.Diagnostics.FSharpDiagnosticKind)
FSharp.Compiler.Diagnostics.FSharpDiagnostic: FSharp.Compiler.Diagnostics.FSharpDiagnostic Create(FSharp.Compiler.Diagnostics.FSharpDiagnosticSeverity, System.String, Int32, FSharp.Compiler.Text.Range, Microsoft.FSharp.Core.FSharpOption`1[System.String], Microsoft.FSharp.Core.FSharpOption`1[System.String]) FSharp.Compiler.Diagnostics.FSharpDiagnostic: FSharp.Compiler.Diagnostics.FSharpDiagnostic Create(FSharp.Compiler.Diagnostics.FSharpDiagnosticSeverity, System.String, Int32, FSharp.Compiler.Text.Range, Microsoft.FSharp.Core.FSharpOption`1[System.String], Microsoft.FSharp.Core.FSharpOption`1[System.String])
...@@ -2326,6 +2326,10 @@ FSharp.Compiler.DependencyManager.ResolvingErrorReport: System.IAsyncResult Begi ...@@ -2326,6 +2326,10 @@ FSharp.Compiler.DependencyManager.ResolvingErrorReport: System.IAsyncResult Begi
FSharp.Compiler.DependencyManager.ResolvingErrorReport: Void .ctor(System.Object, IntPtr) FSharp.Compiler.DependencyManager.ResolvingErrorReport: Void .ctor(System.Object, IntPtr)
FSharp.Compiler.DependencyManager.ResolvingErrorReport: Void EndInvoke(System.IAsyncResult) FSharp.Compiler.DependencyManager.ResolvingErrorReport: Void EndInvoke(System.IAsyncResult)
FSharp.Compiler.DependencyManager.ResolvingErrorReport: Void Invoke(FSharp.Compiler.DependencyManager.ErrorReportType, Int32, System.String) FSharp.Compiler.DependencyManager.ResolvingErrorReport: Void Invoke(FSharp.Compiler.DependencyManager.ErrorReportType, Int32, System.String)
FSharp.Compiler.Diagnostics.ActivityNames: System.String FscSourceName
FSharp.Compiler.Diagnostics.ActivityNames: System.String ProfiledSourceName
FSharp.Compiler.Diagnostics.ActivityNames: System.String[] AllRelevantNames
FSharp.Compiler.Diagnostics.ActivityNames: System.String[] get_AllRelevantNames()
FSharp.Compiler.Diagnostics.CompilerDiagnostics: System.Collections.Generic.IEnumerable`1[System.String] GetSuggestedNames(Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.Unit],Microsoft.FSharp.Core.Unit], System.String) FSharp.Compiler.Diagnostics.CompilerDiagnostics: System.Collections.Generic.IEnumerable`1[System.String] GetSuggestedNames(Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.Unit],Microsoft.FSharp.Core.Unit], System.String)
FSharp.Compiler.Diagnostics.CompilerDiagnostics: System.String GetErrorMessage(FSharp.Compiler.Diagnostics.FSharpDiagnosticKind) FSharp.Compiler.Diagnostics.CompilerDiagnostics: System.String GetErrorMessage(FSharp.Compiler.Diagnostics.FSharpDiagnosticKind)
FSharp.Compiler.Diagnostics.FSharpDiagnostic: FSharp.Compiler.Diagnostics.FSharpDiagnostic Create(FSharp.Compiler.Diagnostics.FSharpDiagnosticSeverity, System.String, Int32, FSharp.Compiler.Text.Range, Microsoft.FSharp.Core.FSharpOption`1[System.String], Microsoft.FSharp.Core.FSharpOption`1[System.String]) FSharp.Compiler.Diagnostics.FSharpDiagnostic: FSharp.Compiler.Diagnostics.FSharpDiagnostic Create(FSharp.Compiler.Diagnostics.FSharpDiagnosticSeverity, System.String, Int32, FSharp.Compiler.Text.Range, Microsoft.FSharp.Core.FSharpOption`1[System.String], Microsoft.FSharp.Core.FSharpOption`1[System.String])
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册