Repository navigation
Expand file tree
/
Copy pathSelectString.stacktags
More file actions
120 lines (120 loc) · 7.02 KB
/
Copy pathSelectString.stacktags
File metadata and controls
120 lines (120 loc) · 7.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) Microsoft Corporation. Licensed under the MIT License. -->
<!-- Inclusive stack categories, not mutually exclusive allocation counters.
Match both shipping nested trackers and the extracted generic engine. -->
<Tag Name="Select-String">
<Tag Name="Matching">
<Entrypoint Module="*" Method="Microsoft.PowerShell.Commands.SelectStringEngine.TryMatch*" />
<Entrypoint Module="*" Method="Microsoft.PowerShell.Commands.SelectStringCommand.DoMatch*" />
</Tag>
<Tag Name="Context">
<Entrypoint Module="*" Method="Microsoft.PowerShell.Commands.SelectString*ContextTracker*" />
</Tag>
<!-- Keep the scanner loop distinct from batch assembly and ordered draining.
Nested/generic type and generated async state-machine names vary with the
runtime, so use wildcards between the owning type and method names.
Inclusive scanning stacks also contain matching, context and output work;
these categories are not additive measures of exclusive CPU time. -->
<Tag Name="Scanning">
<Tag Name="Demand reading">
<Entrypoint Module="*" Method="PSTests.SelectString.DemandScan*ReadFile*" />
<Entrypoint Module="*" Method="PSTests.SelectString.DemandScan*ReadChunk*" />
<Entrypoint Module="*" Method="PSTests.SelectString.DemandScan*OpenReader*" />
<Entrypoint Module="*" Method="PSTests.SelectString.DemandScan*FillChunk*" />
</Tag>
<Tag Name="Demand matching">
<!-- Avoid *Match*: it also matches MatchInfo generic type arguments. -->
<Entrypoint Module="*" Method="PSTests.SelectString.DemandScan*MatchChunk*" />
<Entrypoint Module="*" Method="PSTests.SelectString.DemandScan*MatchPage*" />
<Entrypoint Module="*" Method="PSTests.SelectString.DemandScan*FillPage*" />
</Tag>
<Tag Name="Demand ordered output">
<Entrypoint Module="*" Method="PSTests.SelectString.DemandScan*Consume*" />
<Entrypoint Module="*" Method="PSTests.SelectString.DemandScan*CompletePage*" />
<Entrypoint Module="*" Method="PSTests.SelectString.DemandScan*Drain*" />
<Entrypoint Module="*" Method="PSTests.SelectString.DemandScan*ReleasePage*" />
</Tag>
<!-- Sampled stacks show CPU spent entering/leaving these waits, not blocked
duration. Use the separate DemandDiagnostics pass for wait durations. -->
<Tag Name="Demand event handoff">
<Entrypoint Module="*" Method="PSTests.SelectString.DemandScan*Wait*" />
</Tag>
<Tag Name="Line scanning">
<Entrypoint Module="*" Method="Microsoft.PowerShell.Commands.SelectStringEngine*ScanSession*TryRead*" />
</Tag>
<Tag Name="Batch assembly">
<Entrypoint Module="*" Method="Microsoft.PowerShell.Commands.SelectStringEngine*FileScanSession*ReadBatch*" />
<Entrypoint Module="*" Method="Microsoft.PowerShell.Commands.SelectString*Factory*EstimateBytes*" />
<Entrypoint Module="*" Method="Microsoft.PowerShell.Commands.SelectStringEngine*FileScanSession*EstimateBytes*" />
<Entrypoint Module="*" Method="Microsoft.PowerShell.Commands.SelectStringEngine*EstimateContext*" />
</Tag>
<Tag Name="Worker execution">
<Entrypoint Module="*" Method="Microsoft.PowerShell.Commands.SelectStringEngine*FileScanWorker*ScanFileAsync*" />
</Tag>
<Tag Name="Ordered draining">
<Entrypoint Module="*" Method="Microsoft.PowerShell.Commands.SelectStringEngine.ScanFiles*" />
<Entrypoint Module="*" Method="Microsoft.PowerShell.Commands.SelectStringCommand.ProcessFilesConcurrently*" />
</Tag>
</Tag>
<!-- Channel methods identify handoff/capacity work across async continuations.
This provider-wide tag can include other channel users in the process.
Sampled CPU does not measure time spent suspended awaiting capacity. -->
<Tag Name="Channel handoff">
<Entrypoint Module="System.Threading.Channels.dll" Method="System.Threading.Channels.*" />
</Tag>
<!-- ThreadPool capacity waits and synchronous consumer waits can burn CPU in
SpinWait even with only two active scanners. These are process-wide tags;
inspect callers before attributing them to this engine. -->
<Tag Name="ThreadPool waiting">
<Entrypoint Module="System.Private.CoreLib.dll" Method="System.Threading.LowLevelLifoSemaphore.*" />
</Tag>
<Tag Name="Synchronous task waiting">
<Entrypoint Module="System.Private.CoreLib.dll" Method="System.Threading.Tasks.Task.SpinThenBlockingWait*" />
<Entrypoint Module="System.Private.CoreLib.dll" Method="System.Threading.Tasks.Task.InternalWaitCore*" />
</Tag>
<Tag Name="Native spinning">
<Entrypoint Module="coreclr.dll" Method="ThreadNative_SpinWait*" />
</Tag>
<Tag Name="Result construction">
<Entrypoint Module="*" Method="Microsoft.PowerShell.Commands.SelectString*Factory*Create*" />
<Entrypoint Module="*" Method="Microsoft.PowerShell.Commands.SelectStringCommand.ToMatchInfo*" />
<Entrypoint Module="*" Method="Microsoft.PowerShell.Commands.SelectStringEngine.MaterializeMatches*" />
</Tag>
<Tag Name="Regex">
<Entrypoint Module="System.Text.RegularExpressions.dll" Method="System.Text.RegularExpressions.*" />
</Tag>
<Tag Name="Reading and decoding">
<Entrypoint Module="System.Private.CoreLib.dll" Method="System.IO.StreamReader.*" />
<Entrypoint Module="System.Private.CoreLib.dll" Method="System.IO.FileStream*" />
<Entrypoint Module="System.Private.CoreLib.dll" Method="System.Text.*Encoding*" />
</Tag>
<Tag Name="Pipeline output">
<Entrypoint Module="System.Management.Automation.dll" Method="System.Management.Automation.MshCommandRuntime.WriteObject*" />
<Entrypoint Module="System.Management.Automation.dll" Method="System.Management.Automation.Internal.Pipe.Add*" />
</Tag>
<Tag Name="Parameter Binding">
<Entrypoint Module="System.Management.Automation.dll" Method="System.Management.Automation.*ParameterBinder*" />
<Entrypoint Module="System.Management.Automation.ni.dll" Method="System.Management.Automation.*ParameterBinder*" />
</Tag>
<!-- Include PowerShell's reporting preparation and native provider work even
when provider symbols are unavailable. Module-wide provider matches can
include other activity; inspect callers before attributing it to AMSI. -->
<Tag Name="AMSI">
<Entrypoint Module="*" Method="System.Management.Automation.AmsiUtils*" />
<Entrypoint Module="*" Method="System.Management.Automation.MemberInvocationLoggingOps.LogMemberInvocation*" />
<Entrypoint Module="amsi.dll" Method="*" />
<Entrypoint Module="MpOAV.dll" Method="*" />
<Entrypoint Module="MpClient.dll" Method="*" />
</Tag>
<Tag Name="JIT compiler">
<Entrypoint Module="clrjit.dll" Method="*" />
</Tag>
<Tag Name="Garbage collector">
<Entrypoint Module="coreclr.dll" Method="*gc_heap::*" />
<Entrypoint Module="coreclr.dll" Method="*GCHeap::*" />
</Tag>
<Tag Name="Command and engine">
<Entrypoint Module="*" Method="Microsoft.PowerShell.Commands.SelectStringCommand.*" />
<Entrypoint Module="*" Method="Microsoft.PowerShell.Commands.SelectStringEngine.*" />
</Tag>
</Tag>