@@ -13,6 +13,35 @@ schedules:
13
13
always : true
14
14
15
15
parameters :
16
+
17
+ # Function apps to include in the run.
18
+ - name : includeHelloHttpNet9
19
+ displayName : Include HelloHttpNet9 (.NET9 Web Application)
20
+ type : boolean
21
+ default : true
22
+ - name : includeHelloHttpNet9NoProxy
23
+ displayName : Include HelloHttpNet9NoProxy (.NET9 Worker Application)
24
+ type : boolean
25
+ default : true
26
+ - name : includeHelloHttpNode
27
+ displayName : Include HelloHttpNode (Node Application)
28
+ type : boolean
29
+ default : false
30
+
31
+ # Dotnet trace profile collection & jit trace generation.
32
+ - name : collectNetTrace
33
+ displayName : Collect DotNet trace
34
+ type : boolean
35
+ default : false
36
+ - name : netTraceCollectArguments
37
+ displayName : DotNet trace profile collection arguments (Valid only if "Collect DotNet trace" is true)). Example `-n Microsoft.Azure.WebJobs.Script.WebHost --profile cpu-sampling --duration 00:00:00:10`
38
+ type : string
39
+ default : ' -n Microsoft.Azure.WebJobs.Script.WebHost --providers Microsoft-Diagnostics-DiagnosticSource:0xfffffffffffff7ff:5,Microsoft-Windows-DotNETRuntime:0xC0001801F9:5,FunctionsSystemLogsEventSource:0xFFFFFFFFFFFFFFFF:5 --stopping-event-provider-name Microsoft-Diagnostics-DiagnosticSource --stopping-event-event-name Activity1/Stop'
40
+ - name : createJitTrace
41
+ displayName : Create Jit trace (Ensure "Collect DotNet trace" is set to true)
42
+ type : boolean
43
+ default : false
44
+
16
45
- name : collectPerfViewProfileOnWindows
17
46
displayName : Collect PerfView Profile (on Windows)
18
47
type : boolean
@@ -50,72 +79,151 @@ extends:
50
79
displayName : Record latency(Windows)
51
80
jobs :
52
81
- ${{ each appId in split(variables.runInstances, ',') }} :
53
- - template : /eng/ci/templates/official/jobs/run-coldstart.yml@self
54
- parameters :
55
- description : .NET9 Web Application
56
- functionAppName : HelloHttpNet9
57
- instanceId : ${{ appId }}
58
- collectPerfViewProfileOnWindows : ${{ parameters.collectPerfViewProfileOnWindows }}
59
- perfViewCollectArguments : ${{ parameters.perfViewCollectArguments }}
60
- - template : /eng/ci/templates/official/jobs/run-coldstart.yml@self
61
- parameters :
62
- description : .NET9 Worker Application
63
- functionAppName : HelloHttpNet9NoProxy
64
- instanceId : ${{ appId }}
65
- collectPerfViewProfileOnWindows : ${{ parameters.collectPerfViewProfileOnWindows }}
66
- perfViewCollectArguments : ${{ parameters.perfViewCollectArguments }}
82
+ - ${{ if eq(parameters.includeHelloHttpNet9, true) }} :
83
+ - template : /eng/ci/templates/official/jobs/run-coldstart.yml@self
84
+ parameters :
85
+ description : .NET9 Web Application
86
+ functionAppName : HelloHttpNet9
87
+ instanceId : ${{ appId }}
88
+ collectPerfViewProfileOnWindows : ${{ parameters.collectPerfViewProfileOnWindows }}
89
+ perfViewCollectArguments : ${{ parameters.perfViewCollectArguments }}
90
+ netTraceCollectArguments : ${{ parameters.netTraceCollectArguments }}
91
+ collectNetTrace : ${{ parameters.collectNetTrace }}
92
+ createJitTrace : ${{ parameters.createJitTrace }}
93
+ - ${{ if eq(parameters.includeHelloHttpNet9NoProxy, true) }} :
94
+ - template : /eng/ci/templates/official/jobs/run-coldstart.yml@self
95
+ parameters :
96
+ description : .NET9 Worker Application
97
+ functionAppName : HelloHttpNet9NoProxy
98
+ instanceId : ${{ appId }}
99
+ collectPerfViewProfileOnWindows : ${{ parameters.collectPerfViewProfileOnWindows }}
100
+ perfViewCollectArguments : ${{ parameters.perfViewCollectArguments }}
101
+ netTraceCollectArguments : ${{ parameters.netTraceCollectArguments }}
102
+ collectNetTrace : ${{ parameters.collectNetTrace }}
103
+ createJitTrace : ${{ parameters.createJitTrace }}
104
+ - ${{ if eq(parameters.includeHelloHttpNode, true) }} :
105
+ - template : /eng/ci/templates/official/jobs/run-coldstart.yml@self
106
+ parameters :
107
+ description : Node Application
108
+ functionAppName : HelloHttpNode
109
+ instanceId : ${{ appId }}
110
+ collectPerfViewProfileOnWindows : ${{ parameters.collectPerfViewProfileOnWindows }}
111
+ perfViewCollectArguments : ${{ parameters.perfViewCollectArguments }}
112
+ netTraceCollectArguments : ${{ parameters.netTraceCollectArguments }}
113
+ collectNetTrace : ${{ parameters.collectNetTrace }}
114
+ createJitTrace : ${{ parameters.createJitTrace }}
67
115
68
116
- stage : CalculateWindows
69
117
displayName : Process results(Windows)
70
118
dependsOn : RunWindows
119
+ condition : always()
71
120
jobs :
72
- - template : /eng/ci/templates/official/jobs/process-coldstart.yml@self
73
- parameters :
74
- functionAppName : HelloHttpNet9
75
- description : .NET9 Web Application
76
- runInstances :
77
- items : ${{ split(variables.runInstances, ',') }}
78
- - template : /eng/ci/templates/official/jobs/process-coldstart.yml@self
79
- parameters :
80
- functionAppName : HelloHttpNet9NoProxy
81
- description : .NET9 Worker Application
82
- runInstances :
83
- items : ${{ split(variables.runInstances, ',') }}
121
+ - ${{ if eq(parameters.includeHelloHttpNet9, true) }} :
122
+ - template : /eng/ci/templates/official/jobs/process-coldstart.yml@self
123
+ parameters :
124
+ functionAppName : HelloHttpNet9
125
+ description : .NET9 Web Application
126
+ runInstances :
127
+ items : ${{ split(variables.runInstances, ',') }}
128
+ - ${{ if eq(parameters.includeHelloHttpNet9NoProxy, true) }} :
129
+ - template : /eng/ci/templates/official/jobs/process-coldstart.yml@self
130
+ parameters :
131
+ functionAppName : HelloHttpNet9NoProxy
132
+ description : .NET9 Worker Application
133
+ runInstances :
134
+ items : ${{ split(variables.runInstances, ',') }}
135
+ - ${{ if eq(parameters.includeHelloHttpNode, true) }} :
136
+ - template : /eng/ci/templates/official/jobs/process-coldstart.yml@self
137
+ parameters :
138
+ functionAppName : HelloHttpNode
139
+ description : Node Application
140
+ runInstances :
141
+ items : ${{ split(variables.runInstances, ',') }}
84
142
85
143
# # LINUX
86
144
- stage : RunLinux
87
145
dependsOn : []
88
146
displayName : Record latency(Linux)
89
147
jobs :
90
148
- ${{ each appId in split(variables.runInstances, ',') }} :
91
- - template : /eng/ci/templates/official/jobs/run-coldstart.yml@self
149
+ - ${{ if eq(parameters.includeHelloHttpNet9, true) }} :
150
+ - template : /eng/ci/templates/official/jobs/run-coldstart.yml@self
151
+ parameters :
152
+ description : .NET9 Web Application
153
+ functionAppName : HelloHttpNet9
154
+ instanceId : ${{ appId }}
155
+ os : Linux
156
+ collectNetTrace : ${{ parameters.collectNetTrace }}
157
+ netTraceCollectArguments : ${{ parameters.netTraceCollectArguments }}
158
+ createJitTrace : ${{ parameters.createJitTrace }}
159
+ - ${{ if eq(parameters.includeHelloHttpNet9NoProxy, true) }} :
160
+ - template : /eng/ci/templates/official/jobs/run-coldstart.yml@self
161
+ parameters :
162
+ description : .NET9 Worker Application
163
+ functionAppName : HelloHttpNet9NoProxy
164
+ instanceId : ${{ appId }}
165
+ os : Linux
166
+ collectNetTrace : ${{ parameters.collectNetTrace }}
167
+ netTraceCollectArguments : ${{ parameters.netTraceCollectArguments }}
168
+ createJitTrace : ${{ parameters.createJitTrace }}
169
+ - ${{ if eq(parameters.includeHelloHttpNode, true) }} :
170
+ - template : /eng/ci/templates/official/jobs/run-coldstart.yml@self
171
+ parameters :
172
+ description : Node Application
173
+ functionAppName : HelloHttpNode
174
+ instanceId : ${{ appId }}
175
+ os : Linux
176
+ collectNetTrace : ${{ parameters.collectNetTrace }}
177
+ netTraceCollectArguments : ${{ parameters.netTraceCollectArguments }}
178
+ createJitTrace : ${{ parameters.createJitTrace }}
179
+
180
+ - stage : CalculateLinux
181
+ displayName : Process results(Linux)
182
+ dependsOn : RunLinux
183
+ condition : always()
184
+ jobs :
185
+ - ${{ if eq(parameters.includeHelloHttpNet9, true) }} :
186
+ - template : /eng/ci/templates/official/jobs/process-coldstart.yml@self
92
187
parameters :
93
- description : .NET9 Web Application
94
188
functionAppName : HelloHttpNet9
95
- instanceId : ${{ appId }}
189
+ description : .NET9 Web Application
96
190
os : Linux
97
- - template : /eng/ci/templates/official/jobs/run-coldstart.yml@self
191
+ runInstances :
192
+ items : ${{ split(variables.runInstances, ',') }}
193
+ - ${{ if eq(parameters.includeHelloHttpNet9NoProxy, true) }} :
194
+ - template : /eng/ci/templates/official/jobs/process-coldstart.yml@self
98
195
parameters :
99
- description : .NET9 Worker Application
100
196
functionAppName : HelloHttpNet9NoProxy
101
- instanceId : ${{ appId }}
197
+ description : .NET9 Worker Application
102
198
os : Linux
103
-
104
- - stage : CalculateLinux
105
- displayName : Process results(Linux)
106
- dependsOn : RunLinux
199
+ runInstances :
200
+ items : ${{ split(variables.runInstances, ',') }}
201
+ - ${{ if eq(parameters.includeHelloHttpNode, true) }} :
202
+ - template : /eng/ci/templates/official/jobs/process-coldstart.yml@self
203
+ parameters :
204
+ functionAppName : HelloHttpNode
205
+ description : Node Application
206
+ os : Linux
207
+ runInstances :
208
+ items : ${{ split(variables.runInstances, ',') }}
209
+
210
+ # Merge JIT traces from different function apps and dedupe.
211
+ - stage : MergeWindowsJitTraceFiles
212
+ displayName : Create jit trace(Windows)
213
+ condition : and(succeeded(), eq('${{ parameters.createJitTrace }}', true))
214
+ dependsOn :
215
+ - CalculateWindows
107
216
jobs :
108
- - template : /eng/ci/templates/official/jobs/process-coldstart .yml@self
217
+ - template : /eng/ci/templates/official/jobs/merge-jittrace .yml@self
109
218
parameters :
110
- functionAppName : HelloHttpNet9
111
- description : .NET9 Web Application
112
- os : Linux
113
- runInstances :
114
- items : ${{ split(variables.runInstances, ',') }}
115
- - template : /eng/ci/templates/official/jobs/process-coldstart.yml@self
219
+ os : Windows
220
+
221
+ - stage : MergeLinuxJitTraceFiles
222
+ displayName : Create jit trace(Linux)
223
+ condition : and(succeeded(), eq('${{ parameters.createJitTrace }}', true))
224
+ dependsOn :
225
+ - CalculateLinux
226
+ jobs :
227
+ - template : /eng/ci/templates/official/jobs/merge-jittrace.yml@self
116
228
parameters :
117
- functionAppName : HelloHttpNet9NoProxy
118
- description : .NET9 Worker Application
119
229
os : Linux
120
- runInstances :
121
- items : ${{ split(variables.runInstances, ',') }}
0 commit comments