@@ -13,6 +13,35 @@ schedules:
1313 always : true
1414
1515parameters :
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+
1645- name : collectPerfViewProfileOnWindows
1746 displayName : Collect PerfView Profile (on Windows)
1847 type : boolean
@@ -50,72 +79,151 @@ extends:
5079 displayName : Record latency(Windows)
5180 jobs :
5281 - ${{ 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 }}
67115
68116 - stage : CalculateWindows
69117 displayName : Process results(Windows)
70118 dependsOn : RunWindows
119+ condition : always()
71120 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, ',') }}
84142
85143# # LINUX
86144 - stage : RunLinux
87145 dependsOn : []
88146 displayName : Record latency(Linux)
89147 jobs :
90148 - ${{ 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
92187 parameters :
93- description : .NET9 Web Application
94188 functionAppName : HelloHttpNet9
95- instanceId : ${{ appId }}
189+ description : .NET9 Web Application
96190 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
98195 parameters :
99- description : .NET9 Worker Application
100196 functionAppName : HelloHttpNet9NoProxy
101- instanceId : ${{ appId }}
197+ description : .NET9 Worker Application
102198 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
107216 jobs :
108- - template : /eng/ci/templates/official/jobs/process-coldstart .yml@self
217+ - template : /eng/ci/templates/official/jobs/merge-jittrace .yml@self
109218 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
116228 parameters :
117- functionAppName : HelloHttpNet9NoProxy
118- description : .NET9 Worker Application
119229 os : Linux
120- runInstances :
121- items : ${{ split(variables.runInstances, ',') }}
0 commit comments